一次抄底止损后,我如何用MQL5状态机禁止当天二次追损

 
今天的XAUUSD复盘不是“信号为什么没猜对”,而是“系统在错误发生后能不能停止”。第一段行情从23.9附近反弹到45,我没有入场;第二次回落到11附近后,在15附近尝试做多,价格到22后反转并触发止损。

这类场景最容易出现两个工程问题:踏空后的条件降级,以及止损后的连续重入。因此我准备把交易纪律写成显式状态机,而不是依赖人工克制。

核心状态:READY、POSITION_OPEN、STOPPED_TODAY、COOLDOWN。

伪代码:

if(NewTradingDay()) state = READY;

if(state == READY && StructureConfirmed() && SpreadOK())
{
   OpenPosition();
   state = POSITION_OPEN;
}

if(state == POSITION_OPEN && StopLossTriggered())
{
   state = STOPPED_TODAY;
   SaveReason("SL_AFTER_FAILED_REVERSAL");
}

if(state == STOPPED_TODAY)
{
   BlockNewOrders();
}

为了避免“盘中曾浮盈”被事后包装成成功,还要同时记录:signal_time、entry_price、max_favorable_excursion、invalidation_price、exit_reason、spread、slippage。价格从15到22只代表出现过有利波动,不代表交易最终成立。

下一步我会验证三个变量:一是结构确认是否在收盘后才成立;二是到达最小R以后是否允许移动保护;三是日内一次止损后完全停机,和固定冷却N根K线相比,哪种在盲测期更稳健。

本文只讨论系统工程与复盘,不提供交易指令。单次亏损与历史结果均不能推导未来表现。