Deletar todas as ordens pendentes

 
Ola gostaria de saber se existe algum comando ou algum scripty que delete todas as ordens pendentes?
 
// remove todas as ordens pendentes do ativo
  for(int i = OrdersTotal() - 1; i >= 0; i--) {
    if(OrderGetTicket(i) > 0) {
      //if((OrderGetString(ORDER_SYMBOL) == m_symbol.Name())
          //&& (OrderGetInteger(ORDER_MAGIC) == m_magic)) {
        MqlTradeRequest request = {0};
        MqlTradeResult result = {0};
        request.action = TRADE_ACTION_REMOVE;
        request.order = OrderGetTicket(i);
        if(!OrderSend(request, result)) {
          PrintFormat("CheckCloseAll - remove order - ",
                      __FUNCTION__, ": OrderSend error %d", GetLastError());
        }      
        ZeroMemory(request);
        ZeroMemory(result);
      }
    }
  }
ou
#include <Trade\Trade.mqh>

CTrade trade;

for(int i = OrdersTotal() - 1; i >= 0; i--) {
  if(OrderGetTicket(i) > 0) {
    trade.OrderDelete(OrderGetTicket(i));
  }
}
 

Não funciona.

valeu!!

 
livio1975:

Não funciona.

valeu!!

   Hello! 

   

   Bora deletar todas as ordens pendentes!


//Chamada da biblioteca (No inicio do código)
#include <Trade\Trade.mqh>
#include <Trade\OrderInfo.mqh>

CTrade m_trade;
COrderInfo m_order;     



  
//No escopo
for(int i=OrdersTotal()-1;i>=0;i--)   //Gire as ordens num bloco FOR
   {
    if(m_order.SelectByIndex(i))        //Select                               
    {
     if(m_order.Magic()==m_magic && m_order.Symbol() == Symbol()) //MAGIC 
     {
      m_trade.OrderDelete(m_order.Ticket());  //DELETE
     }
    }
   }   

//=======================( ^.^ )========================

   

   Té Mais!

 

Olá!


Eu implementei essas duas formas no meu código, mas nenhuma funciona.


Ele chega a deletar a primeira ordem, mas aí trava dentro da função OrderDelete(). Não retorna nada, nem executa nada que estiver depois da primeira chamada dessa função.


Não consegui identificar o porquê disso.


Alguém já passou por isso?