本文仅用于知识和风险教育,不构成投资建议。涉及平台规则和费用时,请以对应经纪商主体的最新官方文件为准。

EA 回测盈利、实盘却亏损?多数情况下,答案不是运气,而是过度拟合(曲线拟合)与数据偏差。本文是一份 EA 回测指南:从数据与成本假设、样本内 / 样本外拆分、参数稳健性检验到 MT5 策略测试器实操,给出一套可复现、可质疑的回测流程,帮你判断一套 EA 是 "拟合了历史",还是真正值得实盘验证。

一、数据与成本假设:回测的地基

数据质量是回测的地基。 只覆盖 "看起来够长" 的区间远远不够:

  • 覆盖完整市场周期:数据区间应包含趋势市与震荡市、高波动与低波动阶段、牛熊转换,确保策略经历过多种市场结构。持仓周期不同,所需历史长度也不同 —— 交易频率越低,越需要更长历史来积累足够的交易样本。
  • 选择建模精度:MT5 策略测试器提供多种报价生成模式,精度递减 ——"基于真实报价的每个报价"(使用经纪商累积的真实 tick,最接近实盘,但首次下载慢)>"每个报价"(由分时数据模拟全部报价)>"1 分钟 OHLC">"仅开盘价"(只适合快速粗筛,且不做保证金控制)MetaTrader 5。短线 / 剥头皮类策略必须用真实 tick 或 "每个报价" 模式,"仅开盘价" 的结果不可信。
  • 警惕数据偏差:
  • 前视偏差:使用了未来信息,例如用当根 K 线的收盘价做同根 K 线开盘价的入场决策,或指标里含未来函数。
  • 幸存者偏差:只回测现在仍然活跃的品种 / 合约,忽略已下架、已改名的标的,结果会被系统性高估。
  • 对齐与后缀问题:服务器时间与数据时间不一致、品种后缀不同(如 ​​.a​​、​​.m​​),会直接影响测试区间与开闭市判断,也会让实盘信号与回测对不上。

成本假设必须贴近真实且可调:

  • 使用可变点差(新闻、开盘时段明显扩大),而不是固定最小点差;
  • 计入佣金(按手或按成交额)、滑点(市价单、止损单尤其敏感)、隔夜利息 / 库存费(持仓过夜或多日的策略影响显著);
  • MT5 测试器支持修改品种规格(点差、保证金、手续费、执行模式)来模拟不同经纪商条件,也支持模拟成交延迟(无延迟 / 随机延迟 / 固定延迟),近似实盘请求执行环境 。

用多组成本假设(乐观 / 基准 / 严苛)跑同一套策略,结果仍合理才算过关。

二、样本内与样本外:防止参数过拟合

  • 参数优化只允许使用样本内(训练期)数据,优化完成后,用未参与优化的样本外(检验期)区间验证。
  • 反复查看样本外结果同样是泄漏:看一次是检验;看完不满意再回头调参、再跑,样本外就变成了 "样本内"。每轮只允许一次前向检验,看完必须冻结参数。
  • MT5 内置 Forward 前向测试:在 "设置" 中指定前向期为总区间的 1/2、1/3、1/4 或自定义日期,前向期恒取总区间的后段;前半段用于参数适应,后半段用于验证 。
  • 更严格的做法是滚动式 Walk-Forward:把历史切成连续窗口,逐窗口执行 "用前段优化→用后段验证→窗口前移",所有样本外段合并后的表现比单次前向更接近实盘。这需要多次手动分段,或用支持该流程的工具完成。

三、稳健性检查:改变条件后结果是否仍合理

  • 改变成本假设(点差、滑点、佣金各设多档);
  • 改变起止日期(换年份窗口、换市场阶段);
  • 改变参数邻域(关键参数上下调整 10%–20%);
  • 观察回撤、交易次数、盈亏结构是否平稳,而不是只看净利润。

只有单一参数点表现优异,通常是危险信号—— 说明结果依赖巧合的参数组合,而不是策略本身的优势。

四、测试条件必须可复现

每次回测都应形成一份可追溯的记录,至少包含:

表格

项目

记录内容

数据

来源(哪个经纪商 / 数据商)、时间区间、数据粒度(tick/M1/…)

建模

报价生成模式(真实 tick / 每个报价 / 1 分钟 OHLC / 仅开盘价)

成本

点差(可变 / 固定)、佣金、滑点、隔夜利息

账户

杠杆、初始资金、货币

参数

EA 版本与参数版本、优化方法(穷举 / 遗传)、随机种子

环境

平台与软件版本、测试器版本、运行环境

结果

全部运行结果,包括失败的

