[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 313
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Nein. Sie müssen nicht bei jeder Iteration eine Variable innerhalb der Schleife deklarieren.
Ich hoffe, ich habe nichts gelöscht, sonst würde sich der Compiler über das Wort else beschweren:
bool Torg=true;
if(OrdersTotal()>0){for(int i=OrdersTotal()-1;i>=0;i--){
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderOpenTime()>=Time[0]) Torg=false;
}
}
}
Ich hoffe, ich habe nicht alles gelöscht, was ich brauche, sonst würde sich der Compiler über das Wort else beschweren:
if(OrdersTotal()>0){/// unnötige Zeile - wenn es keine Aufträge gibt, dann steht der Schleifenzähler auf Null und die Schleife wird nicht ausgeführt
for(int i=OrdersTotal()-1;i>=0;i--){/// alle Aufträge durchgehen
if (! OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// wenn kein Auftrag ausgewählt ist , dann...
if(OrderMagicNumber()!=MagicNumber) continue; //wenn die magische Zahl nicht unsere ist, dann weiter zu einer anderen Bestellung
if(OrderOpenTime()>=Time[0]) Torg=false;
}
// Was aber, wenn der Auftrag immer noch aus der Liste ausgewählt ist?
}
}
P.S.
Die Zeile, die bei der Auswahl eines Auftrags eine Fehlernummer anzeigt, sollte nicht aus irgendeinem Grund entfernt worden sein - es kann vorkommen, dass sie explodiert. Im Allgemeinen ist es besser, die Fehlerbehandlung dort einzusetzen, wo sie auftreten kann.
if(OrdersTotal()>0){/// unnötige Zeile - wenn es keine Aufträge gibt, steht der Schleifenzähler auf Null und die Schleife wird nicht ausgeführt
for(int i=OrdersTotal()-1;i>=0;i--){/// alle Aufträge durchgehen
if (! OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// wenn kein Auftrag ausgewählt ist , dann.
if(OrderMagicNumber()!=MagicNumber) continue; //wenn die magische Zahl nicht unsere ist, dann weiter zu einer anderen Bestellung
if(OrderOpenTime()>=Time[0]) Torg=false;
}
// Was aber, wenn der Auftrag immer noch aus der Liste ausgewählt ist?
}
}
bool Torg;
if(OrdersTotal()==0) Torg=true;
if(OrdersTotal()>0){
for(int i=OrdersTotal()-1;i>=0;i--){
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderOpenTime()>=Time[0]) Torg=false;
if(OrderOpenTime()<Time[0]) Torg=true;
}
}
}
Wie wäre es damit?
Was passiert, wenn Sie versuchen, diese Schleife im Skript selbst zu überprüfen? Nun, einfach durch Ausdrucken des Ergebnisses - welche Position die Variable Torg in verschiedenen Fällen einnimmt. Glauben Sie, Sie können es nicht selbst tun?
Das glaube ich nicht.
Herunterladen - es wird helfen - http://depositfiles.com/files/eg4fmn3bp