分类
绩效
难度
进阶
适用场景
回测EA 评估

建模质量

MT5 策略测试器打印的百分比,用于表示价格历史对被测区间的覆盖有多完整——它在使用生成 tick 的运行中同样会出现,并非只在真实 tick 上才有。

亦称:tick 质量, 历史质量, 回测质量

更新于

一句话讲清

测试器所用的价格与真实发生过的价格有多接近。数值低意味着模拟把它已知价格之间的大部分走势编了出来,而策略交易的正是这份编造。

为什么重要

回测里的其他每一个数字都建立在测试器所用的价格序列之上,因此建模质量是决定报告其余部分究竟在衡量策略还是在衡量插值的那个数字。它最要紧的地方,恰恰是 EA 营销嗓门最大的地方——日内与剥头皮策略,它们的全部优势都活在 K 线内部。

  • 它划定了报告可信的上限。建立在合成的 K 线内走势之上的盈利因子,是关于这份合成本身的事实。
  • 损害并不均匀。以日线收盘为准的策略几乎察觉不到差别;目标只有 5 点的策略,可能大部分成交都由测试器编造出来的价格决定。
  • 这是最常被留空的字段,而空字段可能比低数值更糟。这些商品页背后的模式曾把它的默认值设为 99,于是一次使用生成 tick 的运行一直显示 '99% modelling quality, against a 92% minimum',直到该默认值在 2026-08-06 被移除。

用它验证策略

用在哪里

  • 在每一份 MT5 策略测试器报告的顶部读取,打印为 'History Quality',旁边就是建模模式。
  • 在 EA 商品页中被引用,用以确定公布的盈利因子与回撤是在什么基础上算出来的。
  • 在运行之前被有意选定:凡是日内策略就用「基于真实 tick 的每个 tick」(模型 4),更快的模型只用于粗略的参数扫描。
  • 在同一个 EA 的两次运行之间比较,用来解释它们的数字为何对不上。

可靠的结果长什么样

  • 测试器报告使用了真实 tick,历史质量处于 100 % 或接近该值,并且点名了数据来源。
  • 该品种的 tick 历史真正覆盖了整个区间,而不是早期年份由 K 线回填而成。
  • 数据中的点差是记录下来的点差,而不是拿一个固定值顶替。
  • 同一种建模模式覆盖了比较中的每一次运行。

警示信号

  • 根本没有声明建模质量——这种缺失过去读起来像一个体面的默认值,正因如此这个数字应当被测量而不是被省略。
  • 引用了高数值却不给数据来源,而来源恰是这项主张中可核对的那一半。
  • 报告显示采用基于 K 线插值建模的日内或剥头皮 EA。
  • 同一区间两次运行之间发生变化的数值,这通常意味着其中一次把部分历史补齐了。
  • 拿单品种 EA 的标准去评判一篮子 EA 的数值。一次同时加载多个品种的运行,仅凭这一点就会报出更低的质量,于是这种比较排的是工作量而不是模拟本身。

回测与实盘的差异

  • 插值数据会产生从未存在过的成交。测试器假定已知价格之间是一条平滑路径,于是止损与目标以市场从未提供过的顺序被触发。
  • 固定点差建模抹去了真实账户要付的扩大部分,而这部分扩大最狠地落在低质量建模本就定价错误的小目标上。
  • 真实 tick 建模缩小了差距却没有消除它:延迟、重新报价以及经纪商自身的成交方式,依然在模拟之外。
  • 可以预期回测与实盘之间差距的大小会直接跟随建模质量——数据越粗糙,意外就越大。

推荐的验证方法

  1. 1在运行之前选定测试器模型,并把它与结果一起记录,而不是报告上一次运行碰巧用了什么。
  2. 2凡是在当日内交易的策略都用真实 tick,并先确认终端里究竟有没有——本站一次公开运行背后的 ticks.dat 只有 123 KB,等于根本没有库存。
  3. 3把定稿的策略在第二个真实 tick 来源上重跑一遍再作比较:来源之间的一致才让这个数字成为证据。
  4. 4在每一次公开的运行中把质量数值与来源一并说明,让读者可以复现而不是只能相信。

示例

