Parece alguma mensagem enviada indevidamente pelo próprio EA. Poste, pelo menos, a parte do código refere a exclusão de ordens.
void DeletarOrdens(ulong magicN) { MqlTradeRequest request = {0}; MqlTradeResult result = {0}; for(int i = OrdersTotal()-1;i>=0;i--) { ulong ticket = OrderGetTicket(i); ulong magic = OrderGetInteger(ORDER_MAGIC); string symbol = OrderGetString(ORDER_SYMBOL); if(magic == magicN && symbol == _Symbol) { ZeroMemory(request); ZeroMemory(result); request.action = TRADE_ACTION_REMOVE; request.order = ticket; if(!OrderSendAsync(request, result)) { Print("OrderSend error: ",GetLastError()); } } } }
Olá Lucas,
faltou somente ler a ordem, OrderSelect(Ticket) logo após OrderGetTicket(i).
Olá Lucas,
faltou somente ler a ordem, OrderSelect(Ticket) logo após OrderGetTicket(i).
Rogério, boa tarde.
Fiz a alteração conforme informado mas continua ocorrendo o erro, veja abaixo:
void DeletarOrdens(ulong magicN) { MqlTradeRequest request = {0}; MqlTradeResult result = {0}; for(int i = OrdersTotal()-1;i>=0;i--) { ulong ticket = OrderGetTicket(i); OrderSelect(ticket); ulong magic = OrderGetInteger(ORDER_MAGIC); string symbol = OrderGetString(ORDER_SYMBOL); if(magic == magicN && symbol == _Symbol) { ZeroMemory(request); ZeroMemory(result); request.action = TRADE_ACTION_REMOVE; request.order = ticket; if(!OrderSendAsync(request, result)) { Print("OrderSend error: ",GetLastError()); } } } }
2021.05.17 13:33:59.009 Trades '': cancel order #18373556 buy limit 5 WINM21 at 121845 sl: 121820 tp: 121995 2021.05.17 13:33:59.009 Trades '': cancel order #18373555 sell limit 5 WINM21 at 122445 sl: 122470 tp: 122295 2021.05.17 13:33:59.009 Trades '': sell limit 5 WINM21 at 122445 sl: 122470 tp: 122295 2021.05.17 13:33:59.058 Trades '': accepted cancel order #18373556 buy limit 5 WINM21 at 121845 sl: 121820 tp: 121995 2021.05.17 13:33:59.058 Trades '': accepted cancel order #18373555 sell limit 5 WINM21 at 122445 sl: 122470 tp: 122295 2021.05.17 13:33:59.059 Trades '': accepted sell limit 5 WINM21 at 122445 sl: 122470 tp: 122295 2021.05.17 13:33:59.059 Trades '': failed cancel order #18373556 buy limit 5 WINM21 at 121845 sl: 121820 tp: 121995 [Done] 2021.05.17 13:33:59.061 Trades '': failed cancel order #18373555 sell limit 5 WINM21 at 122445 sl: 122470 tp: 122295 [Done] 2021.05.17 13:33:59.062 Trades '': cancel #18373556 buy limit 5 WINM21 at market done in 52.965 ms 2021.05.17 13:33:59.062 Trades '': sell limit 5 WINM21 at 122445 sl: 122470 tp: 122295 placed for execution 2021.05.17 13:33:59.064 Trades '': cancel #18373555 sell limit 5 WINM21 at market done in 54.741 ms 2021.05.17 13:33:59.064 Trades '': order #18373578 sell limit 5 / 5 WINM21 at 122445 done in 55.299 ms 2021.05.17 13:33:59.065 Trades '': buy limit 5 WINM21 at 121835 sl: 121810 tp: 121985 2021.05.17 13:33:59.113 Trades '': accepted buy limit 5 WINM21 at 121835 sl: 121810 tp: 121985 2021.05.17 13:33:59.114 Trades '': buy limit 5 WINM21 at 121835 sl: 121810 tp: 121985 placed for execution 2021.05.17 13:33:59.116 Trades '': order #18373579 buy limit 5 / 5 WINM21 at 121835 done in 51.312 ms
Rogério, boa tarde.
Fiz a alteração conforme informado mas continua ocorrendo o erro, veja abaixo:
2021.05.17 13:33:59.059 Trades '': failed cancel order #18373556 buy limit 5 WINM21 at 121845 sl: 121820 tp: 121995 [Done]
2021.05.17 13:33:59.061 Trades '': failed cancel order #18373555 sell limit 5 WINM21 at 122445 sl: 122470 tp: 122295 [Done]
Erro bem estranho, qual o código de erro aparece na aba EXPERTS, isso é se aparece pois deu [done] !!!
Eu verifico também o status da ordem, não trabalho com modo ASSYNC e testo a exclusão antes de prosseguir,
bool ToDoCloseOrders() { for(int i = OrdersTotal() - 1; i >= 0; i--) { if(OrderSelect(OrderGetTicket(i))) if(OrderGetString(ORDER_SYMBOL) == _Symbol && OrderGetInteger(ORDER_MAGIC) == inpMagicNumber && OrderGetInteger(ORDER_STATE) == ORDER_STATE_PLACED && OrderGetInteger(ORDER_TYPE) > 1) { Ticket = OrderGetTicket(i); cTrade.OrderDelete(Ticket); while(OrderSelect(Ticket)) Sleep(5); if(cTrade.ResultRetcode() != 10009) { Print("Erro no delete: ", cTrade.ResultRetcode()); } } } flagOrderOn = false; return(true); }
Erro bem estranho, qual o código de erro aparece na aba EXPERTS, isso é se aparece pois deu [done] !!!
Eu verifico também o status da ordem, não trabalho com modo ASSYNC e testo a exclusão antes de prosseguir,
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Meu EA fica acusando algum erro que aparentemente não existe.
Eu faço o envio da ordem de cancelamento através do "OrderSendAssync" ou "OrderSend", o MT5 aceita a solicitação, depois ele apresenta mensagem de erro "failed cancel order #18362984 buy limit 5 WINM21 at 122035 sl: 122010 tp: 122185 [Done]" e depois a ordem é de fato cancelada "cancel #18362984 buy limit 5 WINM21 at market done in 53.014 ms".
Até então isso não me incomodava pois o objetivo final (cancelar a ordem) era atingido e só ficava aparecendo o erro lá no diário. mas ao tentar utilizar o VPS as ordens não estavam sendo canceladas.
Alguém sabe informar o motivo de dar falha no cancelamento e logo em seguida receber mensagem que o cancelamento foi executado?
Vejam abaixo o diário.