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 演示版,在 策略测试器 中亲自验证。

这张图来自本文讨论的同一款 智能交易系统(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 为 600 p,Stop Loss 却是 2600 p。
p = 价格点数。
因此,设置中显示的比例约为 1 比 4.3。
其他 EA 可能使用不同的数字,但只要比例相近,看起来同样能让人接受。
不过,这只是展示给买家看的表面。
系统的大多数交易并不会在 600 点的止盈位平仓。
真实的比例要从实际交易中寻找。
看一笔交易
打开可视化测试,从开仓到平仓完整观察一笔交易。

仓位建立了。
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 信号。一旦出现亏损,就放弃那个账户,换上新账户。
只要其中一个账户出现较长的无亏损记录,积极的营销便开始了。
此时,他们会尽可能延长信号的寿命,争取卖出更多产品。等到亏损过大,就删除该信号,让已经准备好的下一个信号登场。
第二层:拆分进场
现在看看交易历史里同一次进场的记录。

还记得每次进场都会拆成七份吗?
在历史记录中,它表现为七行具有相同时间和价格的数据。
就像买了一个馅饼,再切成七块。
你并没有七个馅饼。
你仍然只有一个。
但交易历史却把它显示成七笔单独的交易。
亲自验证:拆分进场
在策略测试器中打开 Results,检查开仓时间和价格。
如果多行数据一致,它们可能是同一次进场拆成的多个仓位。
在 MQL5 信号页面的 Trading History 中,也可以进行同样的检查。

为什么这很重要
因为这样的连胜纪录非常适合做营销。
如果一次进场产生七个盈利仓位,历史记录就会显示七笔获胜交易。
这比把合计利润显示为一笔进场更加震撼。


你一定见过类似的截图。
一行接着一行,全是盈利,而且总是由同一批用户发布。怎样才能识破这种说法?
要求对方提供大手数交易的证据,例如 Market 信号服务或其他可信信号服务上的真实账户历史。如果没有可核实的证据,就不要轻信。
这类问题有越多得不到回答,你对 EA 实际交易方式的了解就越少。
漂亮的截图只能证明有人做出了一张漂亮的截图,不能证明 EA 具有长期稳定的表现。
但在根据这种连胜判断系统之前,请先注意:
实际上发生了多少次独立进场?
同一次进场的七个仓位,并不是七次独立胜利。
例如,系统可能连续四十天没有亏损。
听起来非常惊人。
但这仍然不能说明系统的真实水平。
它可能只是漫长交易历史中的一小段。
为什么要拆分进场?
这样的拆分也有实际用途。
EA 使用较新交易的利润,在较早的亏损仓位触及 Stop Loss 前将其平掉。
我可以把这种机制叫作:
"sophisticated unique Neural AI technique"
听起来非常厉害。
实际上原理很简单。
如果新仓位盈利,就可以用这笔利润减轻旧仓位的亏损。
根据测试时期不同,这种机制既可能改善结果,也可能拖累结果。因此,它作为策略的一部分并没有价值。
在测试器的优化模式中,将系数设置为 0(Batch Coefficient),便可关闭该机制。

比较这两种结果。

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

关于这个实验,还有一点很重要。
在 Imperial Dominator 信号中,我还使用了自己的 Recovery Booster。
它并非只适用于这类 EA,而是一个独立的恢复工具,也可以用于其他策略。
我有意在 Imperial Dominator 上使用它,是为了延长系统的存活时间,并测试利用分析历史的恢复机制,究竟能够让这样的系统维持多久。
这不会改变系统的本质,也不会让风险消失。更糟的是,如果连续出现多次亏损,这种机制还可能严重影响回撤(DD)(在我的信号中可以清楚看到)。
第三层:测试区间
前两层解释了为什么曲线可能显得平滑。
但还没有解释为什么它可以完全没有明显的下跌。
下面展示同一项测试在包含一个亏损时期时的样子。

这只是一个亏损时期。
现在看看,如果 EA 在那一天不交易,会发生什么。
Imperial Dominator 有一个 Skip Days 参数。
它会阻止 EA 在指定日期开新单。
设置为 Skip Days = 241002。

输入 EA 不允许交易的日期。
再次运行测试。

下跌消失了。在 2024.10.02 这一天,已经没有任何开仓交易。
胜率提高了。
最大回撤下降,利润增长,曲线看起来完美无缺。
而测试汇总结果并不会提示这一天被跳过。
再看看这种做法可以走多远
到目前为止,我们只移除了一个亏损时期。
接下来对每个亏损时期都这样操作。
我们将使用 16 年的测试区间和动态手数。

结果看起来简直荒唐。
利润达到数亿美元。
这不是因为我们找到了神奇的交易策略。
我们只是让系统在历史上结果令我们满意的日期用动态手数交易,同时删掉那些不满意的日期。
这说明:如果你能自己选择系统在哪些历史日期允许亏损,那么就可以用历史数据打造出多么惊人的结果。
请亲自做出来看看!
在这款 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)。
看出区别了吗?
交易结果并没有改变。
在 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



