POM Education Series #1:完美 EA 的假象

POM Education Series #1:完美 EA 的假象

1 十一月 2026, 19:22
Nauris Zukas
0
8
POM Education Series #1

Imperial Dominator

以其他语言阅读本文:
English | Русский | Español | Português | 日本語 | Deutsch | 한국어 | Français | Italiano | Türkçe | العربية | Bahasa Indonesia | ไทย

我们的社群: 加入中文 MQL5 频道

Imperial Dominator 是一款用于教学演示的 EA,专门按照 MQL5 Market 上某款大力推广的智能交易系统所采用的交易手法构建。它旨在揭示:看似亮眼的结果背后,可能隐藏着严重风险。

想知道 MQL5 Market 排名前列的哪款 EA 使用了这些手法吗?欢迎私信我。

本文介绍的所有内容,你都可以使用该 EA 的 Market 演示版,在 策略测试器 中亲自验证。

Imperial Dominator equity curve

这张图来自本文讨论的同一款 智能交易系统(Expert Advisor)。

回撤很小,曲线平稳上升。

有人想卖产品时,最喜欢展示的就是这样的曲线。

但这不是测试自然得出的结果,而是人为打造的。

本文将向你展示这是如何实现的。

这款 EA 可以获取,你也能自行重复所有操作。 EA Input Parameters Explained

首先,这究竟是一款怎样的 EA?

Imperial Dominator 是一款简单的智能交易系统。

每天 11:00(GMT 08:00),它根据过去八小时的最高价与最低价确定价格区间,并在区间两端放置 Buy Stop 和 Sell Stop 挂单。

每个信号拆分为七笔等量订单,设置固定的 Stop Loss 和 Take Profit。

持仓使用移动止损,新交易产生的利润则用于提前强制平掉较早的亏损仓位。

仅此而已。

这样的代码,在 MQL5 Freelance 上花几十美元就能委托开发。

但在 Market 商店里,把 EA 的价格从几十美元推高到几百美元的往往是营销,而不是代码。

既然如此,为什么还要展示这样的 EA?

因为本文不只看最终结果。

我们将使用同一款 EA,一步步拆解这条漂亮的曲线究竟是如何打造出来的。

你可以在 MetaTrader 5 策略测试器中运行它,查看每笔交易、调整设置并核对我的结论。

你不必只凭我的一面之词。

请自己验证。

第一层:盈亏比例

先看看参数设置。

Take Profit and Stop Loss settings

Take Profit 为 600 p,Stop Loss 却是 2600 p。

p = 价格点数。

因此,设置中显示的比例约为 1 比 4.3。

其他 EA 可能使用不同的数字,但只要比例相近,看起来同样能让人接受。

不过,这只是展示给买家看的表面。

系统的大多数交易并不会在 600 点的止盈位平仓。

真实的比例要从实际交易中寻找。

看一笔交易

打开可视化测试,从开仓到平仓完整观察一笔交易。

One trade from open through trailing to close

仓位建立了。

Take Profit 是 600 p,和设置完全一致。

价格向有利方向移动。

移动止损推动 Stop Loss,锁定大约 55 点利润。

随后价格回撤。

仓位最终以约 55 点利润平仓。

600 p 的 Take Profit 并未触及。

而大多数交易也是如此。

所以,设置中显示的是:

600 p 对 2600 p。

但在实际交易中看到的是:

约 55 p 对 2600 p。

这大约是 1 比 47。

要用每笔 55 点的盈利抵消一次 2600 点的亏损,需要约 47 笔这样的盈利交易。

高胜率正是从这里产生的。

许多小额盈利。

偶尔一次巨大亏损。

因此资金曲线可以显得非常平滑。

频繁获胜不代表系统本身变得更好。

它只是很少亏损;而一旦亏损,损失就很大。

设置窗口里看不到这样的实际比例。

只看 Take Profit 和 Stop Loss 的参数值,无法理解这一点。

只有查看具体交易,才能发现真相。

我会把这种系统称为 Loss-Delayed EA(延迟亏损型 EA)。

这种 EA 并非避免亏损,而是尽可能把亏损推迟。

亲自验证:观察交易

以可视化模式运行 EA,连续观察十笔交易。

留意几分钟后 Stop Loss 在哪里,以及仓位最终以什么结果平仓。

不要只看设置里写了什么。

要看交易实际发生了什么。

一款 EA 并不需要稳定盈利多年才能卖得好。

它只需要一段看起来极其优秀的时期。

Loss-Delayed EA 的设计本身就能制造这样的时期:大多数交易小赚,而大额亏损被推迟。

因此,长时间的连胜不仅是一份漂亮的成绩。

它还可以成为营销窗口期。

有人专门使用小手数的小账户持续运行 MQL5 信号。一旦出现亏损,就放弃那个账户,换上新账户。

只要其中一个账户出现较长的无亏损记录,积极的营销便开始了。

