Pine-Script 自引用变量的问题

Problem with Pine-Script self-referencing variables

我在理解 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]",请帮忙解释一下,谢谢

我还有一个问题:

func(price)=>
    sum = 10.0
    sum := sum + price[1]

func(close)
func(open)

函数逐条调用,但如何保存上一个价格变量。实现 Pine 脚本历史引用运算符功能。 任何帮助谢谢!

[] 在 pinescript 中被称为 History Referencing Operator。它指的是变量的先前值。

当你说 f[1] 时,它 return 就是 f 之前 一个 的值。

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

另一件需要知道的事情是,您的代码将针对每个柱执行。

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

f = 0.0
d = 0.0

你在开头声明了fd,然后给它们赋值0。我们可以忽略这一步,因为您正在为它们重新分配另一个值。

第一栏

d := nz(f[1])

f 在前一根柱上的值分配给 df 第一个柱 没有先前值 ,因此 nz() 将 return 0。所以,d = 0.

f := d+1

f = 0 + 1 -> f = 1

第二个栏

d := nz(f[1])

f 在前一根柱上的值分配给 df 第一个 柱上的价值是 1。所以,d = 1.

f := d+1

f = 1 + 1 -> f = 2

第三栏

d := nz(f[1])

f 在前一根柱上的值分配给 df 第二个 柱上的价值是 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() 将 return 0.

那么第一个柱会发生什么:

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

等等..