Pine Script如何实现3个十字信号确认后触发买卖警报
Pine Script 连续3个十字信号触发预警逻辑实现
原代码问题
你当前的代码存在两处核心逻辑错误,导致无法按预期运行:
ta.barssince(longCondition1)的作用是返回距离上一次满足longCondition1条件的K线根数,本身不具备累计信号数量的能力ta.barssince(longCondition1) < 2和ta.barssince(longCondition1) < 3属于重复冗余判断,实际生效的只有更严格的<2条件,完全和「累计3个信号触发」的需求无关
正确实现方案
连续3个十字信号触发(中间无中断)
如果需求是连续3根K线都出现橙色十字才触发信号/警报,用累计计数器实现即可,参考代码如下:
//@version=5 indicator("三连十字信号预警", overlay=true) // 请将此处替换为你自己的橙色十字原始触发条件 orangeCross = longCondition1 // 连续十字计数 var crossCount = 0 if orangeCross crossCount += 1 else // 任意一根K线不满足十字条件,计数器重置 crossCount := 0 // 连续3个十字时触发信号 trigger = crossCount == 3 // 绘制原始橙色十字 plotshape(orangeCross, location=location.belowbar, style=shape.cross, size=size.tiny, color=color.rgb(255,192,203)) // 绘制触发信号(可自行调整样式、位置、文字) plotshape(trigger, location=location.belowbar, style=shape.labelup, text="3连十字", color=color.green, textcolor=color.white, size=size.small) // 绑定警报 alertcondition(trigger, title="三连十字警报", message="连续3个十字信号出现")
非连续3个十字信号触发(指定区间内累计3个即可)
如果不需要连续,只需要最近N根K线内累计出现3个十字就触发,可以用区间求和的方式实现:
// 统计最近3根K线内的十字数量,按需修改第二个参数调整统计区间长度 crossSum = ta.sum(orangeCross ? 1 : 0, 3) trigger = crossSum == 3
注意:使用时请务必将代码中的
orangeCross变量赋值为你自己实际的橙色十字生成条件,不要直接套用示例变量。
内容的提问来源于stack exchange,提问作者Becoming M
相关产品推荐
相关产品推荐

