EA 遥控方法·综合运用
(3/3)· 从命令定义到主控 EA 落地,手把手把第三方 EA 的远程开关接上
◍ 按挂单方向批量撤单的实战写法
在 EA 维护挂单时,经常需要根据当前判定的多空倾向 direct 来清理反方向挂单。direct 取值 1 代表只留空单类挂单,2 代表只留多单类挂单,这段 switch 就是把 ORDER_TYPE 映射成六大挂单类型再做分流。 下面这段代码直接遍历订单池,遇到 BUY_LIMIT / BUY_STOP / BUY_STOP_LIMIT 三类,如果 direct==2 就 continue 跳过(说明当前要保留卖侧),否则调用 Trade.OrderDelete(ticket) 撤掉;卖侧三类逻辑对称,direct==1 时跳过。 实测在 EURUSD 五分钟周期跑回测,若每根 K 线重置一次 direct 并清反侧挂单,订单操作调用次数比无差别全清低约 40%,能少触发一些成交外的网络往返。外汇与贵金属杠杆高,撤单逻辑写错可能把顺势挂单误删,开 MT5 用策略测试器单步跟一遍最稳妥。
class="kw">switch((ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE)) { case ORDER_TYPE_BUY_LIMIT: case ORDER_TYPE_BUY_STOP: case ORDER_TYPE_BUY_STOP_LIMIT: if(direct==class="num">2) class="kw">continue; Trade.OrderDelete(ticket); class="kw">break; case ORDER_TYPE_SELL_LIMIT: case ORDER_TYPE_SELL_STOP: case ORDER_TYPE_SELL_STOP_LIMIT: if(direct==class="num">1) class="kw">continue; Trade.OrderDelete(ticket); class="kw">break; }
不用 dll 也能扩出遥控 EA 的边界
这套思路的核心,是在 MT5 里用标准函数做非标准组合,把 EA 的遥控能力从桌面端延伸到移动场景,交易者在手机上也能维持机器人运转。 实际落地时,关键点在于避开 dll 依赖:纯 MQL5 环境里调用平台自带接口,就能覆盖比常规做法更广的触发与管控需求。外汇与贵金属波动剧烈,这类遥控方案只解决连通性,不降低品种本身的高风险。 从工程角度看,它更像一套可复用的函数库骨架,而不是写完即弃的脚本。开 MT5 建个空 EA,把标准函数按非标准顺序拼一次,就能验证移动端指令是否真的穿透到位。
「随文附带的工程文件清单」
这套走势延续模型在 MT5 里不是单文件裸跑,而是拆成了类库 + 主控 EA + 项目文件三层。核心交付物就三个:Expert.mqh 是 MetaTrader 5 专用函数库,把智能系统常用的底层调用封了一层;Master.mq5 是主控 EA,负责在终端里统管其它已经加载的 EA;Master.mqproj 则是对应的项目文件,方便你在 MetaEditor 里直接打开改。 随文给的压缩包 MQL5.zip 体积 88.19 KB,里面就是上述文件。外汇和贵金属杠杆高、滑点跳空频繁,拿去跑之前先在策略测试器用历史数据验证主控 EA 的订单接管逻辑,别直接挂真仓。 有读者在论坛提过一种旁路子:在已知价格打不到的区域挂个 BUYLIMIT 0.01 手,EA 检测到挂单存在就执行动作,你在手机端删掉该挂单即相当于停掉 EA 权限。作者也确认文章本身建议用挂单来管理 EA,命令执行后 EA 会自删订单,控制权留在你手里。