首页 > 解决方案 > 当 calc_on_every_tick=true 时,Pine-script 如何在关闭时计算

问题描述

var line _lpLine = line.new(0, 0, 0, 0, extend=extend.left, style=line.style_dashed, color=color.yellow)

_lastTradedPrice = close
line.set_xy1(_lpLine, bar_index-1, _lastTradedPrice)
line.set_xy2(_lpLine, bar_index, _lastTradedPrice)

上面的代码绘制了最后价格线/为最后交易价格创建了一条线。它在指标脚本中完美运行,但在策略脚本中不适用,因为默认情况下 calc_on_every_tick 设置为 false。

如果我将 calc_on_every_tick 设置为 true,最后价格线现在将在策略中完美运行,但现在我面临另一个问题。该脚本现在将在柱形图仍在形成时进入交易,而不是仅在柱形图关闭后才进入交易。我该如何解决这个困境?

标签: pine-script

解决方案


您可以将您的订单信号延迟 1 根蜡烛,因此它会匹配calc_on_every_tick = false行为,如下所示,默认策略:

//@version=4
strategy("My Strategy", overlay=true, margin_long=100, margin_short=100, calc_on_every_tick = true)

longCondition = crossover(sma(close, 14), sma(close, 28))
if nz(longCondition[1]) // signal 1 candle delayed 
    strategy.entry("My Long Entry Id", strategy.long)

shortCondition = crossunder(sma(close, 14), sma(close, 28))
if nz(shortCondition[1]) // signal 1 candle delayed 
    strategy.entry("My Short Entry Id", strategy.short)

推荐阅读