本站公开的四次运行,全都读取测试器的同一个字段。其中三次使用了相同的模型——模型 0,每个 tick 由 M1 K 线生成——跑在同一份经纪商历史之上,差别只在于这次运行需要加载多少个品种。

模型 0,单一品种(GBPJPY)
历史质量 99 %
单品种的 M1 历史。
模型 0,五个品种(一篮子)
历史质量 72 %
模型 0,七个品种(一篮子)
历史质量 72 %
模型 4,真实 tick(Dukascopy)
历史质量 100 %

一篮子运行自身的工作量把它的数值往下拽,因此本站的一篮子商品一律不公布质量数值,而不是公布一个会被读者误读的低值。

计算 在模型、经纪商与数据来源保持不变的情况下 99 % → 72 %;唯一变化的是品种数量

结果 下降的 27 个点衡量的是这次运行的历史加载量,而不是它的保真度

怎么读这个数字

把建模质量当作附着在报告中其他每个数字上的条件,并在判断它有多重之前,先读策略的持仓时长。

区间 含义
真实 tick,质量在 100 % 或接近 这些数字讲的是策略本身。余下的差异活在成交环节,而不在价格序列里。
90 % 上下,由 K 线插值 对日线收盘系统可用,对任何在 K 线内交易的东西具有误导性。把它读作一次扫描,而不是一个结果。
用于参数扫描的低数值 作为搜索工具是正当的,作为公开主张则毫无价值。任何存活下来的候选都必须规规矩矩地重跑一次。
未声明 最弱的情形,因为它与压根没测过无法区分。在读盈利数字之前先问清楚。
  • 让数据匹配策略的时间周期。目标越细,结果中由测试器已知价格之间决定的部分就越多。
  • 来源不明的高数值只是半个主张。让它可复现的正是来源。
  • 当同一个 EA 的两次运行对不上时,先检查建模模式,再去规则里找 bug。

本站 30 个 EA 商品中,有 6 个声明了建模质量:全部为 100 %,且全部是在真实 tick 上完成的运行。其余 24 个都不声明:12 个以模型 0 运行,也就是测试器从 M1 K 线生成每一个 tick,而不是回放录下的 tick,其中包括报告里打印出 72 % 的那两次一篮子运行;另有 12 次真实 tick 运行没有给出任何数值。构建关卡读取的是发布出去的页面而非源码,因为默认值 99 就住在模式里,而只看源文本的检查会漏掉它下一次回来的路径。

常见误区

把缺失的数值读成好数值

被省略的建模质量不是一个谦虚的值,而是一个未经测量的值。任何代读者填上的默认值,都会把沉默变成没有人作出过的主张。

以为高百分比就让回测变得真实

它只说明价格序列是忠实的。滑点、重新报价、延迟以及经纪商的成交政策全都在测试器之外,所以哪怕 100 % 的运行,仍然美化了成交。

比较由不同测试器模型产生的数值

建模模式改变的是成交集合而不只是价格——在插值数据上被触发的交易,在真实 tick 上可能永远不会触发。这样的两次运行是两个不同的实验。

拿剥头皮的标准去衡量日线系统,或者反过来

持仓数天的波段策略几乎感觉不到 K 线内的路径;剥头皮者却靠它吃饭。用同一个阈值衡量两者,必然会看错其中之一。

深入说明

常见问题

EA 回测的建模质量应该达到多少?
凡是在当日内开仓并平仓的策略,都应使用历史质量处于 100 % 或接近该值的真实 tick。对于日线收盘系统,由 K 线插值得到的 90 % 左右通常已经够用。这个数字的重要程度,与策略结果中有多少是在测试器已知价格之间被决定成正比。
为什么即使用真实 tick 数据,建模质量也低于 100 %?
因为测试器报告的是历史对所请求区间的覆盖有多完整。经纪商保存的 tick 中的空洞、由 K 线回填的早期年份、开始时间早于 tick 历史起点的区间,或是一次必须同时加载多个品种的运行,都会拉低这个数字,哪怕运行本身用的就是真实 tick。其中最后一条,使得多品种运行的数值无法与单品种运行相比。
90 % 的回测是不是就没用了?
不是没用,而是有限。它对慢速策略是合理的筛子,对快速策略却是公布数字的糟糕依据,因为插值补上的恰恰是短目标策略所交易的那段 K 线内路径。