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