Mehr als einen EA gleichzeitig ausführen - Seite 4

 
Sneck55: Es muss dekrementiert werden, wenn ein Auftrag geschlossen wird, um mit den Vorgängen im Pool übereinzustimmen, aber nicht, wenn kein Auftrag geschlossen wird. Wenn er dekrementiert, ohne einen Auftrag zu schließen, gerät er in eine Endlosschleife.
Man kann ein Pferd zu Wasser führen...
 
Sneck55:
Er muss dekrementiert werden, wenn eine Bestellung geschlossen wird, um mit dem übereinzustimmen, was im Pool passiert, aber nicht, wenn keine Bestellung geschlossen wird. Wenn er dekrementiert, ohne einen Auftrag zu schließen, gerät er in eine Endlosschleife.

Wenn Sie OrdersTotal() nicht ständig aufrufen würden, hätten Sie dieses Problem nicht. Rufen Sie die Summe einmal auf. Setzen Sie sie in eine int. Verwenden Sie diese int in der for-Schleife.

Abgesehen davon, haben Sie meine frühere Antwort überhaupt gelesen? Die gesamte Schleife ist eine völlige Zeitverschwendung. Sehen Sie sich Ihren Code an. Was glauben Sie, wie hoch der Wert von SellTicket bereits ist?

         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--;               
                }
            }
            }
 
Und es wird mit der Zeit Rechenleistung verbrauchen.
 

Ja, und es ist nicht logisch, dass man die erforderlichen Werte bereits im EA hat und sie dann vergisst und den Auftragspool durchforstet, um sie abzurufen. So etwas muss nur im Rahmen einer Neustart-Wiederherstellung durchgeführt werden.

Grund der Beschwerde: