请教,mql5,删除最后一个挂单,代码怎么写,谢谢

 

mql5,删除最后一个挂单,代码怎么写,谢谢

 
a

如图

//+------------------------------------------------------------------+
//|                                                       Test14.mq5 |
//|                                  Copyright 2023, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2023, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#include <Trade\Trade.mqh>
CTrade     m_trade;
COrderInfo m_ord;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetMillisecondTimer(1);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
  }
//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
  }
//+------------------------------------------------------------------+
//| 删除指定类型的最后挂单                                         |
//+------------------------------------------------------------------+
bool DeleteLastPending(const ENUM_ORDER_TYPE type, const long magic)
  {
   int ord_total = OrdersTotal();            // 获取持有的挂单总数
   ulong ord_ticket = 0;                     // 初始化挂单编号
   if(ord_total > 0)
      for(int i = 0; i < ord_total; i++)     // 由旧到新历遍挂单池
         if(m_ord.SelectByIndex(i))
            if(m_ord.Symbol() == _Symbol &&  // 指定相同的品种
               m_ord.OrderType() == type &&  // 指定相同挂单类型
               m_ord.Magic() == magic)       // 指定相同魔术编号
               ord_ticket = m_ord.Ticket();  // 获取符合条件的最后挂单编号
   return(m_trade.OrderDelete(ord_ticket));  // 如果删除成功返回true,否则返回false
  }
//+------------------------------------------------------------------+
 
bool tol_del_ete(ulong ticket)
  {
   if(ticket > 0)
     {
#ifdef __MQL5__
      while(OrderSelect(ticket))
        {
         MqlTradeRequest request = {};
         MqlTradeResult  result = {};
         request.action = TRADE_ACTION_REMOVE;
         request.order = ticket;
         if(!OrderSend(request, result))
            Print("tol_del_ete error");
         else
            return true;
        }
#else
      while(OrderSelect((int)ticket, SELECT_BY_TICKET) && OrderOpenTime() > OrderCloseTime())
        {
         if(OrderType() >= 2)
           {
            if(OrderDelete((int)ticket))
               return true;
            else
               Print("tol_del_ete error");
           }
        }
#endif
     }
   return false;
  }