很多人对 EA 的印象还停在“要懂编程才能做”。其实 EA 的骨架就那几块:什么条件下进场、下多少手、什么时候出、亏到什么程度认输。把这几件事用中文说清楚,程序就能把它写成 MQL4/MQL5 源码。这篇把结构、策略类型、参数设计和回测的坑讲明白。
| 组成部分 | 作用 | 说需求时要交代什么 |
|---|---|---|
| 初始化 | 加载时做一次性设置:画面板、建指标句柄 | 要不要在图表上显示状态面板 |
| 行情驱动 | 每来一个价格(Tick)判断一次要不要动作 | 用哪些指标、什么条件才算信号 |
| 下单与仓位 | 开仓、加仓、平仓、改止损止盈 | 手数怎么定、最多几单、加仓间距 |
| 风控 | 止损止盈、总亏损上限、单量上限 | 亏多少停、盈利怎么保护 |
| 外部参数 | 把可调项做成 input | 哪些参数要能自己改 |
用均线、MACD、布林带之类判断方向,顺着方向进场,跌破某条线就出。需求要写清:用哪几个周期、金叉还是突破、止损多少点、止盈多少点、允许重仓信号叠加吗。
第一单亏了就加倍下第二单,靠回调一把回本。必须交代:手数阶梯(例如 0.01/0.01/0.02/0.03…)、加仓间距是固定点数还是固定金额、最大多少单、达到上限怎么处理。
每隔固定距离挂一单,靠震荡反复吃差价。要写清网格间距、总单量上限、是否带整体止盈、要不要允许周末持仓。
同时或先后持有多空两边,做价差或锁仓。要写清开锁条件、解锁条件、两边手数比例、总敞口上限。
盈利之后按固定间距继续加仓,把趋势利润做大。注意:如果你要的是“价格到了就直接成交”,那是市价加仓,不是挂单——这点在需求里一定要写明白,两种写法的行为差别很大。
把关键数值放在“外部参数”里,你改了不用重新编译、不用找作者改代码;同一份 EA 也能用不同参数跑不同品种。下面这些几乎都会做成外部参数:
如果你想把某些参数藏起来、只按你下发的值运行,可以用授权版:参数由服务器统一下发,客户那边即使看得到输入框也不生效。
如果不是把它当职业,而是想把自己的交易想法快速变成能跑的程序,最省事的路径是:用中文把规则写清楚(进场、出场、手数、加仓、风控、交易时段),交给编程工具直接生成 MQL4/MQL5 源码,然后在 MetaEditor 里编译、回测,觉得不对就继续用中文补一句需求改。
判断一个想法值不值得写,可以先用一句话自问:什么情况下开仓、什么情况下平仓、亏多少我认输。这三句说得出来,EA 就能写出来。
源码做出来之后,如果要交给客户或者代理,下一件事通常是加密与限时授权,见 《EA 加密与在线授权》。