Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 20.09.15
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.735
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

while-Schleifen sind immer mit Vorsicht zu benutzen, da es schnell passieren kann, dass der EA drin versackt.
Den u.g. Code würde ich erst einmal wie folgt schreiben:
Code:
bool Go = false;
while(!Go) {
   if(OrdersTotal() > 0) break;
}
Ob der Code einen Nutzen hat, hängt vom Rest ab. Fakt ist, dass der Rest nicht! durchlaufen wird, solange nicht eine MarketOrder geöffnet bzw. PendingOrder gesetzt wurde. Ich halte aber nichts von solchen "Endlosschleifen".
Und ohne das der EA in der Schleife hängt, würde ich diese Abfrage in eine separate Funktion packen oder noch besser direkt am Anfang in den Code einfügen, also:
Code:
void OnTick() {
...
 if(OrdersTotal() == 0) return;
...
}

//oder mit unnötigem Einsprung: 

void OnTick() {
...
 if (!CheckOrders()) return;
...
}

bool CheckOrders() {
   bool Go = false;
   while(!Go) {
      if(OrdersTotal() > 0) return(true);
   }
   return(false); //ist eigentlich überflüssig, aber ohne würde ein Warnhinweis kommen
}
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.