MT5 EA 回测赚钱,为什么实盘亏损?回测与实盘差异完整排查
“回测曲线很好看,一上实盘就亏损”是 MT5 EA 最常见的问题之一。它不一定说明策略完全无效,更常见的原因是回测环境过于理想,或者参数已经对某段历史行情过拟合。AI EA 还多了截图、网络和模型响应等变量,实盘链路更复杂。
一、回测成交价不等于真实成交价
策略测试器可以按照历史报价模拟成交,但实盘下单要经过终端、网络、交易服务器和流动性。快速行情中,最终成交价可能与信号价有明显差异。
- 点差:新闻时段和换日时段可能突然扩大;
- 滑点:市价单到达服务器时价格已经变化;
- 佣金与隔夜费:短周期策略尤其容易被成本侵蚀;
- 拒单与重新报价:回测通常不会完整复现这些异常。
如果策略平均每单只赚很小的距离,增加一点点点差就可能把正期望变成负期望。
二、历史数据质量会直接改变结果
不同数据源、时区和缺失 K 线会导致指标值与入场位置变化。测试时应关注 MT5 策略测试器的数据质量,并尽量使用真实点数模式。对于依赖盘中路径的止损、追踪和分批止盈,只用每根 K 线的开盘价测试远远不够。
还要确认回测品种与实盘品种是否一致。例如 XAUUSD、XAUUSD.a 和 GOLD 的报价位数、合约大小、止损最小距离可能不同。
三、参数过拟合是“完美曲线”的主要来源
反复调整均线周期、止损距离和交易时间,直到某段历史曲线最好,本质上是在记忆历史噪声。过拟合策略通常具有以下特征:
- 参数稍微改动,结果就从盈利变成亏损;
- 只在某一年或某个品种表现优秀;
- 交易次数很少,利润由少数几笔贡献;
- 样本内表现完美,样本外立即失效。
正确方法是把数据分成训练区间、验证区间和完全不参与调参的样本外区间,再做滚动测试与参数敏感性分析。
四、检查未来函数和不可实现的信号
部分指标会重绘,历史图上看似准确,实时运行时信号却不断消失。EA 也可能错误读取尚未收盘的 K 线,回测结束后看到的形态与当时真实可见信息不同。
排查时要确认:
- 入场逻辑是否使用了未来 K 线或居中的指标值;
- 信号是在当前 K 线内触发,还是等待收盘确认;
- 指标缓冲区是否会重绘;
- 回测日志中的下单时间是否符合策略规则。
五、AI EA 还要检查 API 与截图链路
传统 EA 在本地计算指标,AI EA 则依赖截图和模型接口。以下问题只在实盘中更明显:
- 图表尚未加载完成就截图,导致 K 线缺失;
- 网络延迟使信号返回时价格已经离开入场区;
- 模型超时、限流或返回格式异常;
- 同一张旧截图被缓存或重复分析;
- 模型版本升级后,输出风格发生变化。
可靠系统应在请求超时或解析失败时默认不交易,并记录截图哈希、请求时间、模型名称和完整决策,方便事后核对。
六、从回测走向实盘的正确顺序
- 使用高质量历史数据做基础回测;
- 保留样本外区间,确认没有明显过拟合;
- 在模拟盘连续运行,验证实时信号和执行逻辑;
- 使用最小手数实盘,记录点差、滑点和 API 延迟;
- 样本足够后再逐步增加资金,参数变化后重新验证。
不要因为一条回测曲线就直接放大仓位。可以参考AI 自动交易实盘评估指南,同时通过本站MT5 实盘观摩账号了解完整成交记录应该如何公开核验。
风险提示:回测和历史实盘都不能保证未来盈利。保证金交易可能导致本金损失,请设置硬性止损和仓位上限,本文仅提供技术排查方法。