Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 219
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
Ich wusste immer, dass es die Anzahl der Aufträge -1 enthält, d.h. OrdersTotal()-1 und alles funktionierte, aber ich begann ein Programm zu schreiben und plötzlich wird ein Auftrag nicht mehr gezählt, ich fragte nach OrdersTotal() und es gab mir die Gesamtzahl der Aufträge = 3, statt 3-1.
Was passiert?
Die übliche Form der Schleife in der Hilfe:
int total=OrdersTotal();
for(int pos=0;pos<total;pos++)
{
}
Das heißt, die erste Ordnung ist gleich Null.
Aber nein, in Wirklichkeit ist die erste Ordnung 1, was bedeutet, dass wir die Suche bei 1 und nicht bei Null beginnen sollten?
Haben die Metaquotes etwas falsch gemacht oder bin ich dumm?
Hallo, was ist mit OrdersTotal() los?
Ich wusste immer, dass es die Anzahl der Aufträge -1 enthält, d.h. OrdersTotal()-1, und alles hat funktioniert, aber ich habe angefangen, ein Programm zu schreiben, und plötzlich wird ein Auftrag nicht gezählt. Ich habe nach OrdersTotal() gefragt, und es sagt, dass die Gesamtzahl der Aufträge = 3 ist, anstatt 3-1.
Was passiert?
Die übliche Form der Schleife in der Hilfe:
int total=OrdersTotal();
for(int pos=0;pos<total;pos++)
{
}
Das heißt, die erste Ordnung ist gleich Null.
Aber nein, in Wirklichkeit ist die erste Ordnung 1, was bedeutet, dass wir die Suche bei 1 und nicht bei Null beginnen sollten?
Haben die Metaquotes etwas falsch gemacht, oder bin ich dumm?
Sie haben die Begriffe VERBINDLICHE ANORDNUNGEN und GIFT verwechselt. Lesen Sie die Referenz. Seien Sie genauer in Ihrer Frage: Was versuchen Sie zu zählen: ENTFERNTE AUFTRAGSSTELLUNGEN oder POSITIONEN? Und ja, es hat sich nichts geändert - der Index des ersten Elements beginnt mit "0".
Hinzugefügt: Beispiel
Beispiel: Berechnung von Positionen und schwebenden Aufträgen
Sie haben die RELATED ORDERS und die POSITIONS verwechselt. Lesen Sie die Referenz. Formulieren Sie Ihre Frage genauer: Was wollen Sie zählen: RETIRED ORDERS oder POSITIONS? Und ja, es hat sich nichts geändert - der Index des ersten Elements beginnt mit "0".
Hinzugefügt: Beispiel
Beispiel: Berechnung von Positionen und schwebenden Aufträgen
Ich meine MQL4, nicht MQL5, es gibt keinen Unterschied zwischen Pending und Market Orders!
Ich meine MQL4, nicht MQL5, da gibt es keine Unterteilung in Pending und Market Pending!
Sie schreiben im MQl5-Forum. Sie schreiben im Hauptteil. Sie posten im MQL5-Forum - und Sie erhalten Antworten zu MQL5.
Fragen zum alten Terminal sind an den speziellen Abschnitt gerichtet: MQL4 und MetaTrader 4. Schreiben Sie von nun an dort. Ich werde Ihre Fragen an sie weiterleiten.
Ich habe zwei Varianten verglichen, in der ersten habe ich OrdersTotal()-1 verwendet und die Suche bei Null begonnen - ich bekam den Fehler
. In der zweiten Variante habe ich bei Eins begonnen und die gesamte OrdersTotal() genommen - diesmal kein Fehler
In den Screenshots können Sie sehen, dass OrdersTotal() die tatsächliche Anzahl der Aufträge anzeigt, nicht OrdersTotal()-1 ...
Die Frage ist, warum OrdersTotal() zeigt die tatsächliche Anzahl der Aufträge, anstatt -1, sollte es so sein, oder es ist etwas Neues?
Denn in diesem Fall sollten wir die Suche nicht bei Null, sondern bei Eins beginnen!
Ich habe zwei Varianten verglichen, in der ersten habe ich OrdersTotal()-1 verwendet und die Suche bei Null begonnen - ich bekam den Fehler
. In der zweiten Variante habe ich bei Eins begonnen und die gesamte OrdersTotal() genommen - diesmal kein Fehler
In den Screenshots können Sie sehen, dass OrdersTotal() die tatsächliche Anzahl der Aufträge anzeigt, nicht OrdersTotal()-1 ...
Die Frage ist, warum OrdersTotal() zeigt die tatsächliche Anzahl der Aufträge, anstatt -1, sollte es so sein, oder es ist etwas Neues?
Denn in diesem Fall sollten wir die Suche nicht bei Null, sondern bei Eins beginnen!
Ich denke, ich habe meinen Fehler verstanden, sorry...
In dieser Bedingung gibt es einen Offset von -1:
if (OrderSelect(i-1,SELECT_BY_POS)==true){}
Entschuldigung, dass ich so unverblümt bin, ich habe den String aus einem anderen Programm übernommen und nicht auf den Offset geachtet!