You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求开发MT5平台挂单成交触发提醒功能的指标/EA(Expert Advisor)

MT5挂单成交提醒EA实现方案

核心实现逻辑

你需要的功能属于订单状态监控类EA,无需绑定K线指标逻辑,全程在EA的事件回调中完成监听即可,核心实现步骤如下:

  • 首先在EA初始化阶段,遍历当前账户所有未成交的Pending类型挂单,缓存所有符合触发条件的挂单ticket编号,避免遗漏程序启动前已经创建的挂单
  • 注册OnTrade交易事件回调,MT5平台每发生一笔订单状态变动都会触发该回调,你只需要在回调中判断变动的订单是否是从「待成交挂单」状态转为「已成交」状态即可
  • 订单状态判断逻辑:
    1. 先通过OrderGetInteger(ORDER_TICKET)获取变动订单的ticket
    2. 用OrderGetInteger(ORDER_TYPE)判断订单类型是否属于以下4种挂单类型:ORDER_TYPE_BUY_LIMIT、ORDER_TYPE_SELL_LIMIT、ORDER_TYPE_BUY_STOP、ORDER_TYPE_SELL_STOP
    3. 再用OrderGetInteger(ORDER_STATE)判断状态是否为ORDER_STATE_FILLED,满足以上条件即可判定为目标挂单成交
  • 提醒模块实现:
    • 弹窗提示直接调用Alert()函数即可,会自动弹出MT5系统提示窗并触发默认提示音
    • 要做有声/无声开关的话,可以在EA的输入参数里加一个布尔类型的开关变量,触发提醒时先判断开关状态:如果开启有声模式调用PlaySound()函数播放自定义wav音频,无声模式就只弹窗或者打印日志即可
  • 可选优化:可以在EA参数里加提醒内容自定义配置,支持自定义显示成交订单的品种、手数、成交价格等信息

核心代码片段参考

// 输入参数
input bool EnableSound = true; // 开启声音提醒
input string SoundFileName = "alert.wav"; // 提醒音频文件名
input bool EnablePopup = true; // 开启弹窗提醒

// 交易事件回调
void OnTrade()
{
   // 遍历最新的订单变动
   for(int i=0; i<OrdersTotal(); i++)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         ENUM_ORDER_TYPE order_type = (ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE);
         // 判断是否为目标挂单类型
         bool is_target_pending = (order_type == ORDER_TYPE_BUY_LIMIT || order_type == ORDER_TYPE_SELL_LIMIT || 
                                  order_type == ORDER_TYPE_BUY_STOP || order_type == ORDER_TYPE_SELL_STOP);
         if(is_target_pending && OrderGetInteger(ORDER_STATE) == ORDER_STATE_FILLED)
         {
            string symbol = OrderGetString(ORDER_SYMBOL);
            double volume = OrderGetDouble(ORDER_VOLUME);
            double price = OrderGetDouble(ORDER_PRICE_OPEN);
            string alert_text = StringFormat("挂单已成交:%s %s 手数:%.2f 成交价格:%.2f", 
                                             EnumToString(order_type), symbol, volume, price);
            
            // 触发提醒
            if(EnablePopup) Alert(alert_text);
            if(EnableSound) PlaySound(SoundFileName);
            // 无声模式下可选择仅打印日志
            Print(alert_text);
         }
      }
   }
}

注意事项

  • 音频文件需要放到MT5安装目录下的Sounds文件夹中,否则PlaySound函数会调用失败
  • EA需要开启自动交易权限,否则无法捕获交易事件回调
  • 如果需要监控所有历史挂单的成交状态,可以在初始化阶段遍历ORDER_HISTORY模式下的历史订单做匹配

内容的提问来源于stack exchange,提问作者Abhishek Pandey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:36:04