首页 / 交易学院 / 小布知识库 / ATC冠军访谈:新手EA生存之道
ATC冠军访谈:新手EA生存之道
🤖

ATC冠军访谈:新手EA生存之道

从物理教师到工厂保安,一年上手MQL5的实战心得

MQL5开发 难度 · 入门 2026-04-28 6 分钟阅读
#MQL5#ATC2011#EA开发#趋势策略

一、受访者背景:半路出家的交易者

Ilnur Khasanov(论坛ID aharata)来自俄罗斯巴什科尔托斯坦的斯特尔利塔马克,2005年毕业于物理数学系,曾服役并从事过保安、销售、采购等工作,2009年创业因金融危机失败。他在2010年锦标赛前一个月才接触外汇,先手动交易 demo 盈利,实盘亏损后转向自动化。2011年锦标赛时,他仅用一年时间便凭借自写EA稳居前十,证明非科班出身也能在量化领域取得成绩。

他的编程经历始于1998年,熟悉 Basic、Pascal、Delphi、C、PHP 等语言,但专攻交易策略仅一年。他认为自己的IT背景能快速验证EA想法,并直言对面向对象编程(OOP)有近乎宗教般的热爱,而MQL5原生支持OOP正是吸引他的核心点。

✦ 给新手的建议
如果你已有其他语言基础,直接学MQL5并不难;若完全没有编程经验,从‘Hello World’开始,其余就是循序渐进的练习。

二、为什么从MQL5直接起步

Ilnur 没有经历过 MQL4 的阶段,一开始就写 MQL5。他表示官方文档、社区和文章组织得非常清晰易懂,质量在其他地方很难找到;尤其是MQL5支持类、继承、封装等OOP特性,让他可以像写现代软件一样组织EA逻辑,而不是堆砌过程式代码。

他认为MQL5的参考手册(CHM/PDF)和论坛已经足够自学,不需要额外找教程。对于习惯C++的人,MQL5的语法过渡平滑;对于老牌MQL4用户,则需要适应严格类型与标准库的变化。

三、EA设计理念:简单但带自优化

他的锦标赛EA基于移动平均类趋势指标,用另一个指标过滤入场信号,在5分钟周期上运行。由于止损较大,交易频率偏低。EA内部实现了部分参数自优化,但重启后优化结果会丢失——他坦言这并非最初计划提交的版本,而是原方案表现太差后紧急替换的。

他相信优秀策略可以像爱因斯坦方程一样‘伟大而简单’。在开发时,他会持续寻找更优EA,一旦发现更好的就暂时搁置旧的。这种迭代思维比死磕单一模型更健康。

⚠ 常见坑
自优化代码若依赖运行时内存状态,在遇到平台重启、重新编译后参数归零,会导致实盘表现和回测不一致。竞赛EA尤需注意这一点。

四、风控与资金管理的关系

在被问及‘高盈利策略’与‘高效资金管理’孰重时,Ilnur 指出策略本身是根本,资金管理只是策略的一部分,两者不可偏废。他举例锦标赛中 notused 的EA,正是二者结合得当才稳定。他的EA使用了隐藏止损、自定义 trailing stop 以及通道边界排除区,而非完全依赖标准库。

他认为交易者不必多疑,但需谨慎、清醒。经验是最宝贵的资产,偶尔需要被‘踢一脚’才能行动。这种务实心态让他敢于在亏损后换策略、在竞赛中紧急换EA。

五、标准库的使用与代码风格

提交版本的EA删除了所有注释,也未积极使用标准库。原因有二:一是他习惯自己写止损、通道逻辑;二是他难以阅读他人代码,标准库仅用于临时验证。竞赛版刻意保持‘沉默’,不在专家日志输出信息,降低暴露思路的风险。

这提醒我们:标准库能加速开发,但深度定制策略往往需脱离模板。新手可先学标准库 CTrade、CIndicators 等封装,再逐步重写关键模块。

// 示例:Ilnur风格的趋势EA核心片段(简化示意,非原文完整代码)
#property strict
#include <Trade/Trade.mqh>
CTrade trade;
int ma_handle;

int OnInit(){
   ma_handle = iMA(_Symbol, PERIOD_M5, 20, 0, MODE_SMA, PRICE_CLOSE);
   return(INIT_SUCCEEDED);
}

void OnTick(){
   double ma[1];
   CopyBuffer(ma_handle, 0, 0, 1, ma);
   double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
   if(bid > ma[0] && PositionsTotal()==0){
      trade.Buy(0.1, _Symbol);
   }
}

六、对非程序员交易者的建议

Ilnur 玩笑道:成功的交易者可以雇程序员,不成功的可以雇编程教练。实际上他认为学任何语言都从‘Hello World’开始,剩下的就是‘文书工作’(指反复练习)。MQL5社区有大量中文文章与示例代码,中文交易者完全可借助翻译工具跨过语言障碍。

他鼓励人们至少写个程序提交锦标赛,才有赢的机会。被动等待永远不会产生收益,这一态度对犹豫是否学编程的主观交易者尤其重要。

✦ 学习路径
先读MQL5参考手册前几章,跑通官方EA模板,再改参数做自己的指标,最后封装成EA。

七、对竞赛与社区的观察

他提到多名2011锦标赛选手(如 Integer、notused、AM2、Lizar 等)给他启发,尤其欣赏简单却富有想法的代码。他认为竞赛不仅是比收益,更是吸收无形创意、结识同好的场所。即便不常发帖,只读论坛和文章也能进步。

对于多币种EA,他承认羡慕 ias 的爆发,但自认不熟悉,计划下届再尝试。这种‘承认盲区、分步扩展’的思路,比盲目追求复杂系统更稳健。

八、总结:一年新手的启示

Ilnur 的案例说明:在MQL5时代,背景不是壁垒。清晰文档+OOP+社区,让物理教师也能做出前十EA。关键是用工程思维迭代策略、诚实面对回测与实盘缝隙、把风控写进代码而非挂在嘴边。中文交易者可将他的路径本地化:用中文站文章入门,以5分钟趋势为练手起点,逐步加入自优化与自定义止损。

最后他强调,EA不会永远适应市场,经验与下一届的新想法才是持续力。对于想走PAMM或资管路线的交易者,一个高质量策略胜过十个粗糙系统。

常见问题

可以。先从官方文档的‘Hello World’示例入手,再改官方EA模板参数,配合MQL5中文站文章练习。Ilnur认为其余就是反复写代码的‘文书工作’。
MQL5原生支持面向对象(类、继承),类型更严格,标准库更现代;MQL4偏过程式。新手若无旧代码负担,建议直接学MQL5,文档和社区质量更高。
将优化结果写入文件或全局变量持久化,或在OnInit中基于近期行情重算。Ilnur的竞赛EA因未持久化,重启后优化失效,实盘需避免。
若止损大、过滤严,交易频率低属正常。他的EA即用另一指标过滤仅在5分钟趋势确认后入场,波动大时仍可能空仓数周。