如何防止EA把“接近收盘价”误判成“没有追价”?

 
我最近排查一个XAUUSD EA的追价问题。旧逻辑只比较当前quote与reference_close,却没有比较quote与最初的trigger_level。行情已经从结构触发位延伸,只要仍接近突破后的M5收盘价,程序就可能错误放行。

我准备把入场资格改成:

side_sign = direction == LONG ? 1 : -1;
adverse_extension = side_sign * (quote - trigger_level);
if(adverse_extension > 0.25 * protection_atr_m15_frozen) reject;

同时增加四个约束:
1. trigger_level来自唯一父事件,不能换一个更老的anchor重新找可交易机会;
2. trigger TTL与quote freshness分别校验;
3. protection ATR使用触发前已完成的M15 ATR14,并在开仓后冻结;
4. 候选ATR与保护ATR使用不同字段,防止后续波动扩大时无意放宽风险。

这里的0.25只是送验候选值,不是已证明参数。这个修复只能解决工程资格错误,不能证明策略具有正期望。

大家在MQL5里会怎样保存trigger_level、reference_close和frozen ATR,方便后续审计?

仅作工程讨论,不构成交易建议。