只展示最佳年份会掩盖连续亏损和换市场后失效的问题。 把逐年收益、逐品种表现完整列出,比一个 "总盈利 XX%" 更有说服力。

五、识别过度拟合:7 个危险信号

  1. 参数轻微变化就由盈转亏:止损改 5%、点差加 0.5 点即大幅亏损 → 策略稳定性不足。
  2. 最佳参数点孤立:优化曲面剧烈起伏,最佳点像 "针尖" 一样,邻域参数明显变差。
  3. 交易次数远少于参数数量:如 8 个参数、只有 40 笔交易,拟合自由度太大。
  4. 权益曲线过于平滑:回撤几乎为零的曲线在真实市场很少出现,通常是优化过度。
  5. 收益被单一年份或单笔大单支撑:删掉最佳年份或最大盈利单,策略立刻变负。
  6. 样本外区间明显衰减:冻结参数后,在未参与优化的区间表现大幅缩水。
  7. 成本假设一变就崩:只要点差、滑点按真实值上调,结果就从盈利变亏损。

例如:某组参数在训练期盈利,但点差增加 0.5 点或止损改变 5% 就大幅亏损 —— 这更像曲线拟合,而非稳定优势。测试报告应同时保留失败结果、软件版本、数据来源和随机种子。

六、一套不过度依赖最佳参数的流程

  1. 预留样本外:先切出一段从未参与调参的区间,锁死不动。
  2. 多成本假设:用多组点差、滑点、佣金组合分别回测。
  3. 参数邻域扫描:关键参数上下调整 10%–20%,看回撤、交易次数、盈亏结构是否平稳;不平稳说明策略对参数敏感,应简化或放弃。
  4. 逐年与分阶段拆分:按年份、按波动率 / 市场状态分组统计,确认结果没有被某一年份 "撑起来"。
  5. 综合判断:只有多个成本档、多个时间段、参数邻域内都保持合理,才认为策略具备稳健性。

历史回测只能帮助排除脆弱方案,不能证明实盘收益。 回测通过是必要不充分条件。

七、从技术测试过渡到受控实盘

评估顺序(不可跳级):

文件与权限安全 → 逻辑与参数理解 → 可复现回测 → 模拟环境运行 → 极小规模真实执行 → 才考虑扩大使用。

每步设定通过标准,例如:

  • 日志无关键错误;
  • 订单与规则一致(手数、止损止盈、时间);
  • 成本假设合理(点差 / 滑点接近该账户真实值);
  • 断线重连后不会重复下单、不会漏单。

不能因为某段回测收益较高就跳过中间阶段。

实盘验证应关注回测很难重现的因素:服务器时间、品种后缀、点差突增、成交滑点、网络中断、VPS 重启、授权服务异常(EA 许可失效)。

账户级保护:先设好账户日亏损上限、最大仓位、人工停机条件(kill switch);定期核对 EA 版本与参数是否与记录一致。

记住:自动交易减少的是人工操作,不是市场风险,也不代表无需持续监督。

八、应用到你的账户条件

把本文示例中的数字(0.5 点、5%、10%–20% 等)替换为你自己的账户条件(点差水平、佣金、滑点、止损习惯、资金规模),并在记录中注明数据来源、观察日期和仍未确认的假设。这样即使规则、报价或平台页面发生变化,你也能回头判断当初的结论是否仍然适用。

常见问题

回测越久越好吗?

时间更长有帮助,但数据质量、市场结构变化和样本覆盖面同样重要。一段 "长但单一" 的区间,未必好过 "覆盖多种市况" 的中等长度区间。

高胜率代表稳健吗?

不代表。还要看盈亏比、利润因子、尾部风险和最大回撤。90% 胜率的策略可能被一次大亏损打穿;连续小赢加偶尔巨亏的模式尤其危险。

实际使用时最容易忽略什么?

把样本拆成训练期和样本外期、改变参数和成本假设、观察结果是否仍在可接受范围,是最常被跳过的一步。此外常见的还有:只保留最佳年份、忽略失败记录、成本假设过于乐观、没考虑实盘执行差异(服务器时间、品种后缀、点差突增、断线重连)。

样本外表现好就能实盘赚钱吗?

不能。回测无法重现滑点执行、流动性、重复报价、交易商环境差异等现实因素,只能排除明显脆弱的设计。实盘必须从受控的小规模开始验证。

参数越多越好吗?

不是。参数越多,拟合历史的自由度越大,样本外越容易失效。效果相近时,优先选择参数更少、逻辑更简单的方案。

利益披露:本网站可能从合作经纪商获得介绍佣金,但这不会影响我们披露费用、限制和风险。更正请通过联系页附上来源。

团队信息