跳转到主要内容

EA 回测:结果能说明什么,不能说明什么?

EA 回测利用历史数据模拟策略,并非预测,也不保证未来收益。

EA 回测利用历史数据模拟策略,并非预测,也不保证未来收益。

理解测试内容

结果取决于所选品种、时间区间、价格数据、建模方式、交易成本、执行假设和 EA 设置。比较测试时应使用相同且有记录的假设;结果理想本身不能证明测试设置符合真实情况。
​

回测评估选定的设置;优化则尝试多组设置,寻找更好的历史结果。挑选历史表现最好的组合可能导致对过去数据的过度拟合。


在 MT4 桌面版设置一次 EA 回测

  1. 打开查看 → 策略测试器,或按 Ctrl+R。在设置中,选择平台内已有且已编译的 EA。

  2. 选择完整的品种名称和周期(图表时间周期)。勾选使用日期,填写从和到,限定历史测试范围。

  3. 选择模型:每个报价、控制点或仅开盘价。仅开盘价测试不会重现一根蜡烛内的全部价格变化;保存结果时也应记录所选方法。

  4. 核对点差。默认设置用测试开始时的品种点差,根据 Bid 历史数据模拟 Ask 价格;也可设置自定义点差。这不代表历史点差会持续变化。

  5. 在EA 属性 → 测试中设置模拟初始余额、币种和允许的交易方向。在输入参数中填写各项值;开始、步长和停止范围仅用于参数优化。

  6. 使用固定参数进行单次测试时,关闭优化。需要时勾选可视化模式,然后点击开始。完成后查看结果、图形、报告和日志,包括建模质量及错误信息。


MT4:优化输入参数,并重新测试所选轮次

优化会改变所选输入参数的数值,反复运行历史模拟。

  1. 在测试器 → 偏好设置中,选择可用的EA、交易品种、图表周期、建模方法、日期范围和点差。勾选优化;如果未勾选,将使用固定参数进行单次测试。

  2. 打开EA属性 → 测试,设置模拟初始资金、币种、允许的交易方向和排序指标。仅在打算使用时选择遗传算法搜索。

  3. 在输入参数中,勾选要变化的参数,并设置初始值、步长和终值。未勾选的参数会保留数值栏中的固定值。

  4. 在EA属性 → 优化中,仅启用并设置需要的轮次限制。达到限制时会中断当前轮次,然后继续下一轮。

  5. 点击开始,查看优化结果和优化图表。结果按轮次汇总,并非逐笔交易明细。可按列排序,并检查跳过无效结果是否隐藏了未盈利轮次。

  6. 双击某个轮次,或选择设置输入参数。MT4会把该轮次的参数带回偏好设置,并取消勾选优化。核对恢复的数值,再点击开始进行单次测试。

参数栏位

含义

初始值

开始使用的数值

步长

每次增加的幅度

终值

最后使用的数值

数值

未勾选该参数时使用的固定值

保留所选参数和实际测试区间。挑选历史表现最好的结果,不等于使用未来数据进行独立验证,也不能证明未来能够盈利。


在 MT5 桌面版设置一次 EA 回测

  1. 在导航器中打开 EA 的右键菜单,选择测试。在测试器的设置中选择单次测试,而非参数优化。

  2. 选择主要品种、时间周期和日期范围;结束日期不包含在测试范围内。多品种 EA 需要先在市场报价 → 品种中启用所需品种。

  3. 核对报价建模模式和执行延迟。生成的报价与可用的真实报价是不同的数据选项;无延迟测试代表理想执行条件,不能证明真实交易表现。

  4. 设置模拟初始余额、币种和杠杆,然后填写 EA 的输入参数。请将这些模拟假设与测试结果一起记录。

  5. 如需图表回放,使用本地测试代理,关闭优化并启用可视化测试。在设置中点击开始;下载历史数据可能需要一些时间。

  6. 查看结果、图形和日志。核对数据相关提示及是否调整了开始日期,将报告与 EA 版本和设置一起保存。比较结果前,请阅读下方的解释。


