Pine tradingview: 一次,如果直到新事件
Posted
技术标签:
【中文标题】Pine tradingview: 一次,如果直到新事件【英文标题】:Pine tradingview: one time if until new event 【发布时间】:2020-06-01 05:56:48 【问题描述】:我在复制其他公共脚本的基础上“制作”了我的第一个 Tradingview 脚本。我可以弄清楚大部分,除了最后一部分。我想知道是否可以添加一次 if 语句,直到发生其他特定事件。
在下面的打印屏幕中,我有一个示例。在我的脚本中,我有一条彩色趋势线和蜡烛。我想在趋势线为红色且蜡烛为黑色(第一个绿色圆圈)时做空。但是系列图再次条形颜色从白色变为黑色(红色圆圈)。我只想在第一次添加警报(绿色圆圈),直到发生新事件;当趋势线改变颜色时(紫色圆圈)。
Chart example
BBperiod = input(defval = 19, title = "BB Period", type = input.integer, minval = 1)
BBdeviations = input(defval = 1.00, title = "BB Deviations", type = input.float, minval = 0.1, step=0.05)
UseATRfilter = input(defval = true, title = "ATR Filter", type = input.bool)
ATRperiod = input(defval = 7, title = "ATR Period", type = input.integer, minval = 1)
BBUpper=sma (close,BBperiod)+stdev(close, BBperiod)*BBdeviations
BBLower=sma (close,BBperiod)-stdev(close, BBperiod)*BBdeviations
//
TrendLine = 0.0
iTrend = 0.0
buy = 0.0
sell = 0.0
//
BBSignal = close>BBUpper? 1 : close<BBLower? -1 : 0
//
if BBSignal == 1 and UseATRfilter == 1
TrendLine:=low-atr(ATRperiod)
if TrendLine<TrendLine[1]
TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 1
TrendLine:=high+atr(ATRperiod)
if TrendLine>TrendLine[1]
TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 1
TrendLine:=TrendLine[1]
//
if BBSignal == 1 and UseATRfilter == 0
TrendLine:=low
if TrendLine<TrendLine[1]
TrendLine:=TrendLine[1]
if BBSignal == -1 and UseATRfilter == 0
TrendLine:=high
if TrendLine>TrendLine[1]
TrendLine:=TrendLine[1]
if BBSignal == 0 and UseATRfilter == 0
TrendLine:=TrendLine[1]
//
iTrend:=iTrend[1]
if TrendLine>TrendLine[1]
iTrend:=1
if TrendLine<TrendLine[1]
iTrend:=-1
//
buy:=iTrend[1]==-1 and iTrend==1 ? 1 : na
sell:=iTrend[1]==1 and iTrend==-1? 1 : na
//
plot(TrendLine, color=iTrend > 0?color.blue:color.red ,style=plot.style_line,linewidth=2,transp=0,title="Trend Line")
//BarcolorT1
length = input(title="Length", type=input.integer, defval=50)
src_=input(close, title="Source", type=input.source)
mult=input(6.0, title="Mult")
barc=input(true, title="Use barcolor?")
plots=input(false, title="Show plots?")
r(src, n)=>
s = 0.0
for i = 0 to n-1
s := s + ((n-(i*2+1))/2)*src[i]
x=s/(n*(n+1))
x
l=sma(low, length)
h=sma(high, length)
lr= l+mult*r(low, length)
hr= h+mult*r(high, length)
trend=0
trend:=src_ > lr and src_ > hr ? 1 : src_ < lr and src_ < hr ? -1 : trend[1]
long=0
short=0
long:= trend==1 and src_>h ? 1 : trend==-1 ? -1 : long[1]
short:= trend==-1 and src_<l ? 1 : trend==1 ? -1 : short[1]
barcolor(barc? (long>0? color.green : short>0? color.black : trend>0? color.white: trend<0 ? color.white : color.blue) : na)
//plot shape
data = short!=short[1] and short==1 and iTrend < 0
plotshape(data, style=shape.xcross)
【问题讨论】:
【参考方案1】:您可以通过额外的标志来实现您的目标,该标志将在所需事件时激活和停用。代码如下:
var active = false
// Activation
active := active or data
// Deactivation
if nz(iTrend[1]) <= 0 and iTrend > 0
active := false
activated = not nz(active[1], false) and active
plotshape(activated, style=shape.triangledown, color=color.red, size=size.small, location=location.belowbar)
将其添加到脚本的末尾,当趋势线为红色且条形颜色首次从白色变为黑色时,它将显示红色三角形。
【讨论】:
以上是关于Pine tradingview: 一次,如果直到新事件的主要内容,如果未能解决你的问题,请参考以下文章
TradingView Pine 脚本:在新入场前检查以前的策略。入场价格