此时,他们会尽可能延长信号的寿命,争取卖出更多产品。等到亏损过大,就删除该信号,让已经准备好的下一个信号登场。

第二层:拆分进场

现在看看交易历史里同一次进场的记录。

Seven positions with the same open time and price

还记得每次进场都会拆成七份吗?

在历史记录中,它表现为七行具有相同时间和价格的数据。

就像买了一个馅饼,再切成七块。

你并没有七个馅饼。

你仍然只有一个。

但交易历史却把它显示成七笔单独的交易。

亲自验证:拆分进场

在策略测试器中打开 Results,检查开仓时间和价格。

如果多行数据一致,它们可能是同一次进场拆成的多个仓位。

在 MQL5 信号页面的 Trading History 中,也可以进行同样的检查。

Trading History: split entry on a signal page

为什么这很重要

因为这样的连胜纪录非常适合做营销。

如果一次进场产生七个盈利仓位,历史记录就会显示七笔获胜交易。

这比把合计利润显示为一笔进场更加震撼。

Marketing screenshot of a winning streak

Another marketing screenshot of a winning streak

你一定见过类似的截图。

一行接着一行,全是盈利,而且总是由同一批用户发布。怎样才能识破这种说法?

要求对方提供大手数交易的证据,例如 Market 信号服务或其他可信信号服务上的真实账户历史。如果没有可核实的证据,就不要轻信。

这类问题有越多得不到回答,你对 EA 实际交易方式的了解就越少。

漂亮的截图只能证明有人做出了一张漂亮的截图,不能证明 EA 具有长期稳定的表现。

但在根据这种连胜判断系统之前,请先注意:

实际上发生了多少次独立进场?

同一次进场的七个仓位,并不是七次独立胜利。

例如,系统可能连续四十天没有亏损。

听起来非常惊人。

但这仍然不能说明系统的真实水平。

它可能只是漫长交易历史中的一小段。

为什么要拆分进场?

这样的拆分也有实际用途。

EA 使用较新交易的利润,在较早的亏损仓位触及 Stop Loss 前将其平掉。

我可以把这种机制叫作:

"sophisticated unique Neural AI technique"

听起来非常厉害。

实际上原理很简单。

如果新仓位盈利,就可以用这笔利润减轻旧仓位的亏损。

根据测试时期不同,这种机制既可能改善结果,也可能拖累结果。因此,它作为策略的一部分并没有价值。

在测试器的优化模式中,将系数设置为 0(Batch Coefficient),便可关闭该机制。

Batch Coefficient setting

比较这两种结果。

Test comparison with Batch Coefficient at 0 and without it

实际差异很小。

不过,对新手来说,保留几次可见的亏损,反倒让这款 EA 看起来比完全没有回撤的曲线更可信。

Batch close trade example

关于这个实验,还有一点很重要。

在 Imperial Dominator 信号中,我还使用了自己的 Recovery Booster。

它并非只适用于这类 EA,而是一个独立的恢复工具,也可以用于其他策略。

我有意在 Imperial Dominator 上使用它,是为了延长系统的存活时间,并测试利用分析历史的恢复机制,究竟能够让这样的系统维持多久。

这不会改变系统的本质,也不会让风险消失。更糟的是,如果连续出现多次亏损,这种机制还可能严重影响回撤(DD)(在我的信号中可以清楚看到)。

第三层:测试区间

前两层解释了为什么曲线可能显得平滑。

但还没有解释为什么它可以完全没有明显的下跌。

下面展示同一项测试在包含一个亏损时期时的样子。

Backtest with one losing period

这只是一个亏损时期。

现在看看,如果 EA 在那一天不交易,会发生什么。

Imperial Dominator 有一个 Skip Days 参数。

它会阻止 EA 在指定日期开新单。

设置为 Skip Days = 241002。

Skip Days parameter setting

输入 EA 不允许交易的日期。

再次运行测试。

Backtest after excluding the losing day

下跌消失了。在 2024.10.02 这一天,已经没有任何开仓交易。

胜率提高了。

最大回撤下降,利润增长,曲线看起来完美无缺。

而测试汇总结果并不会提示这一天被跳过。

再看看这种做法可以走多远

到目前为止,我们只移除了一个亏损时期。

接下来对每个亏损时期都这样操作。

我们将使用 16 年的测试区间和动态手数。

Absurd-looking backtest after all losing days are excluded

结果看起来简直荒唐。

利润达到数亿美元。

这不是因为我们找到了神奇的交易策略。

我们只是让系统在历史上结果令我们满意的日期用动态手数交易,同时删掉那些不满意的日期。

这说明:如果你能自己选择系统在哪些历史日期允许亏损,那么就可以用历史数据打造出多么惊人的结果。

请亲自做出来看看!

在这款 EA 中,糟糕的日期并未藏在代码里,而是直接写在 Skip Days 字段中。

但同样的原则也可以写进代码,使买家无从察觉。

随后,在一次巨大亏损之后,Market 页面上可能出现新版本,而更新记录的 What’s new 一栏会写上例如:

