用于在以仓位为中心的 MetaTrader 5 环境中跟踪订单的虚拟订单管理程序·综合运用
(3/3)·当多个任意 EA 共用一个交易品种仓位,直接移植的 MQL4 订单函数会让追踪彻底失序
用测试EA验证虚拟仓与券商实盘的差异
这种体量的项目没法靠肉眼快速验完,我写了个 EA:VirtualOrderManaerTester.mq5,图上有按钮,能直接建、改、删、关虚拟单,不用真去券商下单。 图 6 里 M5 窗口挂了 EURUSD 买 0.1 手虚拟单,H4 窗口又挂了买 0.1 手虚拟单,注释行标得清楚;服务器状态栏却显示实盘买持仓 0.2 手。因为整体是净买入,灾难防护止损被摆在比 20 点硬止损更宽的位置。 图 7 换了相反方向的虚拟单对,两边各持一多一空,券商端持仓为零——这说明虚拟层跟券商账户是隔离的,外汇和贵金属杠杆高,拿这种隔离先跑逻辑再上实盘更稳。
「聚合多 VOM 的建仓订单视图」
单个 VOM EA 的视野被限制在自己的订单池里,跨实例的建仓分布看不见,复盘和干预都别扭。 为此单独写了一个轻量 EA:VOM_OrderDisplay.mq5,它把各 VOM 的建仓订单统一拉到一起显示,逻辑极简,不依赖复杂面板。 发行包里已带这个文件,直接丢进 MT5 的 Experts 目录编译挂上,就能在图表上看到所有 VOM 的开仓汇总。外汇与贵金属杠杆高,多 EA 同跑须防保证金连锁风险。 后续若有空会做增强版,用命令按钮按需改单、删单或平仓,但目前这版够用就好。
◍ VOM 框架的当前状态与遗留缺口
写这篇时 VOM 代码还停在 Beta,跟 MT5 本身一样没定型。它到底会成气候还是被遗忘,只能交给时间。回头对照第 3 节定的三个设计目标,落点已经比较清楚:社交性靠 VOM 交易函数把 EA 行为相互隔离,这一点做到了;稳定性在异常断线、订单部分成交上有一定表现,但真金白银跑起来估计还得补。 易用性交了份 .chm 帮助文档,策略测试器里也能跑——初步回测证明 VOM 能过测,但测试速度被拖慢了一截,产能优化还没做。 遗留清单里有几条硬骨头:VomGetLastError() 和 VomErrorDescription() 要补、配置要从文件读、各类止损得能跟踪。每发一版 MT5 Beta 都可能要改 VOM 保兼容,复杂软件里藏 bug 也正常。 开 MT5 把 VOM 包丢进策略测试器跑一遍,重点看回测耗时比原生 EA 慢多少,心里先有个数。
别急着下结论
VOM 发行包解压后,Experts\Virtual Order Manager 下要落 13 个 .mqh,外加 VOM_doc.chm;VOM EAs 子目录里另有 5 个 .mq5,其中 VOM_template_EA.mq5 是给你克隆自建策略的母版。chm 若双击空白,大概率是 NTFS 从网上下载带了锁定流,右键属性里点「解除锁定」即可,否则帮助页打不开。 有用户实测:第 2 版库在 MT5 净额结算账户编译后,virtualordermanager.mqh 第 855 行原填充模式会导致开单报错,改掉那一行才能正常发单。MT5 对冲账户本就能原生分仓,网格级别用独立 position 跟踪即可,VOM 更像是净额结算下的妥协方案,不是万能库。 外汇和贵金属杠杆高、滑点跳空频繁,净额结算下用虚拟订单管理复杂网格,回测和实盘偏差可能放大。先开 MT5 把 vom2_0.zip(616 KB)拖进数据文件夹验证一遍再谈改造。
MtRequest.type_filling=ORDER_FILLING_FOK; MtRequest.type_filling=SYMBOL_FILLING_FOK;