如何在MT4中完整拦截所有订单数据?
MT4跟单器开发:订单拦截与关键信息获取问题
我正在为MT4开发一款跟单器,此前已完成MT5版本的开发。在MT5中,可通过OnTradeTransaction事件轻松拦截所有由客户端发送且被交易服务器接受的订单,代码示例如下:
void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { // 订单拦截逻辑 }
该事件可以直接获取订单操作的完整上下文信息,但在MT4中并没有对应的便捷实现方式,目前只能通过遍历所有订单来获取信息,代码如下:
for (int i = 0; i < OrdersTotal(); i++) { if (!OrderSelect(i, SELECT_BY_POS)) { // 错误处理逻辑 } // 订单处理逻辑 }
这种遍历方式只能获取挂单的基础信息,无法获取以下关键内容:
- 滑点(Slippage)
- 平仓关联仓位(针对close-by订单)
- 明确的操作类型(平仓、平仓关联、删除、修改、发送,虽可通过订单字段间接推断,但不够直接)
我曾尝试通过包装OrderClose、OrderCloseBy、OrderDelete、OrderModify和OrderSend函数来拦截订单并获取相关信息,但这种方法无法覆盖用户手动下单的场景。请问是否存在可以完整拦截所有订单数据且不丢失关键信息的方法?
内容的提问来源于stack exchange,提问作者Woody1193
相关产品推荐
相关产品推荐

