如何在PineScript中设置条件避免重复绘制做多信号
PineScript 仅在条件首次成立时绘制标记的解决方案
要实现仅在close > ema34条件首次成立时绘制标记,核心是捕捉条件从“不满足”变为“满足”的瞬间,而非持续满足的状态。你可以通过以下两种方式修改代码:
方法1:使用内置交叉函数ta.crossover
ta.crossover(a, b)会在a上穿b的那一刻返回true,正好对应你需要的“首次触发”场景:
//@version=5 indicator("EMA_Long", overlay = true) ema = ta.ema(close,34) // 仅在close上穿ema34时触发 longCondition = ta.crossover(close, ema) label = "Long Triangle" plotshape(longCondition, label, location=location.belowbar, color=color.yellow, style=shape.triangleup, text = "Long", textcolor = color.yellow) plot(ema)
方法2:手动对比前后K线状态
通过判断当前K线满足close > ema,且前一根K线不满足close <= ema,同样能实现仅首次触发的效果:
//@version=5 indicator("EMA_Long", overlay = true) ema = ta.ema(close,34) // 当前满足条件,且前一根K线不满足 longCondition = close > ema and close[1] <= ema label = "Long Triangle" plotshape(longCondition, label, location=location.belowbar, color=color.yellow, style=shape.triangleup, text = "Long", textcolor = color.yellow) plot(ema)
两种方法效果一致,都会只在条件首次成立的那根K线绘制“Long”标记,后续连续满足条件的K线不会重复绘制。
内容的提问来源于stack exchange,提问作者Jabo
相关产品推荐
相关产品推荐

