PineScript中indicator可用的time_close与timenow为何在strategy中失效?
Pine Script Strategy 实时倒计时负数问题解决
问题根源
Strategy 默认启用 calc_on_close=true,也就是仅在K线收盘时执行代码计算。此时当前时间timenow已经晚于当前K线的收盘时间time_close,所以time_close - timenow的结果必然为负数。而Indicator 默认是实时逐 Tick 计算,所以不会出现这个问题。
解决代码
修改策略声明,添加calc_on_every_tick=true参数,让策略实时响应每一个 Tick:
//@version=5 strategy("timeStrat", calc_on_every_tick=true) secondsLeft = barstate.isrealtime ? (time_close - timenow) / 1000 : na // Display countdown on the chart plot(series=secondsLeft, title="Seconds left")
额外说明
calc_on_every_tick=true会让策略在每一个新 Tick 到达时都重新计算,确保timenow始终是最新的实时时间,和time_close的差值能正确反映剩余秒数。- 如果需要让倒计时曲线叠加在K线主图上,可以在
strategy声明里再加overlay=true参数。
内容的提问来源于stack exchange,提问作者D YAY
相关产品推荐
相关产品推荐