在 MT5 桌面版设置参数优化

  1. 在导航器中打开 EA 的“测试”命令。在“设置”中确认品种、时间周期、日期和模拟假设。

  2. 选择参数优化,而不是单次测试。

  3. 在“输入参数”中勾选需要变化的参数,填写“开始”“步长”和“停止”值;未勾选的参数保持固定。检查显示的参数组合数量。

  4. 选择搜索方式;使用遗传算法优化时,还需选择用于排序的优化标准。

  5. 如需保留后续时段进行验证,在开始前按照下方说明设置“前向”。

  6. 点击“开始”。完成后,在“优化结果”中点击列标题排序。双击某次结果,可使用该组参数进行一次单独测试。


选择优化方式

慢速完整算法会评估全部选定组合,可能耗时较长。快速遗传算法搜索较少的组合,不能证明每个组合都已测试。优化标准用于排列测试结果,并不代表策略已被认定能够盈利。请记录使用的方式和标准。

以点数计算盈利的估算模式不计算隔夜利息、佣金,也不检查保证金。评估风险前,请使用更详细的模式;这种快捷估算不能还原全部交易成本。


保留并比较前向验证时段

  1. 在“设置 → 前向”中选择 1/2、1/3、1/4 或“自定义”。

  2. “日期”范围较晚的一部分会被保留,较早的一部分用于优化。选择“自定义”时,指定前向验证的开始日期。

  3. 完成后,在“优化结果”和“前向结果”中比较被选中的测试结果;并非每个参数组合都会进入前向验证。

  4. 将两个时段和参数组合与报告一起保存。若继续依据前向时段调整参数,该时段就不再是独立验证。


明确选择 MT5 的报价建模模式

模式

该选项的含义

每个报价

依据分钟柱模拟中间价格,并非记录下来的真实逐笔报价历史。

基于真实报价的每个报价

使用可用的经纪商逐笔报价,点差可在一分钟内变化。缺少逐笔报价的分钟可能依据分钟柱生成报价。

1 分钟 OHLC

使用每分钟的开盘、最高、最低和收盘价格点,不会将 EA 的测试时间周期改成 M1。

仅开盘价

在柱开盘时调用 EA;W1/MN1 按日模拟。止损及挂单结果、可访问的时间周期均有限制,且不能使用随机延迟。

这些模式采用不同的测试假设,粗略模式的结果不能等同于真实逐笔报价测试。请选择符合 EA 逻辑的模式,并在报告中保留模式名称。


检查数据准备和实际测试时段

  1. 等待所需品种的历史数据同步。多品种策略可能在加载其他历史数据时暂停。

  2. 在“日志”中比较要求的日期与实际日期。开始前的数据不足,可能导致实际开始日期后移。

  3. 在报告中记录这种后移,不要把原先要求的整个时段都描述为已经测试。

  4. 为了缩短数据准备而更换时间周期,会改变测试条件。比较不同周期的结果前,请先检查 EA 的设计。


MT5:影响测试的技术条件

以下 MT5 测试器行为需要与 MT4 的假设及真实账户运行区分。

条件

测试行为

点差

MT5 使用历史数值并按浮动处理。若历史数值为零或负数,则使用最近已知的数值。

测试前的历史数据

最低历史请求量:D1及以下为一年;W1为100根柱;MN1为八年(96个月)。准备数据不足可能使实际开始时间后移。

多个品种

一个品种形成新柱,不保证另一个品种也已形成新柱。仅开盘价测试尤其需要关注同步问题。

模拟时间

测试器内部的 GMT、本地时间和服务器时间相同。这不能证明真实服务器的时区。

图形对象

非可视化测试或优化中不绘制对象,查询其属性返回零。该限制不适用于可视化测试。

DLL 调用

远程代理禁止 DLL 调用。本地代理需要相应的导入权限;仅有权限不代表程序可信。

不要仅为让测试运行而开启 DLL 导入。先确认具体需求及程序可信性,并保持与该需求无关的权限关闭。


检查 MT5 可视化回测

  1. 按上文启动可视化测试后,使用单独打开的可视化窗口。主图表采用测试时选择的时间周期;此窗口内无法修改,因此请在开始前选好。

  2. 结合测试价格查看图表上的交易标记。它们表示模拟活动,并不是您的真实账户当前发生的交易或行情。

  3. 打开查看 → 市场报价,或按 Ctrl+M,查看模拟过程中的报价和当前测试时间。

  4. 打开查看 → 数据窗口,或按 Ctrl+D。将鼠标移到柱线上,查看日期、开高低收价(OHLC)、点差、成交量和指标数值。

  5. 打开查看 → 工具箱,或按 Ctrl+T。在交易中查看模拟持仓和挂单,在历史中查看订单和成交,在操作中查看 EA 发出的请求,在日志中查看测试日志,并相互对照。

  6. 排查意外操作时,按模拟时间对照相关请求、成交和日志记录。请求执行某项操作与实际成交属于不同的记录。


