ATC冠军访谈:简易EA的实战启示
从Igor Korepin的MACD机器人看竞赛与实盘差异
谁是 Igor Korepin(Xupypr)
Igor Korepin 在 MQL 社区使用的昵称是 Xupypr,在俄语中意为“外科医生”,但这个名字并非来自职业或学业,而是学生时代玩 Counter Strike 游戏时的代号,后来一直沿用。他于 2005 年开设第一个真实账户,当时接触的是 MetaTrader 3 终端,一年后开始学习 MQL4 编程。在 2011 年自动交易锦标赛(ATC 2011)中,他开发的 EA 名为 cs2011,曾以接近第二名两倍的余额冲到排行榜首位,虽然后续未能守住领先,但起步表现令人印象深刻。
Igor 本人并非职业交易员,而是一名工程师。他表示交易对很多人来说像游戏甚至赌博,充满肾上腺素与试错,但只有极少数人能把“交易游戏”变成职业。他参加 ATC 更多是兴趣与对自由的向往,并非以此谋生。在 MQL5 社区他并不活跃,原因是个人生阶段时间优先级变化,没有精力投入 MQL5 编程,但他认为这只是暂时的,未来仍会接触 MQL5。
cs2011 策略:一个“简单 MACD”机器人
根据 Igor 的自述,cs2011 使用的就是“简单的 MACD”逻辑,这也是 ATC 官网描述中提到的内容。它没有复杂的开平仓条件,属于作者第一次尝试用 MQL5 写出的 EA。在竞赛初期,该 EA 交易频率很低,但凭借运气般的开局积累出巨大浮盈,一度拉开与第二名的差距。Igor 坦承自己很大程度依赖机器人起步阶段的幸运。
值得注意的是,Igor 后来主动公开了 cs2011 的源码。原因有两点:一是很多访客想购买这个在 ATC 表现优异的机器人,但他觉得以当前形态出售是“可耻”的;二是不希望被质疑或指责暗箱操作。他强调该 EA 不适合真实账户,也无止损设计,仅是竞赛产物。这种开放态度在当年的参赛者中并不常见,也为社区研究提供了素材。
为什么竞赛 EA 不设止损
在访谈中,Igor 被问到为何 EA 只设 Take Profit 而完全没有 Stop Loss。他解释:EA 在锦标赛中交易活跃度极低,他甚至没去尝试添加止损;同时由于起步资金优势明显,账户可以承受几乎任何回撤。这种“ sink or swim(不成功便成仁)”的逻辑只适用于锦标赛环境——账户是虚拟的,排名靠净值增长而非风险可控。
在真实交易中,缺少止损意味着价格反向运动可能吞没全部权益,因此 Igor 也承认这类方式在生活里不可接受。对于普通交易者而言,这个案例反向说明了风险管理的重要性:竞赛追求相对收益排名,实盘追求绝对生存。用竞赛参数跑实盘,是典型的认知错位。
- 竞赛账户:比净值增幅,可无止损扛单
- 实盘账户:比生存能力,必须限定最大回撤
- EA 设计前应明确目标环境,再决定风控模块
MQL4 到 MQL5 的迁移经验
Igor 有扎实的 MQL4 经验,但截至访谈时尚未深入 MQL5 社区。他指出 MQL5 虽然引入了面向对象的特性,但开发者仍可用类似 MQL4 的过程式写法,不必强行使用 OOP。真正阻碍他的是时间,而非语言难度。他的盈利策略“还在等待时机”,说明语言切换的门槛低于持续开发所需的精力门槛。
对于今天的中文交易者,MQL5 已是主流:支持多币种测试、多线程优化、前向测试等。若你熟悉 MQL4,迁移时可以先复用旧逻辑写成函数化 EA,再逐步用 class 重构。官方文档与本地编译器都免费提供,不必因为“看起来复杂”而停滞。
// 简单过程式 MACD 信号示例(非 cs2011 原码,仅示意)
#include <Trade/Trade.mqh>
CTrade trade;
int macd_handle;
trader OnInit(){
macd_handle = iMACD(_Symbol, PERIOD_H1, 12, 26, 9, PRICE_CLOSE);
return INIT_SUCCEEDED;
}
void OnTick(){
double macd_main[2], macd_signal[2];
CopyBuffer(macd_handle, 0, 0, 2, macd_main);
CopyBuffer(macd_handle, 1, 0, 2, macd_signal);
if(macd_main[1] < macd_signal[1] && macd_main[0] > macd_signal[0])
trade.Buy(0.1, _Symbol);
if(macd_main[1] > macd_signal[1] && macd_main[0] < macd_signal[0])
trade.Sell(0.1, _Symbol);
}
多币种测试与锦标赛格局
MetaTrader 5 测试器支持多币种策略与多线程优化。Igor 表示自己曾写过一个非常简单的多币种机器人,但真正的多币种 EA 需要周全的策略,同时考虑多个品种的运动,例如利用货币指数做联合分析。在 ATC 2011 中,后来居上的 EA by ias 正是凭借捕捉强动量和利润保护,盈利超过 10 万美元。
Igor 认为从技术角度,交易者几乎拥有构建“圣杯”的所有工具,只差直觉、耐心与运气。多币种测试让策略在历史中跨品种验证,避免单一品种过拟合。对于想提升稳健性的中文用户,MT5 策略测试器的多币种模式是必须掌握的基建能力。
前向测试与评估指标的建议
MT5 测试器提供基于优化结果的前向测试(forward testing),Igor 承认自己没用过,但认为这“无疑非常有用且必要”。前向测试能把样本外数据留给验证,降低曲线拟合风险。他同时从交易者视角建议锦标赛排行榜应补充回撤、盈利交易百分比等信息,而不仅看余额。
作为普通观察者,他更关注权益曲线(equity curve)包含的最大回撤与相对回撤,以及多币种下长期持仓带来的平滑度。这提示我们:评价一个 EA,不能只盯收益,必须结合回撤与稳定性。访谈类内容虽非技术文档,但能让人看到作者背后的权衡,对构建自己的评估框架有帮助。
- 看 EA:优先权益曲线而非余额曲线
- 关注最大回撤、盈利比、持仓周期
- 用前向测试确认优化不是过拟合
竞赛 EA 与真实交易的边界
有人质疑 cs2011 是专门为 ATC 设计、和真实交易无关。Igor 直接承认“确实如此,这不是秘密”。竞赛 EA 常常利用虚拟环境放大风险偏好,或用特定时间段动量取巧。真实交易需考虑点差、滑点、流动性断裂与心理压力。
因此,中文交易者在围观锦标赛或信号源时,应建立“环境映射”意识:排行榜前十的策略,实盘复制前必须做风险调整与品种适配。Igor 给参赛者的祝福是“好运、好神经、耐心”,这同样适用于实盘——利润属于能控制自己的人。