ATC冠军访谈:高风险EA设计启示
🤖

ATC冠军访谈:高风险EA设计启示

从西班牙选手Mercurius看马丁加仓与多币种的实战权衡

技术分析基础 难度 · 进阶 2026-01-23 8 分钟阅读
#ATC2011#MQL5#EA策略#风险管理

一、访谈背景与选手画像

2011年自动交易锦标赛(ATC 2011)期间,MQL5社区采访了来自西班牙的参赛选手Antonio Morillas,其论坛ID为sallirom(即其姓氏Morillas的反写)。他在锦标赛开局首日便将起始资金翻倍,立刻引起社区关注。与其他保守型EA不同,他的策略极度激进,依赖趋势判断与动态加仓,在短时间内用尽可用保证金以博取高收益。Antonio本人并非职业交易员,而是一名计算机工程师,在高中教授信息学,交易仅为其爱好。他此前参与过西班牙某经纪商组织的半自动MQL4比赛,每位参赛者在本机运行EA并可人工干预,这让他对自动化交易产生浓厚兴趣。直到一年前他才知悉MQL5的ATC赛事,随即着手准备自己的EA。

这一背景对中文交易者的启示在于:成功的EA作者未必是金融科班出身,具备编程能力与工程化思维同样关键。MQL5语法接近C++,对于有开发基础的人门槛并不高,真正的难点在于策略逻辑与风险控制,而非语言本身。

✦ 关于ATC
自动交易锦标赛(Automated Trading Championship)是MetaQuotes官方举办的EA实盘竞赛,使用统一起始资金(当年为1万美元),禁止人工干预,是观察极端策略表现的公开窗口。

二、为什么选择MQL5而非MQL4

Antonio明确表示自己更喜欢MQL5。在他看来,MQL5允许轻松创建多币种EA或融合多种策略的机器人,而MQL4在架构上较为受限。尽管他本人未使用MQL5向导(Wizard),因为希望完全掌控程序逻辑,但他认为向导对不会编程的交易者非常有用,可快速生成用于测试的EA框架。

从技术演进角度,MQL5相较MQL4的核心优势包括:原生支持持仓(position)而非仅订单(order)模型、内置资金管理函数如OrderCheck、可并行使用本地与云代理测试、以及更严谨的面向对象结构(如CTrade、CPositionInfo等类)。对于中文用户,若从零起步,直接学习MQL5比纠缠MQL4历史包袱更有效率。

三、Mercurius EA的核心策略逻辑

Mercurius是一个基于自编移动均线指标的多币种趋势EA。其指标根据均线斜率给出三种信号:买入、卖出或等待。为对抗假信号,EA在方向判断正确时让利润奔跑,并采用宽幅追踪止损(Trailing Stop)。真正使其与众不同的是「动态加仓至上限」机制:当浮盈增长且出现同向信号时,EA会将持仓手数逐步放大至允许最大值,几乎耗尽可用净值,直到自由保证金剩30%为止。

为防止爆仓,EA监控保证金水平,在达到Margin Call前主动平仓;同时设定自由保证金上限,一旦触及便锁定利润并将余额重置为1万美元重新起步。这种「要么登顶、要么出局」的哲学,源于Antonio认为锦标赛只有前三名有意义,第四与第三百九十五名并无差别。在回测中,该EA今年前8个月结果为13.5万美元,但曲线剧烈起伏,实盘与历史表现差异显著。

⚠ 高风险警示
将自由保证金用到仅剩30%、单笔可达15手上限的做法,在实盘极可能遭遇极端行情导致巨额亏损。访谈策略仅适合竞赛环境,普通账户严禁直接照搬。

四、币种选择与多币种协同设计

Mercurius交易EURUSD、EURAUD、EURGBP与EURCHF四个欧元系货币对。Antonio解释,EURUSD趋势线通常更平滑,因此多数参赛者选它;而所有配对均以EUR为基础,是因为账户以美元计价且有手数限制,欧元系能更高效地消耗美元保证金。EA并非一开始全开,而是先在EURUSD积累足够净值后,才在其他交叉盘开仓。这样做既控制早期风险,又利用相关性分散。

他在优化时针对去年夏天频繁转向的行情调参,最终使用4个公共参数加每个符号6个参数,末阶段固定部分参数仅优化每符号4个。这反映出多币种EA的调参复杂度远高于单品种,且必须权衡策略测试时间限制。

五、开发细节与日志诊断经验

