ATC冠军访谈:MACD EA实战启示
从Igor Korepin的2011自动交易锦标赛经验学策略与风控
谁是 Igor Korepin(Xupypr)
Igor Korepin 在 MQL 社区使用的昵称是 Xupypr,这个词在俄语中意为“外科医生”,但实际上来源于他学生时代玩 Counter Strike 游戏时的化名,与他的专业或工作并无关联。他自 2005 年开设第一个真实账户接触外汇与当时 MetaTrader 3 终端,一年后开始学习 MQL4 编程。在 2011 年自动交易锦标赛(ATC 2011)中,他开发的 EA 名为 cs2011,曾凭借远超第二名的余额冲到榜首,虽然后续被其他选手反超,但开局表现令人印象深刻。
Igor 本人并非职业交易员,而是一名工程师。他表示交易对许多人来说像游戏,带有肾上腺素与赌性,但只有极少数人能将其变成职业。他参与 mql4.com 社区较早,但在 ATC 2011 时并未深入 MQL5.community,原因是生活重心变化、时间有限,不过他认为 MQL5 只是增加了面向对象特性,依然可以用类似 MQL4 的过程式方法编写,未来仍可能回到 MQL5 开发。
cs2011 策略的核心:简单 MACD
根据 Igor 的描述,cs2011 使用的是“简单 MACD”逻辑。在 ATC 2011 初期,很多社区访客试图猜测其内部机制,而他最终决定公开源代码。原因有两个:一是若有人想购买这个表现出色的机器人,他以当前形态出售会感到羞愧;二是 EA 能登顶有一定运气成分,他预期会有质疑甚至指责,因此主动开源以正视听。
Igor 明确说明,该 EA 是他在 MQL5 下的第一次尝试,代码本身并不具备真实账户使用价值。它交易频率很低,依赖好的开局,且在竞赛环境中不设止损只设止盈。这种“裸奔”式风险管理在实盘中绝不可取,但在锦标赛“不进则退”的规则下,由于账户资金充裕,可以承受几乎任意回撤。
为什么锦标赛 EA 常无止损?
在访谈中,Igor 被问及为何 EA 只放置 Take Profit 而不用 Stop Loss。他回答称,由于 EA 交易活性很低,他甚至没有尝试添加止损,而将希望寄托于比赛开始阶段的幸运表现。当账户已有足够浮盈和资金后,便可以抵御几乎所有回撤。他强调,这类交易在真实生活中不可接受,但锦标赛规则鼓励收益最大化,属于“破釜沉舟”的做法。
从风险管理角度看,无止损意味着价格反向运动时可亏损超过预期,甚至爆仓。但在 ATC 这种以余额为排名依据、初始资金统一且周期有限的比赛中,选手往往用极端策略博取名次。普通交易者应从中学到:任何策略必须定义退出机制,止损失败不可怕,可怕的是没有计划。
- 竞赛 EA 重收益轻防护,实盘必须反转思路
- 低交易频率不代表低风险,无止损即无限风险
- 幸运开局不可复制,实盘需稳健先验
多货币测试与 MT5 测试器的优势
MetaTrader 5 测试器在当年已支持多货币策略回测与多线程优化。Igor 表示自己曾尝试编写简单的多货币机器人,但真正成熟的多货币 EA 需要周全的策略,例如同时考量多个品种走势,甚至利用货币指数进行分析。他认为 ias(当时另一领先 EA 作者)的成功在于捕捉强势运动并优秀地保护利润,其 EA 盈利超 10 万美元。
MT5 还提供基于优化结果的前向测试(forward testing),Igor 承认自己没用过但认为极其有用。对中文交易者而言,MT5 相比 MT4 的核心优势正在于:多品种同测、云优化、多线程加速,以及更严谨的 tick 级回测。若你开发跨品种对冲或指数套利类策略,MT5 是必备环境。
从访谈看盈利策略的原则
当被问及盈利交易策略的原则时,Igor 认为原则可以多样,结果才重要。他从未接单开发 EA,也不认为执行他人需求能带来灵感,灵感往往在不经意间出现。他建议关注 equity 曲线、最大回撤与相对回撤,而非单纯看余额。他也对多货币交易中通过长持仓位获得平滑权益曲线表示兴趣。
这给普通交易者的启示是:不要迷信“圣杯”或某种固定指标组合;应建立自己的评估体系,以资金曲线质量为首要标准。另外,锦标赛中暴露的许多思路(如 ias 的加仓与部分利润锁定)值得研究,但无法仅凭历史精确反推策略,更好的做法是借鉴后自研。
- 结果导向:实盘盈利胜过理论完美
- 关注权益曲线与回撤,而非排名虚高
- 借鉴他人思路,但必须自建系统
公开源码的动机与社区价值
Igor 在 EA 登顶后公开 cs2011 源码,这一行为在竞赛中并不常见。他坦言,若卖这样一个靠运气居榜首的 EA 会羞愧,且开源可避免后续质疑。源码本身简单,不适合实盘,但作为学习样本有价値:它展示了如何用 MQL5 写过程式 EA、如何处理订单与止盈。
对于中文学习者,直接阅读原版 MQL5 代码(如 ATC 公开仓库)比看二手说明更有效。社区访谈的价值在于把冷冰冰的机器人背后的人和经验呈现出来,帮助后来者少走弯路。Igor 也提到,希望锦标赛页面增加回撤、盈利交易百分比等数据,便于更专业地评估。
给中文交易者的实操建议
结合 Igor 的经验,我们总结几条可落地的建议。第一,先用 MT5 策略测试器做单品种指标策略(如 MACD 交叉)的回测,熟悉 OnTick、OrderSend 等基础结构;第二,任何 EA 必须包含止损或等效资金保护,可用固定点数或 ATR 动态止损;第三,若涉及多品种,利用 MT5 多货币测试与前向测试验证稳健性;第四,把竞赛 EA 当反例,重点学其结构而非参数。
下面给出一个最小可运行的 MQL5 片段,演示以 MACD 为主线、带止损的订单逻辑骨架(基于 Igor 思路但补足风控),你可以在 MT5 中新建 EA 并替换参数测试。注意:以下代码仅为教学示例,未含完整优化。
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
double macd_main = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
double macd_sig = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
static datetime lastTrade=0;
if(TimeCurrent()-lastTrade < 3600) return; // 每小时最多一次
if(macd_main > macd_sig && macd_main < 0)
{
double tp = SymbolInfoDouble(_Symbol,SYMBOL_ASK) + 500*_Point;
double sl = SymbolInfoDouble(_Symbol,SYMBOL_ASK) - 200*_Point;
CTrade trade; trade.Buy(0.1,_Symbol,SymbolInfoDouble(_Symbol,SYMBOL_ASK),sl,tp);
lastTrade = TimeCurrent();
}
}
//+------------------------------------------------------------------+
最后,Igor 对参赛者的寄语是“好运、好神经与耐心”。对实盘者同样适用:市场不缺机会,缺的是纪律与持久。通过这类老牌访谈,我们更能看清工具、策略与人性的关系。