"Improved performance"

或者

"Fixed minor issues"。

那里可以写任何文字。真正起作用的是更新本身,而不是旁边的描述。更新后,这款 EA 的回测又会变得完美。

如果亏损日期被硬编码在 EA 内部,你无法在设置中看到,也无法关闭。

我在上一篇文章中更详细地展示了,技术上打造这种回测有多简单:

STOP! Backtests Lie. How to Make Any EA Look "Perfect" in 5 Seconds

https://www.mql5.com/en/blogs/post/769134

因此,你看到的回测不一定是系统的全部历史。

它可能只是系统被允许交易的那些日子的历史。

亲自验证:跳过亏损日

在 EA 的回测中找到一个亏损日。

对完整时期运行测试。

然后排除该日期,再次测试。

比较两次结果。

仅仅一天就可能显著改变整个回测的面貌。

难道不能诚实地使用这种方法吗?

诚实的过程——筛选、测试和核查——需要时间。

但对于这套系统,这并不能解决问题。

如果亏损事件很少,你无法仅凭少量案例判断它们有什么共同之处。

根据少数孤立案例打造的过滤条件,可能捕捉到的是偶然现象,而不是真正的规律。

如果某个系统一年只有三次亏损,而我们把那三天删掉,机器人并没有因此改进。

我们只是把不喜欢的部分从统计数据中删除了。

下一次亏损可能发生在完全不同的日期,原因也可能不同。

这叫作 Rare-Event Overfitting(稀有事件过拟合),也就是对罕见事件进行拟合。

过滤条件越是精准地消除历史亏损,系统就可能越脆弱。

仅靠排除过去亏损的日期,就希望未来完全零亏损,这种可能性几乎为零。

关于回测过度优化及其对样本外表现的影响,可参阅:

Bailey, D., Borwein, J., Lopez de Prado, M., & Zhu, Q. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
SSRN — full text of the paper

延长真实信号寿命、推迟不可避免亏损的另一种方法

你还可以简单地减少 EA 被允许交易的天数。

例如,只允许它在一周中的某些日子交易。

添加新闻过滤器。

或者禁止它在某些时段交易。

每种过滤条件单独看都可能非常合理。

它们也确实可能有用。

但还应该从营销角度审视它们。

EA 交易的天数越少,遭遇亏损的机会也越少。

测试中剩下的亏损越少,就越容易出现一段长期没有亏损的时期。

这对 Loss-Delayed EA 尤其重要:越能推迟巨大亏损,之前的连胜看起来就越惊人。

这些过滤条件真的有合理依据,还是只是减少交易天数,好让营销宣传可以更久地夸耀系统?

例如,如果系统周五不交易,那么每周五个工作日中只交易四天。

也就是说,按交易日计算的同一段连胜,在日历上会延长约 25%。

连胜并没有变得更好,只是发生得更慢了。

但为什么真实信号页面的曲线也经常看起来完美平滑?

前面我们考察了 EA 本身和回测能够怎样被处理。

而在 MQL5 信号中,你看到的已经是真实交易账户的统计数据。

于是一个自然的问题出现了:

既然是真实账户,为什么它的资金曲线也能看起来近乎完美?

这里的操作发生在另一个层面——不在 EA 代码中,而在账户统计数据的展示方式上。

我们来看看同一账户的两个视图(Growth 和 Balance)。

The same account in two statistics views

看出区别了吗?

交易结果并没有改变。

在 Growth 视图中,曲线平稳向上,虽然同一时期该账户实际上发生过回撤。

在 Balance 视图中,可以看到多次入金和出金。

这已经是完全不同层面的统计展示操作。

存取款如何让 MQL5 信号上的统计图看起来漂亮得多,将是下一篇 POM Education Series 文章的主题。

但现在你已经知道,仅凭一条漂亮的曲线远远不够。

你必须弄清楚究竟是什么造就了这条曲线。

现在你知道了什么

现在你已经知道:

  • 小额盈利和一次巨大亏损如何制造极高的胜率;
  • 一次进场拆成多个仓位,如何看起来像很长的连胜;
  • 剔除糟糕的时期如何让回测更漂亮;
  • 减少交易日如何在日历上拉长连胜;
  • 以及为什么一条漂亮的曲线本身什么也证明不了。

下次看到完美的 EA 结果时,不要只看曲线。

问问自己:它是不是一款 Loss-Delayed EA?

看看曲线背后隐藏着什么。

这只是开始

这是 POM Education Series 系列的第一篇教学文章。

我计划继续这个系列,探讨其他可能让人误判 EA 质量的方法。

如果不想错过接下来的文章,请关注 MQL5 上的 Pulse of Market 频道。

如果你觉得这篇文章有用,也请分享给其他人。否则,这类信息总会只停留在那些已经找到它的人手里。

Pulse of Market 频道: https://www.mql5.com/en/channels/01a02c54cf2bdd01