Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 16.11.22
MarkusWilhelm89 MarkusWilhelm89 ist offline
Mitglied
 
Registriert seit: Aug 2020
Beiträge: 64
MarkusWilhelm89 befindet sich auf einem aufstrebenden Ast
Standard loop OrderHistoryTotal() --> Überladen

Hallo,
ich versuche für meinen EA eine Funktion zu erstellen, mit der ich abfrage, ob eine Order geschlossen wurde (bool = newClose).

Üblicherweiße nutze ich dafür den klassischen loop mit OrderHistoryTotal() und einem Zeitstempel.

Code:
bool              newClose       = false; 
static datetime   lastCloseTime  = 0;     
      
      for(int i=0; i<=OrdersHistoryTotal()-1; i++)
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) 
            if(OrderSymbol()==Symbol()&&OrderMagicNumber()==MagicNumber) 
               if(OrderCloseTime()>lastCloseTime) 
               {
                  newClose = true; 
                  lastCloseTime = OrderCloseTime();
               };

Leider wird gerade im Strategie-Tester der EA dann unglaublich langsam, je länger er läuft, da die Anzahl im OrderHistoryTotal() natürlich immer größer wird.

Daher die Frage, ob jemand einen alternativen loop-Ansatz hat um z.B.: nur die neuesten 50 geschlossenen Trades zu loop'en um die Schleife nicht gar zu groß werden zu lassen.

Einfach OrderHistoryTotal() durch zB 50 zu ersetzten und dann den loop mit i++ oder i-- laufen zu lassen, führt ja leider dazu, dass nach 50 History-Order keine weiteren mehr betrachtet werden... :-(

Für Tipps und Anregungen bin ich euch sehr dankbar