Antonio在日志中留下如「**** No se puede abrir posicion - 4756.00000000」的西班牙语提示,意为无法开仓。原因在于其EA几乎用尽权益,OrderCheck虽预先校验通过,实际提交时仍可能资金不足。这展示了MQL5中OrderCheck与真实执行间的缝隙:校验基于调用瞬间状态,不保证后续成交。

他学习MQL5的主要途径是官方文档,其次为论坛与文章。他也建议编译器对弃用函数(如CPositionInfo的Type方法)给出警告。这些细节提醒中文开发者:文档是第一手资料,但社区排查与版本迁移经验同样不可或缺。

// 示例:使用OrderCheck预判开仓可行性(Antonio逻辑简化)
MqlTradeRequest request;
MqlTradeResult result;
MqlTradeCheckResult check;
ZeroMemory(request);
request.action = TRADE_ACTION_OPEN;
request.symbol = "EURUSD";
request.volume = 15.0;
request.type = ORDER_TYPE_BUY;
request.price = SymbolInfoDouble("EURUSD", SYMBOL_ASK);
if(OrderCheck(request, check))
{
   if(check.retcode == TRADE_RETCODE_OK)
      OrderSend(request, result);
   else
      Print("Check failed: ", check.comment);
}
else
   Print("OrderCheck error");

六、回测与实盘的鸿沟

Antonio坦承,历史测试与真实交易结果非常不同。若有条件他会在当时版本做大量修改。ATC这种公开赛实质是用实盘检验过度优化:8个月回测盈利13.5万,但曲线含多次深回撤;实盘首日翻倍后连亏跌落榜首。这印证了「样本外失效」是EA开发者的常态敌人。

对中文交易者的可执行建议是:任何EA上线前,除常规回测外,应利用MQL5云网络(Cloud Network)扩大样本,或做前向步进优化(walk-forward),并严控杠杆与加仓比例。切勿因竞赛亮眼曲线忽视实盘滑点、点差与流动性断裂。

✦ 云测试价值
Antonio看好MQL5 Cloud Network分布式计算,本地仅4核时云代理可数倍加速多参数优化,尤其适合多币种EA。

七、对MQL5生态服务的看法

谈及MQL5.com新服务,他认为Jobs(自由职业任务区)起步扎实,Cloud Network将成为测试利器。彼时他只用本地4核代理,但已预见云算力前景。今日的MQL5市场(Market)与信号(Signals)亦是中文用户可借力的组件:市场售卖指标/EA,信号提供跟单,降低自研门槛。

从访谈可见,早期社区已构建「文档+论坛+市场+云」的闭环。中文交易者若善用这些官方设施,可比闭门造EA更快形成战斗力。需要注意的是,ATC策略不可直接上架市场,因竞赛规则与实盘合规要求不同。

八、普通交易者能学到什么

总结Mercurius案例,非职业选手也能借MQL5参与高级竞赛,关键在于:明确策略边界、用代码固化风控、接受运气成分、持续依据文档迭代。Antonio以罗马神话中商业之神Mercurius命名EA,寄望其再次起飞,也寄语其他参赛者感谢MetaQuotes提供平等舞台。

我们建议中文用户从单币种趋势EA起步,先实现稳定追踪止损,再逐步引入仓位管理;慎用马丁或极限加仓;用OrderCheck配合日志自查资金漏洞。如此,方能在不冒毁灭风险的前提下,吸收ATC先锋们的工程智慧。

常见问题

Mercurius在趋势信号正确且浮盈增长时,将持仓手数逐步加至品种允许上限(如EURUSD达15手),几乎用尽净值,直到自由保证金剩30%;同时监控Margin Call前平仓,并设自由保证金上限锁利后重置1万美元重跑。
OrderCheck仅按调用瞬间账户状态校验,不保证成交时资金仍充足。如Antonio日志所示,EA耗光权益后校验虽过,实提交因余额不足失败,需结合日志与实时权益判断,不能只依赖校验返回值。
EURUSD趋势线较平滑易捕捉,且账户以美元计价、有手数限制时,欧元系交叉盘能更高效消耗美元保证金;Mercurius先跑EURUSD积累净值,再开EURAUD等,兼顾安全垫与利用率。
MQL5原生支持持仓模型、提供OrderCheck等风控函数、可用向导快速生成框架,并能便利地在一个EA内写多币种多策略逻辑,本地与云代理并行测试,适合复杂机器人开发。
不能。ATC为无成本竞赛环境,Mercurius用到只剩30%保证金的做法实盘极易爆仓。普通账户应限杠杆、先做单品种趋势EA,用追踪止损与固定仓位,严禁盲目极限加仓。