ATC冠军访谈:多货币EA实战启示
从波兰程序员zrn的2012自动交易锦标赛经验讲透策略演化
谁是 Mariusz Zarnowski 与 ATC 2012
Mariusz Zarnowski(论坛ID:zrn)来自波兰卢布林,拥有计算机科学学士学位,当时在华沙一家经纪商担任程序员。他自2006年接触杠杆交易,2007年初步尝试算法交易,并首次参加自动交易锦标赛(Automated Trading Championship,简称ATC)。ATC 是 MQL5 社区早期每年举办的大型 EA 实盘竞赛,使用 MetaTrader 5 平台,初始虚拟资金通常为 10,000 美元,赛期数月,以最终净值排名。2012 年是他第四次参赛,其多货币 EA 在临近结束时一度将初始入金翻三倍,稳居前列。
这次访谈发生在 2012 年 12 月 18 日,距离锦标赛结束仅剩两周。当时他的 EA 已展现出强劲的净值增长能力,但也经历过回撤:首月亏损过半,随后两周内回升至约 45,000 美元。访谈揭示了业余爱好者到职业程序员的进化路径,以及多货币系统构建中的关键决策。
从单货币到多货币:EA 的演化路径
Mariusz 的前两次锦标赛提交的是单货币 EA,后两次改为多货币系统。他坦诚早期系统充满缺陷(glitchy),若放在今天连 demo 账户都不敢跑。核心转变发生在 2010 年:他开始构建多货币 EA,而 MetaTrader 5 先进的策略测试器(Strategy Tester)大幅降低了多品种回测与优化的复杂度。
所有他的系统有一个共同点:基于移动平均线(Moving Average)的不同变体。他没有盲目追求复杂指标,而是把均线作为信号主干,再通过多品种组合与资金管理来平滑曲线。这种“简单信号 + 严谨风控”的思路,比堆砌指标更符合实盘生存逻辑。
- 2007–2009:单货币 EA,缺乏成熟资金管理,系统脆弱
- 2010 起:转向多货币,借助 MT5 策略测试器提升研发效率
- 信号核心:移动平均线变体,不依赖冷门指标
- 参赛价值:观察他人如 Better 的神经网络应用,拓展认知边界
多货币品种选择的底层逻辑
2012 年他的 EA 交易四个货币对:EURUSD、USDCHF、EURJPY、GBPJPY。选择依据来自回测表现最优,以及组合分散需求。他指出 EURJPY 与 GBPJPY 和 EURUSD 相关性较低,这种低相关搭配能在不增加单一方向敞口的前提下实现组合多样化——这对只懂“选 EURUSD 和 GBPUSD”的新手是重要提醒。
需注意:相关性并非静态。2012 年欧债危机背景下部分日元交叉盘与欧美走势脱节,但正常时期它们可能同步。因此多货币组合必须随宏观 regime 重估,而非一次选定永久有效。
资金管理的激进与克制
ATC 锦标赛环境决定:不用激进资金管理很难进 TOP。Mariusz 采用了一条特殊规则——在亏损交易后加大手数入场,以平滑权益曲线(martingale 变体)。他强调这不是无限制加倍,而是系统内的明确规则。锦标赛追求排名,实盘则完全不同:他曾开多个真实账户,单月盈利超 1000%,也多次爆仓归零。
他坦言算总账可能略微亏损。这揭露一个真相:竞赛 EA 的仓位逻辑往往为排名优化,直接套用到实盘可能致命。中文用户常把“锦标赛冠军 EA”当圣杯,忽略其资金曲线在实盘波动下的毁灭性。
- 锦标赛:可承受高回撤,博取排名收益
- 实盘:应先固定 fractional lot,例如每 1 万净值 0.1 手
- 亏损加码需设最大连亏上限,防止指数级膨胀
- MT5 中用 CTrade::Lot 结合账户权益动态计算更稳
趋势系统为何在 2012 吃过亏
他的 EA 是趋势系统,设计预期单边幅度 150–200 点。但实际波动不足,且他错误预判 EURUSD 会大跌(四对中三对方向被预设)。结果首月回撤一半。这说明:哪怕多货币分散,方向假设错误仍会造成系统性拖累。后来欧美若狠跌,四对全开就能反超;否则大概率前 20。
对中文交易者的启示是:趋势 EA 对波动率敏感。应在 MQL5 中嵌入 ATR 过滤器,波动低于阈值时降仓或停手,而不是硬扛震荡。
// 简单 ATR 波动过滤示例 double atr = iATR(_Symbol, PERIOD_H1, 14); if(atr < SymbolInfoDouble(_Symbol, SYMBOL_POINT) * 150) return; // 波动不足 150 点等价,不交易
神经网络与自学习系统的前瞻
Mariusz 明确表示自己是神经网络与自学习系统的粉丝,认为只有这类算法能适应不断变化的市场环境与波动率。他在 2007 年看到 Better 用神经网络夺冠后产生浓厚兴趣。访谈中他欣赏 Janusz 将神经网络决策模型适配到小时图,并认为 aler 的系统最适合真实市场。
今天看,MQL5 已支持 Python 集成与 ONNX 模型推理,比 2012 年纯 MQL5 实现神经网络更现实。但核心观点不变:静态参数 EA 终会失效,在线学习或周期重训练是延长寿命的关键。
真实账户盈亏与新手预期管理
他 2007 年后约一年用积累的经验与启动资金开了真实账户,多家经纪商都开过。高光月赚 1000%+,黑暗期爆仓到 0 甚至负(穿仓)。他认为自己 30 岁,最坏经验已留在过去。这种坦诚在营销号泛滥的今天极罕见。
中文社区常见“跟单暴富”话术,但职业选手自述总账略红,说明算法交易不是提款机。建议新手用 MT5 策略测试器做至少 3 年品种回测,再用极小实盘验证,再逐步加仓。
给中文 MQL5 开发者的实操清单
结合访谈与当下 MT5 环境,可落地动作包括:用多品种回测验证低相关组合;以均线变体为信号主干,避免指标通货膨胀;在 EA 中写入动态手数函数;用 ATR 过滤低波动;定期重训练或引入轻量自学习模块;分离竞赛参数与实盘参数集。
- 创建多货币 EA 时,用 #include <Trade/Trade.mqh> 统一管理订单
- 用 FrameAdd/FrameNext 做跨品种信号同步
- 用 OnTester 优化自定义目标而非仅净利润
- 在真实环境前用 MT5 内置云网络做鲁棒性测试
// 多货币遍历示例
string pairs[4] = {"EURUSD","USDCHF","EURJPY","GBPJPY"};
for(int i=0;i<4;i++)
{
double ma = iMA(pairs[i], PERIOD_H1, 20, 0, MODE_SMA, PRICE_CLOSE);
// 各品种独立判断信号
}