自引用变量***我缺少什么?

时间:2018-06-20 09:42:04

标签: tradingview-api pine-script

请找到用于计算趋势指标的代码

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”的第一个值。例如:

  1. 对于编号为1的小节,无法计算“趋势向上”的值,因为前一小节的“ TrendVar”值不存在
  2. 对于编号为2的条形码,由于不存在编号为1的条形码“ TrendVar”的值,因此无法计算“ TrendUp”的值
  3. 依此类推...

由于SuperTrend指示器正常工作,因此我必须缺少一些东西。

有人可以帮忙吗?

1 个答案:

答案 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)