Pinescript初始化

时间:2018-08-31 05:11:31

标签: pine-script

我正在尝试了解以下pinescript指示器代码-https://www.tradingview.com/script/XzcIRUHv-JMA-RSX-Clone-LazyBear/

我不确定f90,f88等变量的值是否成立。他们是否为其他内容预定义了快捷方式?它们似乎是数组,因为它们与索引一起使用。例如:

f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1

1 个答案:

答案 0 :(得分:1)

它们不是内置变量。

pine-script的版本1和2使您可以使用[] 结合 nz()访问变量,即使尚未声明该变量。因此,以下内容在版本1 版本2 中有效:

f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1

如果您在//@version=3中尝试此操作,则会收到未声明的标识符错误。

我们将代码缩短为以下内容:

//@version=2
study(title="JMA RSX Clone [LazyBear]", shorttitle="RSXC_LB", overlay=false)
length=input(14)

f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1
f88 = (nz(f90_[1]) == 0.0) and (length-1 >= 5) ? length-1.0 : 5.0 
plot(f90_, title="f90", color=orange, linewidth=4)
plot(f88, title="f88", color=red, linewidth=4)

让我们看看第一栏发生在f90_f88上的情况。

f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1

这里的条件是(nz(f90_[1]) == 0.0)f90_[1]基本上是在询问前一个柱的值,但这是第一个柱(还记得吗?),因此没有先前的值。因此,答案是 NaN (不是数字)。

现在,如果将其放在nz()中,它将返回。因为nz()替换 NaN 值。

因此该条件对于第一个小节将成立,并且f90_将分配给 1.0

现在让我们再次查看f88,以了解第一栏

f88 = (nz(f90_[1]) == 0.0) and (length-1 >= 5) ? length-1.0 : 5.0 

这里的第一个条件是(nz(f90_[1]) == 0.0)。由于上面的相同原因,它应该返回true

第二个条件是(length-1 >= 5)。默认输入(14)也应返回true。

因此,f88将被分配给第一个小节的14-1 = 13

我认为您可以从这里继续。尝试运行我提供的简短代码并查看图表。