Executando mais de uma EA de cada vez - página 4

 
Sneck55: Ela precisa diminuir se fechar uma ordem para corresponder ao que acontece na piscina, mas não se não fechar uma ordem. Se ele decreta sem fechar uma ordem, entra em um loop infinito.
Você pode levar um cavalo à água...
 
Sneck55:
Ele precisa diminuir se fechar uma ordem para corresponder ao que acontece no pool, mas não se não fechar uma ordem. Se ele decreta sem fechar uma ordem, ele entra em um loop infinito.

Se você não continuasse chamando OrderTotal() você não teria esse problema. Ligue para o total uma vez. Coloque-o em uma int. Use essa int. para loop.

Tendo dito isso, você leu minha resposta anterior? Todo esse loop é uma completa perda de tempo. Veja o seu código. Qual você acha que já é o valor do SellTicket?

         if(SellTicket!=0)
            {
            if(SmallMA>MediumMA)
            {
            for(Counter=0;Counter<=OrdersTotal()-1;Counter++)
               {
               SelectedOrder = OrderSelect(Counter,SELECT_BY_POS);
               if(OrderMagicNumber()==MagicNumber&&OrderSymbol()==Symbol()&&OrderType()==OP_SELL)
                  {
               //   while(IsTradeContextBusy()) Sleep(10);
                  Closed=OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),Slippage,Red);
                  if(Closed) SellTicket=0;
                  else Alert("Symbol: ",Symbol()," Ticket: ",SellTicket," unable to close sell order(s): sell ma convergence close routine");                  
                  }
            Counter--;               
                }
            }
            }
 
E irá consumir energia cpu ao longo do tempo.
 

Sim, e não é lógico já ter tido os valores necessários na EA e depois esquecê-los e arrastá-los através do pool de ordens para recuperá-los. Esse tipo de coisa só precisa ser feito como parte da recuperação do reinício.