如何将变量从版本 2 转换为版本 4 的 pinescript?

How to convert variables from version 2 to version 4 of pinescript?

我有一个用第 2 版编写的 pinescript。我正在尝试将其转换为版本 #4。 在版本 #2 中,我有类似下面的内容。我正在做的是声明两个变量 persistent_bull, & persistent_bear.

在脚本中完成一些工作后,我用值初始化这个变量。 我检查是否打印了公牛。如果打印了公牛,我将变量 persistent_bear=0 和 persistent_bull=0。我为熊做反之亦然。

关于打印标志,我检查并显示。

我在将其转换为版本 4 时遇到问题。请问有人可以帮我正确转换吗?

persistent_bull = nz(persistent_bull[1],0) 
persistent_bear  = nz(persistent_bear[1],0) 


bull = ....certain condition ....
bear =  ....certain condition ....

if bull  
    persistent_bull := 1 
    persistent_bear := 0

if bear 
    persistent_bull := 0
    persistent_bear := 1

plotshape( bull and (persistent_bull[1] != 1 or bear), style=shape.labelup, location=location.belowbar, color=colorBuy, text="Buy", textcolor=#000000, transp=0)
plotshape( bear and (persistent_bear[1] != 1 or bull), style=shape.labeldown, color=colorSell, text="Sell", location=location.abovebar, textcolor =#ffffff, transp=0)

将前两行替换为:

var persistent_bull = 0
var persistent_bear = 0

从pine version 3开始,变量在实际使用前必须定义。所以通过给它们设置一些值来定义它们:

persistent_bull = 0
persistent_bear = 0

然后将它们的值更改为之前的柱值。请注意,这里使用了 := 运算符而不是 =

persistent_bull := nz(persistent_bull[1],0) 
persistent_bear  := nz(persistent_bear[1],0) 

Luc 的提议更短更简洁,但需要对代码进行一些额外更改(例如在 if bull / if bear 语句之前绘制形状)