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,且模块可在多个机器人间复用。