只在交易视图中运行一次pine脚本



我以前看到过这个问题发布过几次,但没有看到明确的答案。我只想运行一次pine脚本研究,即在我将脚本添加到图表时与最新的条形图相关联。我不希望脚本在新酒吧到来时继续运行。有可能这样做吗?实际上,我希望我的脚本画一条线,然后在图表上出现新的条形图时保持不变。

您不能停止脚本本身的运行,而是创建只在第一个实时条上运行一次的条件,然后在后续条上不执行任何操作。

设置行时,可以使用barstate.islast和var声明的布尔变量进行存储。

var plotted = false
var l1 = line.new(x1 = na, y1 = na, x2 = na, y2 = na, xloc = xloc.bar_index, extend = extend.right, color = color.red)
drawCondition = barstate.islast and plotted == false
if drawCondition
line.set_xy1(l1, x = bar_index, y = open)
line.set_xy2(l1, x = bar_index + 50, y = open)
plotted := true

在历史条形图上,drawCondition将为false,并且不会绘制线,因为barstate.islast将返回false。在barstate.islast为true的第一个栏上(即添加脚本时的当前实时栏(,plotted仍将为false,因此条件将得到满足,将绘制线并将plotted设置为true。在任何后续条上,plotted仍将是true,因此即使barstate.islast将是true,也不会满足绘制线(drawCondition == false(的条件,因此不会修改/重新绘制线。

最新更新