MQL5 Wizard:新版本(基础篇)
📘

MQL5 Wizard:新版本(基础篇)

第 1/2 篇

◍ MQL5 向导在 build 439 里的架构转向

MT5 在 2013 年 11 月 5 日推送的 build 439 里重做了 MQL5 向导,核心变化是允许按更灵活的交易规则直接生成 EA,不再被旧模板绑死。 这次更新值得老用户重开向导看一眼:以前生成的 EA 架构偏死板,新版本把信号、资金管理和交易执行的逻辑拆得更开,改规则不用动整体框架。 外汇和贵金属杠杆品种波动剧烈、风险极高,用向导出的 EA 先在策略测试器跑历史数据,别直接上实盘。

从傻瓜式向导到类重载的坑

MQL5 向导最早定位是给不懂 MQL5 语言的人用的:读一篇《用 MQL5 Wizard 创建您自己的 EA 交易程序》就能拖出一套带源码的 EA,结构拆成信号、仓位跟踪、风险与资金管理三个模块,各自挂在一个类上。标准库里那组现成类,确实能让你基于已被验证的模块拼出机器人,改行为基本靠改参数和继承类。 但老版本有两个硬伤。一是入门程序员就算看了自定义类编写范例,也经常接不住——抽象层叠上来就懵。二是哪怕只是想把某个交易逻辑稍微改一下,也得从零写一个新类,复用成本极高。 MetaQuotes 后来根据反馈重做了向导,新版本在模块扩展和类复用上松了绑。外汇与贵金属杠杆高、滑点跳空频繁,直接用向导生成的默认参数实盘前务必在 MT5 策略测试器跑一遍历史数据。

「信号层里的投票机制怎么搭」

老版 MQL5 向导自己写交易信号很别扭,新版本把这件事按‘简单组合’重做了。核心改动在 CExpertSignal 这个基类:任何信号都算一层‘顾问’,顾问也能再挂自己的顾问,一层层往下套,单个信号里顾问上限是 64 个。 新加的方法不是在价格方向上报一个死值,而是做‘投票’。每个顾问按自己内嵌的市场情形算法表态,比如基于随机动量的信号能认出反转、背离这类结构,然后由信号层汇总成多空倾向。 为了不让决策只看当前图表,现在每个参与投票的信号都能从别的品种或别的时间周期取数据。也就是说,你可以用 EURUSD 的 H1 加 XAUUSD 的 M15 共同喂给一个信号做判断。标准库里已经预置了 20 个基于不同指标的直接可用信号,开 MT5 在向导里就能勾。 外汇和贵金属波动大、杠杆高,这种多源投票只是提高信号维度,不表示方向判断概率必然占优,实盘前请在策略测试器里跑一遍自己的参数组合。

◍ 信号投票怎么算出开仓信号

MT5 里用向导拼 EA 时,信号模块内部其实跑了一场加权投票。每个子模块先在自己识别出的市场情形里挑最强的那条,给出 -100 到 +100 的预测值,负号看跌、正号看涨,绝对值就是情形强度。 各子模块预测再乘上设置里的 Weight(0~1.0),全部加总后取算术平均,得到模块级信号。比如某刻三个顾问输出 -100、+60、-54,平均就是 (-100+60-54)/3 = -36.6,即强度 36.6 的卖出倾向。外汇和贵金属波动剧烈,这种加权结果只代表概率倾向,不等于价格必然朝该方向走。 最终是否下单,看 ThresholdOpen 和 ThresholdClose 两个门槛(0~100)。信号绝对值越过 ThresholdOpen 才允许建仓,越过 ThresholdClose 才允许平仓。 跑两个具体数感一下:EA 设 ThresholdOpen=20,MA 模块权重 0.4、随机动量模块权重 0.8。选项1中 MA 穿越看涨强度 100,随机动量顶背离看跌强度 80,加权平均 (0.4*100 + 0.8*(-80))/2 = -12,未过 20,不开仓。选项2里 MA 穿越看涨强度降到 10,随机动量仍是 -80,加权平均 (0.4*10 + 0.8*(-80))/2 = -30,过门槛,触发短仓信号。 同样的指标组合,只因 MA 情形强度从 100 掉到 10,投票结果就从观望变成做空。调 Weight 或门槛值,能直接改变信号灵敏度,建议开 MT5 向导实测不同权重对历史行情的触发密度。

常见问题

基础篇架构转向后向导生成的类结构变了,老工程直接覆盖可能编译报错,建议新建向导工程再迁移逻辑。
坑主要在基类方法没写全就被子类调用,导致信号层静默失效,重载时务必把相关虚函数都实现一遍。
可以,小布能读取你的信号类结构并标出未实现的虚函数和明显逻辑断点,省去手动翻基类的时间。
每个信号模块输出多空权重,向导把它们汇总成一张投票表,权重超阈值的方向才进入下一层判断。
各信号投票先按类型归一化,再乘权重求和,总和越过开仓线且反向不占优时,才会生成实际下单指令。