ATC冠军访谈:简策略EA生存之道
从物理教师到工厂保安,他用MQL5自研趋势EA挤进前十
一、受访者背景:半路出家的交易者
Ilnur Khasanov(论坛ID aharata)来自俄罗斯巴什科尔托斯坦共和国的斯特尔利塔马克市。他2005年毕业于斯特尔利塔马克国立师范院校物理数学系,曾服役并从事过保安、销售、采购等工作,甚至尝试创业但因2009年金融危机失败。在2010年锦标赛前一个月才接触外汇,最初手动交易模拟账户获利,实盘却亏损。他自述亏损源于 broker 问题、心理与策略多重因素,曾用 Woodie 策略写过一个基于均线且加载 WoodiesCCI 指标极慢的机器人,后来废弃。到2011年锦标赛时,他已只做自动交易并租用了服务器。
值得注意的是,Ilnur 从1998年就开始编程,学过 Basic、Pascal、Delphi、C、PHP,但接触交易策略编程仅一年。他受IT圈朋友赚钱效应启发转向外汇,甚至建过网站但最终荒废,因为‘外汇利润更大’。他的经历说明,具备编程底子的人在量化交易入门上具有明显加速度,但不代表一定能盈利,实盘心理与经纪商环境同样关键。
二、为何直接选择 MQL5 而非 MQL4
Ilnur 表示自己一开始就写 MQL5,且非常喜欢。他认为 MQL5 社区文档、指南、文章齐全且易懂,质量在其他地方难找,尤其推崇其面向对象编程(OOP)特性,笑称对 OOP 有‘宗教般感情’。相比 MQL4 的过程式语法,MQL5 的 OOP 让熟悉现代语言的开发者更容易组织复杂逻辑。
对于中文用户,MQL5 中文站(mql5.com/zh)已提供大量文档与参考手册。直接切入 MQL5 意味着可使用标准库、类封装与事件驱动模型,利于编写可维护的 EA。不过 Ilnur 也提到,自己提交锦标赛的版本几乎没用标准库,因为常用自定义影子止损、跟踪止损与通道边界排除区,且‘很难读别人代码’,标准库仅用于临时检查。
- MQL5 原生支持 OOP,适合有 C++/Delphi 背景者
- 官方文档结构清晰,新手无需到处找教程
- 标准库方便但非必须,核心逻辑可完全自写
三、参赛 EA 的设计思路与自优化
Ilnur 的 EA 在5分钟周期上运行,但交易不频繁。它跟随一个指标产生交易活动,用另一个指标过滤入场信号;低活跃度源于较大的止损层级。EA 内嵌了部分参数优化,但重启后优化失效——也就是说,它并非真正在线学习,只是启动阶段自适应。他透露,这并非原计划提交的机器人:原版在赛前表现极差,临阵换枪才紧急替换。
该 EA 基于移动平均线,属趋势型;面对赛事中四周不同的市场波动,依然留在前十。他认为最终结果是盈利导向,稳定与抗风险保护必不可少。他个人对交易的观点转变过两次:一次是实盘亏损后,一次是开始盈利后(月收益约10%–20%)。在他看来,交易是好生意,无需季度报表、员工与官僚文书。
四、与其他方案的对比:多货币与简单生成器
当被问及是否后悔没提交多货币 EA(参考选手 ias 的飙升),他说不后悔,因为不熟悉多货币机器人,但下届准备提交并已有想法。他欣赏 AM2 的 EA‘简单却是好点子生成器’,也关注 Integer 的图表、notused 的运作,甚至想改后用 anuta 的 EA。对比可见:复杂多货币系统可能短期爆发,但简单趋势单品种系统在未知行情中反而‘存活’概率高。
从 ATC 2011 群体看,有人用永不平亏仓、加仓的极高风险多货币策略(如 yyy999),也有人像 Ilnur 用大止损慢节奏趋势 EA。两种路线反映量化理念分歧:前者博期望暴利,后者求稳。对普通中文交易者,先理解单品种趋势逻辑比盲目堆多货币更安全。
- 单品种趋势+大止损:低频率、抗波动、易维护
- 多货币加仓:高爆发、高回撤、需深厚风控
- 简单指标组合过滤:开发快、易排查问题
五、策略与资金管理谁更重要
Ilnur 明确回答:策略本身最重要,资金管理是策略的一部分,二者都重要。他举例 notused 的 EA 能清晰体现两者权重。他认为只需一个高质量策略而非多个,若真有‘超级系统’,会开 PAMM、建银行直至自己当经纪商。这种‘质量优于数量’的观点,对沉迷堆指标的新手是一记清醒剂。
在 MQL5 开发中,资金管理常通过 CTrade 类与自定义 lot 计算实现。下面片段演示以固定比例风险计算手数(非 Ilnur 原码,仅为说明通用做法):
double CalculateLot(double riskPercent, double stopPoints)
{
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double riskMoney = accountBalance * riskPercent / 100.0;
double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double lot = riskMoney / (stopPoints * tickValue);
return NormalizeDouble(lot, 2);
}
六、给非程序员交易者的学习建议
被问及不会编程怎么办,Ilnur 调侃:成功交易者雇程序员,不成功雇编程老师;正经说,任何语言都从‘Hello World’开始,其余是‘文书工作’。MQL5 参考手册即最佳起点。他本人从显示 Hello World 消息入门,说明门槛没想象高。
中文用户可利用 MQL5 向导(EA Wizard)或社区免费代码改写。关键是先想清逻辑:入场条件、过滤、止损、退出。代码只是把规则翻译给终端。与其恐惧编程,不如把交易规则写成语序清晰的步骤,再找片段拼接。
七、社区交流与心理特质
Ilnur 在 mql5.com 发帖不多,但常读论坛与文章,称其为‘完美网站’。他吸收想法多为无意间,如前届 Boris Odintsov 的帖子。他认为竞赛让人渴望学习,也‘嫉妒权威’从而自驱。关于交易者是否该多疑,他倾向谨慎、恰当、觉醒,而非怀疑一切;认为人需被‘踢醒’去行动,经验是最宝贵财富。
这对中文交易者的启示是:别只潜水,精选少数高质量作者跟踪;用锦标赛公开 EA 做反向工程教材;保持行动力,先提交个程序才有赢的可能。Ilnur 正是赛前一个月才入行,却因‘至少写并提交了程序’获得前十席位。
- 少发帖但精读文档与论坛
- 从往届选手代码学实战结构
- 用‘谨慎+行动’替代无谓多疑
八、结语与可复用要点
Ilnur 的 ATC 2011 之旅证明:一年外汇经验、简单均线趋势 EA、内嵌有限自优化、大止损与双指标过滤,足以在公开赛存活前十。其成功不在复杂度,而在规则清晰、执行纪律与 MQL5 高效开发。中文量化新手应优先掌握单品种趋势框架、OOP 基础与风险管理嵌入,而非追逐黑箱多货币神话。
原文由 MetaQuotes 译自俄文,链接 https://www.mql5.com/zh/articles/548 。所有材料版权归 MetaQuotes Ltd.,本文仅作教学蒸馏。自动交易锦标赛(ATC)后续停办,但公开 EA 思路仍值研习。