请找到用于计算趋势指标的代码
study("VJ2 Supertrend V1.0 - Buy or Sell Signal", overlay = true)
Factor=input(3.0, minval=1,maxval = 140)
Pd=input(14, minval=1,maxval = 140)
Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn
Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown
linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")
此处,“ TrendUp”变量是根据其自身在上一个栏“ TrendUp [1]”中的值进行计算的。
因此,这是一个递归计算。
我不了解的是如何计算变量“ TrendUp”的第一个值。例如:
由于SuperTrend指示器正常工作,因此我必须缺少一些东西。
有人可以帮忙吗?
答案 0 :(得分:0)
第一个值实际上设置为na
如果您尝试使用代码:
study("my script")
m = m[1]
plot(m)
然后您将看到n/a
。
为了解决这个问题,您需要使用函数nz()
(或使用代码段中的附加条件)编写具有自引用功能的代码:
study("my script")
m = nz(m[1])
// m = nz(m[1], 4) // or alternatively with installing a value if na
plot(m)
注意:您使用的是过时版本的pine(没有任何显式版本),在当前版本的pine(版本= 3)中它不起作用-您需要在引用之前的值之前设置一个值:
//@version=3
study("my script")
m = 0
m := nz(m[1])
plot(m)