每次计算都应调用函数

Function should be called on each calculation

我遇到了这个错误

line 205: The function 'ta.change' should be called on each calculation for consistency. It is recommended to extract the call from the ternary operator or from the scope.

我正在尝试,但我无法修复它。这是交易视图名称上的指标:RafaelZioni 的 OBV MACD 指标,我想将其转换为 pine 脚本 v5。

p = 1,src15=tt1
b5 = 0.,dev5 = 0.,oc = 0
n5 = ta.cum(1) - 1
a15 = ta.cum(math.abs(src15 - nz(b5[1],src15)))/n5*p
b5 := src15 > nz(b5[1],src15) + a15 ? src15 : src15 < nz(b5[1],src15) - a15 ? src15 : nz(b5[1],src15)
//----
dev5 := ta.change(b5) ? a15 : nz(dev5[1],a15)

//----
oc := ta.change(b5) > 0 ? 1 : ta.change(b5) < 0 ? -1 : nz(oc[1]) //-->this is the line 205 error
//----
cs = oc == 1 ? color.blue : color.red
//change(oc)>0
plot(b5,color=cs,linewidth=4,transp=50)
//

首先,这是一个警告,不是错误。

发生这种情况是因为您在三元运算符中调用函数。如果你想摆脱这个警告信息,你应该按照警告信息所说的那样从三元运算符中提取它。

下面的代码将修复它

//----
_change_b5 = ta.change(b5)
dev5 := _change_b5 ? a15 : nz(dev5[1],a15)

//----
oc := _change_b5 > 0 ? 1 : _change_b5 < 0 ? -1 : nz(oc[1])
//----