Eseguire più di un EA alla volta - pagina 4

 
Sneck55: Ha bisogno di diminuire se chiude un ordine per corrispondere a ciò che accade nel pool, ma non se non chiude un ordine. Se diminuisce senza chiudere un ordine va in un ciclo infinito.
Si può condurre un cavallo all'acqua...
 
Sneck55:
Deve diminuire se chiude un ordine per corrispondere a ciò che accade nel pool, ma non se non chiude un ordine. Se diminuisce senza chiudere un ordine va in un loop infinito.

Se non avessi continuato a chiamare OrdersTotal() non avresti avuto questo problema. Chiamate il totale una volta sola. Mettetelo in un int. Usa quell'int nel ciclo for.

Detto questo, hai letto la mia risposta precedente? L'intero ciclo è una completa perdita di tempo. Guarda il tuo codice. Quale pensi sia già il valore di 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 consumerà potenza di cpu nel tempo.
 

Sì, e non è logico avere già i valori necessari nell'EA e poi dimenticarli e cercare nel pool di ordini per recuperarli. Questo tipo di cose deve essere fatto solo come parte del recupero del riavvio.

Motivazione: