
如图
//+------------------------------------------------------------------+ //| 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;
}
mql5,删除最后一个挂单,代码怎么写,谢谢