MQL5 向导:无需编程即可创建 EA 交易程序(基础篇)
「用向导在 MT5 里零代码生 EA」
MT5 内置的 MQL5 向导能让不懂编程的人直接拼装出可跑的 EA。打开终端后从「文件 → 新建 → 智能交易系统(向导)」进入,按信号、资金管理、尾随止损三个模块勾选即可生成 .mq5 源文件。 该入口自 2013 年 12 月随官方文档公开,社区原帖浏览量达到 12 155 次、评论 33 条,说明零代码建 EA 的需求一直存在。生成后文件默认在 MQL5/Experts 目录下,编译即可加载到图表。 外汇与贵金属杠杆高、滑点大,向导产出的 EA 未经实盘检验,历史表现不代表未来,爆仓概率不低,先用策略测试器跑样本再上模拟盘。
向导生成 EA 前先看清模块架构的坑
做自动化交易系统,真正卡人的往往不是写单个算法,而是把信号、持仓追踪、资金管理这几块拼到一起还能跑通。MQL5 里用面向对象思路能明显减轻这套组装负担,但架构如果一开始画歪了,后面改一个模块就可能牵动整份源码重写,调试时间会成倍吞掉。 MetaQuotes 已经把策略类封装好了:在 MetaEditor 里直接勾选交易信号(现成 20 个)、追踪模块(4 个)、资金管理模块(5 个),就能自动吐出 EA 源码。光靠这些模块排列组合,就能摊出几十种即用型变体,不用从零写 C++ 风格框架。 外汇和贵金属品种波动大、杠杆高,自动生成的 EA 也只是概率优势,不等于能躲开连亏。先用向导跑通一套最小组合,再决定哪些模块该换成自己的类,比一上来手搓全盘更省事。
◍ 用向导十分钟拼出一个可跑的 EA 骨架
MT5 自带的 MQL5 向导能把现成类库拼成一套 EA 源码,省去从零写框架的功夫。基类藏在终端目录的 MQL5\Include\Expert\ 下,Signal、Trailing、Money 三个子文件夹分别装好交易信号、跟踪止损和资金管理的算法,向导扫一遍这些文件就能拼代码。 启动方式很直接:MetaEditor 里按 Ctrl+N 或点工具栏“新建”,选 Expert Advisor (generate)。第一步填 Name、Author、Link,并指定 Symbol 与 Timeframe 两个输入参数,前者限定品种、后者限定周期。 信号模块决定了建仓平仓逻辑。标准库一口气给了 20 种以上:CSignalMA 看均线、CSignalMACD 看 MACD、CSignalRSI 看相对强弱,甚至 CSignalITF 只做时间过滤。本例加的是 CSignalMA,参数图标高亮就能当输入变量丢进策略测试器做优化,灰色则是写死的值。 跟踪止损选 CTrailingFixedPips,靠 StopLevel 和 ProfitLevel 两个点数参数拖着仓位走;资金管理挑 CMoneyFixedLot,Lots 定手数、Percent 管最大回撤。点 Finish,Experts 目录里就生成 TestExpert.mq5——文件名和你填的 Name 一致,直接编译就能挂实盘观察,外汇贵金属波动剧烈,先开模拟盘验证信号逻辑。
「向导生成的 EA 骨架长什么样」
用 MQL5 向导点完信号、跟踪、资金模块后,吐出来的 EA 并不是一堆散函数,而是被 CExpert 类统一收口的架构。源文件头部先 #include 三个核心头:Expert.mqh 放 CExpert 本体,SignalMA.mqh 放均线信号 CSignalMA,TrailingFixedPips.mqh 与 MoneyFixedLot.mqh 分别管固定点数跟踪和固定手数。 输入参数分两截:前三个 Expert_Title、Expert_MagicNumber、Expert_EveryTick 是常驻项,换什么策略都在。Expert_EveryTick 设 true 时,任意有效品种来新报价就触发 OnTick 里的检查逻辑;设 false 则只在新柱起才跑,回测里这开关直接决定成交密度。 OnInit 里按固定顺序搭积木:先 ExtExpert.Init 失败返 -1;信号对象建好挂进 CExpertSignal 失败返 -2 到 -3;跟踪对象失败返 -4 到 -5;资金对象失败返 -6 到 -7。每个区间对应具体哪步错,调试时看返回码就能定位,不用逐行打印。 信号、跟踪、资金都就位后,ValidationSettings 校验一遍,再 InitIndicators 把用到的指标全初始化。之后 OnTick / OnTrade / OnTimer 全是调 ExtExpert 的对应方法,你自己写的策略逻辑其实被包在这几层子类里。想抠 CExpert 底层,去终端目录 MQL5\Include\Expert\expert.mqh 翻源码,外汇和贵金属杠杆高,这种自动 EA 实盘前务必在策略测试器跑至少半年 tick 数据。
class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| TestExpert.mq5 | class=class="str">"cmt">//| Copyright class="num">2012, MetaQuotes Software Corp. | class=class="str">"cmt">//| [MQL5官方文档] | class=class="str">"cmt">//+------------------------------------------------------------------+ class="macro">#class="kw">property copyright "Copyright class="num">2012, MetaQuotes Software Corp." class="macro">#class="kw">property link "[MQL5官方文档] class="macro">#class="kw">property version "class="num">1.00" class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| 包含文件 | class=class="str">"cmt">//+------------------------------------------------------------------+ class="macro">#include <Expert\Expert.mqh> class=class="str">"cmt">//--- 可用信号 class="macro">#include <Expert\Signal\SignalMA.mqh> class=class="str">"cmt">//--- 可用追踪止损 class="macro">#include <Expert\Trailing\TrailingFixedPips.mqh> class=class="str">"cmt">//--- 可用资金管理 class="macro">#include <Expert\Money\MoneyFixedLot.mqh> class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//| 输入参数 | class=class="str">"cmt">//+------------------------------------------------------------------+ class=class="str">"cmt">//--- EA交易的输入参数 class="kw">input class="type">class="kw">string Expert_Title ="TestExpert"; class=class="str">"cmt">// EA交易名称