排查未完成的 MT5 回测

  1. 按时间顺序查看“日志”。准备历史数据时,可能需要下载主测试品种及货币换算所需品种的数据;准备数据与 EA 已开始运行是不同阶段。

  2. OnInit 失败表示 EA 无法完成初始化。检查输入参数及相应消息;这不能证明真实账户的订单被拒绝。

  3. 内存错误、数组索引超出范围或除以零,都可能使测试终止。记录准确报错并与程序开发者讨论,不要把部分报告当成完整测试结果。

  4. 将所选日期范围与实际停止位置对照。模拟强制平仓或 EA 自行移除,都可能使测试提前结束。将 EA 版本、设置和相关日志与报告一并保留;仅凭提前结束不能确定原因。


MT5:理解测试报告字段

请结合这些历史模拟指标进行比较。单一比率较高,并不能证明未来能够盈利。

字段

解读

历史质量

一分钟价格数据的质量,包括数据缺口;不是盈利交易的百分比。

盈利因子

总盈利除以总亏损;数值为一表示两者相等。

恢复因子

所获利润除以最大回撤。

夏普比率

收益率减去无风险利率,再除以收益率标准差。测试器假设无风险利率为零。

余额/净值回撤

绝对回撤比较初始资金与低于初始资金的最低值。最大回撤以货币金额衡量局部峰值到其后谷值的最大跌幅;相对回撤以百分比衡量该跌幅。请分别检查余额和净值。

持仓时间

从开仓到完全平仓的时间。部分平仓和反向操作在此指标中不算完全平仓。

进场分布图统计开仓、加仓和反向操作;盈亏分布图统计出场,包括部分平仓和反向操作。按小时、星期或月份划分的分布只描述该次测试,不能据此确定保证盈利的交易时段。


结合完整过程理解结果

例如,测试从 10,000 开始,结束时为 12,000,只能说明这次模拟的净收益;它没有说明期间账户曾下跌多少、承担了多少资金风险,或结果是否只依赖少数交易。请同时比较净值曲线、回撤、交易笔数和收益分布。这些数字仅为示例,不是收益目标或策略建议。
​

余额曲线主要反映已完成的交易;净值曲线还反映未实现盈亏。因此,平滑的余额曲线也可能隐藏较大的浮动亏损。比较两份报告前,请先核对使用的是哪种曲线及哪种回撤指标。


比较前先核对数据和成本

确认完整品种名称、日期范围、数据覆盖、建模方式及成本假设。点差、佣金、隔夜费和执行延迟都可能改变结果。不要假定每次测试都包含全部成本,或能重现当前真实交易的执行情况。数据缺失或价格来源不同,也可能改变交易顺序。
​

请区分 MT4 与 MT5 的测试。MT4 EA 与 MT5 EA 并不自动等同于同一个程序;平台、EA 版本及设置必须与报告一致。如果测试没有交易,请先检查测试日志、可用数据及 EA 输入参数,再判断是否为程序故障或策略本身没有触发交易。


把参数选择与独立验证分开

如果反复调整参数,直到某段历史表现理想,该时间段就不再是独立验证。请在选参数前保留另一段时间,并在该区间评估选定设置,不要再针对该区间调参。不断挑选最佳结果,可能形成漂亮但无法适用于其他时期的历史报告。
​

保留可复现记录:平台和 EA 版本、品种、测试区间、初始测试余额、参数组、建模方式、成本及报告。每次只比较一个变化。回测、参数优化及后续模拟运行回答的是不同问题;任何一项都不能单独证明 EA 适合您的情况或将会盈利。


合理使用结果

除了利润,也要查看回撤和交易笔数。保留一段未用于选择参数的独立时间区间,比较策略在该区间的表现。模拟测试可增加运行经验,但仍不保证真实交易结果。

将 EA 版本、设置、测试区间和假设与报告一起保留,便于调查差异。EA 能在 MT4 或 MT5 中运行,不代表 FXTRADING.com 认证其盈利能力。EA 不可在 FXTRADING.com App 上安装或运行。

这是否解答了您的问题?