如何在Pine Script中实现DEMA与TEMA同时交叉时触发警报?
Pine Script 警报逻辑修复方案:DEMA与TEMA同步穿越触发警报
核心需求实现
要实现仅当DEMA和TEMA同时向上穿越收盘价(多单信号)或同时向下穿越收盘价(空单信号)时触发警报及策略入场,需将两个指标的穿越条件用and逻辑合并,避免单个指标触发信号。
修复后完整代码
//@version=5 strategy("DEMA-TEMA 同步穿越策略", overlay=true) // 补全DEMA与TEMA的标准计算逻辑(若原代码已有此部分可直接替换) length = input.int(14, title="指标周期") src = close // DEMA计算 ema1 = ta.ema(src, length) ema2 = ta.ema(ema1, length) dema = 2 * ema1 - ema2 // TEMA计算 ema3 = ta.ema(ema2, length) tema = 3 * ema1 - 3 * ema2 + ema3 // 同步穿越条件:两个指标必须同时触发同向穿越 longCondition = ta.crossover(close, tema) and ta.crossover(close, dema) shortCondition = ta.crossunder(close, tema) and ta.crossunder(close, dema) // 策略入场:仅同步条件满足时执行 if (longCondition) strategy.entry("同步多单", strategy.long) if (shortCondition) strategy.entry("同步空单", strategy.short) // 止损逻辑:沿用原规则,仅对应同步入场单生效 strategy.exit("同步多单止损", stop=ta.lowest(low, 10)) strategy.exit("同步空单止损", stop=ta.highest(high, 10)) // 警报逻辑:同步条件触发时推送对应警报 alertcondition(longCondition, title="DEMA&TEMA同步向上穿越", message="DEMA与TEMA同时向上穿越收盘价,多单信号触发") alertcondition(shortCondition, title="DEMA&TEMA同步向下穿越", message="DEMA与TEMA同时向下穿越收盘价,空单信号触发")
关键修复点说明
- 条件合并:用
and逻辑将两个指标的穿越条件绑定,确保只有同时满足时才触发信号,解决单个指标误触发问题 - 警报绑定:通过
alertcondition函数直接关联同步条件,生成符合要求的警报通知 - 逻辑简化:合并原代码中重复的入场逻辑,避免两个指标单独入场导致的冗余操作
- 指标补全:示例中包含DEMA与TEMA的标准计算逻辑,可根据你的参数需求调整周期数值
内容的提问来源于stack exchange,提问作者Rainer Rocks
相关产品推荐
相关产品推荐

