Eu quero que o meu EA verifique e garanta que ele possa ter apenas uma ordem pendente no pool a qualquer momento, então eu escrevi o seguinte código para fazer isso:
int CheckOrders ()
{
//----
int i, encomendas;
bilhetes int [];
//----
ticket int = 0;
int total = OrdersTotal ();
//----
para (i = total; igt; = 0; i--) tickets [i] = 0;
//----
para (i = total; igt; = 0; i -) {
if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderMagicNumber () == magic_base OrderType () gt; 1) {
encomendas ;
tickets [i] = OrderTicket ();
Imprimir (tickets =, tickets [i]);
}
}
}
Imprimir (total =, total, ordens =, pedidos);
while (ordersgt; 1) {
para (i = total; igt; = 0; i -) {
if (ticket == 0 tickets [i] gt; 0) ticket = tickets [i];
if (ticketgt; tickets [i]) ticket = bilhetes [i];
}
if (OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES)) {
OrderDelete (ticket);
}
ordens--;
}
Imprimir (ticket = bilhete);
//----
retorno (0);
}
Ele exibe o número de pedidos pendentes no pool pelo mesmo EA corretamente, mas não excluirá os pedidos pendentes indesejados, pois sempre mostra os tickets [i] = 0. e, por isso, o OrderDelete (ticket) ganhou não funciona. Poderia por favor me dizer por que isso aconteceria?