Pine-Script自引用变量存在问题

时间:2019-08-24 09:10:10

标签: pine-script

我在理解Pine-Script代码段时遇到问题,请帮忙。

//@version=4
study('test')
f = 0.0
d = 0.0
d := nz(f[1])
f := d+1
plot(d)
plot(f)

在上面的代码中,变量d的值为“ [0,1,2 ...]”,f为“ [1,2,3 ...]”,这是为什么呢?我期望“ d = [0,0,0 ...] f = [1,1,1]”,请帮助解释,谢谢。

1 个答案:

答案 0 :(得分:0)

pinescript中的

[]被称为History Referencing Operator。它引用变量的先前值。

您说f[1]时,它将返回一个条之前的f值。

最好将nz()[]一起使用,因为对于第一个小节,没有变量具有先前的值。因此,当您首次尝试访问变量的历史值时,结果将为NaN,而nz()会将NaN转换为0

要知道的另一件事是,您的代码将在每个小节处执行。

现在让我们看看您的代码。

f = 0.0
d = 0.0

您在开头声明fd并为其分配0。我们可以忽略此步骤,因为您正在为它们重新分配另一个值。

第一栏

d := nz(f[1])

将前一栏中的f的值分配给df的第一个小节没有先前的值,因此nz()将返回0。因此,d = 0

f := d+1

f = 0 +1-> f = 1

第二个栏

d := nz(f[1])

将前一栏中的f的值分配给d。在{strong>第一栏中,f的值为1。因此,d = 1

f := d+1

f = 1 +1-> f = 2

第三栏

d := nz(f[1])

将前一栏中的f的值分配给d。在栏上,f的值为2。因此,d = 2

f := d+1

f = 2 +1-> f = 3


注意:尝试运行以下代码,您会发现它的行为完全相同。

//@version=4
study('test')
f = 550.0
d = 0.0
d := nz(f[1])
f := d+1
plot(d)
plot(f)

原因是,f最初具有什么值并不重要。 d := nz(f[1])将前一个小节上的f的值分配给d,对于第一个小节,f没有前一个值。因此,nz()将返回0。

然后第一栏的情况是:

d := nz(f[1]) // d = 0
f := d+1      // f = 1

以此类推。