Ejecutar más de un EA a la vez - página 4

 
Sneck55: Tiene que decrementar si cierra una orden para que coincida con lo que ocurre en el pool pero no si no cierra una orden. Si se decrementa sin cerrar una orden se entra en un bucle sin fin.
Puedes llevar un caballo al agua...
 
Sneck55:
Tiene que decrecer si cierra una orden para que coincida con lo que ocurre en el pool pero no si no cierra una orden. Si decrece sin cerrar una orden entra en un bucle sin fin.

Si no llamaras continuamente a OrdersTotal() no tendrías ese problema. Llama al total una vez. Ponlo en un int. Usa ese int en el bucle for.

Dicho esto, ¿has leído mi respuesta anterior? Todo ese bucle es una completa pérdida de tiempo. Mira tu código. ¿Cuál crees que es el valor de 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--;               
                }
            }
            }
 
Y consumirá energía de la cpu con el tiempo.
 

Sí, lo hace, y no es lógico tener ya los valores necesarios en el EA y luego olvidarlos y buscarlos en el conjunto de órdenes para recuperarlos. Ese tipo de cosas sólo debe hacerse como parte de la recuperación del reinicio.

Razón de la queja: