首页 / 交易学院 / MQL5 向导:不写代码也能生成 EA 交易程序
MQL5 向导:不写代码也能生成 EA 交易程序
🧩

MQL5 向导:不写代码也能生成 EA 交易程序

MQL5 编程 难度 · 入门 2013 10 分钟阅读
MQL5 向导标准类库EA 生成

MQL5 向导是什么、能生成什么

MQL5 向导是 MetaEditor 内置的代码生成器(Ctrl+N → Expert Advisor (generate))。它把标准库里预定义好的“信号模块 / 追踪模块 / 资金管理模块”拼装成一个完整 EA 框架,全程勾选即可,无需手写代码。标准库自带:约 20 个信号类(CSignalMA、CSignalMACD、CSignalRSI…)、4 个追踪类(CTrailingNone/FixedPips/MA/PSAR)、5 个资金类(CMoneyFixedLot/FixedMargin/FixedRisk/None/SizeOptimized)。

向导的模块架构

生成的 EA 以 CExpert 为主对象,内部持有 CExpertSignal*(信号)、CExpertTrailing*(追踪)、CExpertMoney*(资金)三个基类指针,外加 CSymbolInfo/CAccountInfo/CPositionInfo 等。OnInit 里把具体模块挂上去:

CExpert ExtExpert;
CExpertSignal* signal = new CExpertSignal;
ExtExpert.InitSignal(signal);
CSignalMA *ma = new CSignalMA;
signal.AddFilter(ma);            // 加均线信号作过滤器
CTrailingFixedPips *tr = new CTrailingFixedPips;
ExtExpert.InitTrailing(tr);      // 固定点数追踪止损
CMoneyFixedLot *mm = new CMoneyFixedLot;
ExtExpert.InitMoney(mm);         // 固定手数资金管理
ExtExpert.ValidationSettings(); ExtExpert.InitIndicators();

零代码生成 EA 的步骤

启动向导后:填 Name/Author;信号步选 CSignalMA 并 Add(参数可点图标在“输入变量/固定值”间切换);追踪步选 CTrailingFixedPips 设 StopLevel=30、ProfitLevel=50;资金步选 CMoneyFixedLot 设 Lots=0.1。点 Finish 即生成 TestExpert.mq5,可直接编译并在策略测试器回测/优化。

自定义模块的开发接口

向导只能组合符合标准库接口的模块。若要自己写信号,需继承 CExpertSignal(或相关基类),实现必要的虚函数(如 CheckOpenLong/CheckOpenShort 返回信号强度、CheckMoney 决定手数),并严格遵循向导要求的文件结构,放在 MQL5\Include\Expert\ 下对应子目录,向导才能识别并组合。参数在向导里以灰色图标固定则直接写死,蓝色图标则成为 input 变量可优化。

局限与实战建议

向导无法在 GUI 里设计复杂条件(多指标逻辑运算、非标准平仓规则、跨品种对冲),这类仍需手写或订购定制模块。建议:先用向导快速原型化、用策略测试器优化参数;单独开发/订购一个模块的成本低于整个 EA,且模块可在多个机器人间复用。

✦ 给不想编程的人
不想写代码时,优先用向导生成基础 EA(比如 MA 信号 + 固定点数追踪 + 固定手数),再用策略测试器优化参数。等你需要更精细的风控或特殊信号时,再基于 Expert.mqh 源码研读 CExpert 的方法做修改,比从零写省力得多。

常见问题

能编译运行,但默认组合(如单 MA 信号)通常只是基础策略。建议先在新品种/周期上回测优化参数,确认胜率和回撤可接受再考虑实盘,别直接拿默认参数上。
向导只识别符合标准库接口规范的模块:必须继承 CExpertSignal(或对应基类),放在 MQL5\Include\Expert\Signal 等正确子目录,且实现向导要求的虚函数。结构不对、路径不对,向导都扫不到。
简单策略、快速验证想法 → 向导。复杂逻辑(多指标组合、特殊平仓、跨品种对冲、神经网络信号)→ 手写或订购定制模块。向导生成的 CExpert 框架本身质量很高,即使手写也常基于它扩展。