脚本不会在每次迭代时正确保存值,并且始终显示 n/a

Script will not save value correctly on each iteration and always shows n/a

我目前正在研究一个相当简单的指标脚本,我认为是这样。 不幸的是,我无法从我的脚本中获取有效值,我也不知道为什么。

这个想法类似于 Renko-Charts 并且是这样的。

我将配置一个步长,然后计算从一根蜡烛到另一根蜡烛的步数。 这是一个例子:

蓝线显示收盘价,红线应该是我的指标。 步长为 5.

所以对于第二根蜡烛,计算应该是这样的:

更改的步数。

当前收盘价 - 最后指标水平 = 16 - 10 = 6 差异/步长 = 6 / 5 = 1,2

因为只有整步才算剩余的部分,所以 = 1

当前指标水平=上一个指标水平+(步长*变化步数) = 10 + ( 5 * 1 ) = 15

所以我的代码是这样的:

//@version=4

study("My Script", overlay = false)

float myIndicator = 0
float stepSize = 5
int stepNumber = 0

stepNumber := int( ( close - myIndicator[1] ) / stepSize )

myIndicator := myIndicator[1] + ( stepNumber * stepSize )

plot( myIndicator )

但它总是显示“n/a” 如果我将最后一行更改为 myIndicator = close 我可以在某种程度上验证至少在 stepNumber 计算之前一切似乎都有效。在那之后有些东西会变得无效,但我看不出我在哪里犯了错误...

有人知道我忽略了什么吗?

提前致谢:)

此致 埃沃克斯

在第一个柱上,没有柱历史记录,因此 myIndicator[1] 计算为 na
na 的计算结果总是 na.
因此,您的所有结果都是 na.
您可以使用 nz() 函数将 na 值替换为零(这是默认替换值)或给定值。

这将绘制您正在寻找的内容:

//@version=4
study("My Script", overlay = true)

var float   stepSize    = input(5, "stepSize",   minval=0)
var int     stepNumber  = input(0, "stepNumber", minval=0)
var float   myIndicator = na

stepNumber  := int( ( close - nz( myIndicator[1] ) ) / stepSize )
myIndicator := nz( myIndicator[1] ) + ( stepNumber * stepSize )

plot( myIndicator, style=plot.style_stepline )

daily chart of AAPL

上产生这个