Ich würde die Schleife rückwärts laufen lassen, d.h. die letzte geschlossene Order wird zuerst abgefragt.
Code:
int i = 0;
bool newClose = false;
static datetime lastCloseTime = 0;
for (i = OrdersHistoryTotal()-1; i >= 0; i--) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) {
if (OrderCloseTime() > lastCloseTime) {
newClose = true;
lastCloseTime = OrderCloseTime();
break;
} else break;
}
}
}
Diese Schleife wird sofort abbrechen, wenn eine geschlossene Order gefunden wird, deren Close-Time größer ist als die der Variablen lastCloseTime. Auch wird sie abgebrochen, wenn keine Order später als lastCloseTime gefunden wurde, um nicht unnütz alle historischen Orders abzufragen.
traderdoc