Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1737

 
Artyom Trishkin #:

Natürlich wartet das Programm nicht darauf, dass das Terminal in einem separaten Thread einige Daten protokolliert.

Danke, ich meine

 
Bitte sagen Sie mir, ob nach der Pause im Operator for (i; i>0; i--) der Ausdruck "i--" oder nur "Ausdruck 3" (laut Dokumentation) ausgeführt wird? Ich konnte es im Lehrbuch nicht finden.

Ich verstehe nicht, warum ab und zu "-1" geworfen wird, wenn nach dem Break der Print(i); vor dem Break steht i-- und if (i==0), das ist der Exit-Befehl, wenn i innerhalb des Operators bereits 0 erreicht hat. Da i noch weiter unten im Code, in Close[i], verwendet wird, produziert es den Fehler "out of range

 
Ivan Butko Operator for (i; i>0; i--) der Ausdruck "i--" oder nur "Ausdruck 3" (laut Dokumentation) ausgeführt wird? Ich konnte es im Lehrbuch nicht finden.

Ich verstehe nicht, warum ab und zu "-1" geworfen wird, wenn nach dem Break der Print(i); vor dem Break steht i-- und if (i==0), das ist der Exit-Befehl, wenn i innerhalb des Operators bereits 0 erreicht hat. Da i noch weiter unten im Code, in Close[i], verwendet wird, produziert es den Fehler "out of range

Ich kann das nicht verstehen. Zeigen Sie mir den Code
 
Ivan Butko Operator for (i; i>0; i--) der Ausdruck "i--" oder nur "Ausdruck 3" (laut Dokumentation) ausgeführt wird? Ich konnte es im Lehrbuch nicht finden.

Ich verstehe nicht, warum ab und zu "-1" geworfen wird, wenn nach dem Break der Print(i); vor dem Break steht i-- und if (i==0), das ist der Exit-Befehl, wenn i innerhalb des Operators bereits 0 erreicht hat. Da i noch weiter unten im Code, in Close[i], verwendet wird, produziert es den Fehler "out of range

Nach der Pause wird die Schleife zum nächsten Operator nach der Schleife verlassen, nachdem die Schleife bis zum Ende der Iteration an diesem Punkt iteriert und eine neue begonnen hat.

 
Valeriy Yastremskiy for (i; i>0; i--)
{
i--;
if (i==0) break;
}

Print(i);
Print(Close[i]);

// Im Protokoll steht (-1), wie kommt es... und daher dasFehlerfeld außerhalb des Bereichs, weil Close[-1] nicht passiert.

Ich meine, verstehe ich das richtig, dass nach der Pause in der Kopfzeile(i; i>0; i--) der dritte Ausdruck "i--" noch ausgeführt wird?

Документация по MQL5: Основы языка / Операторы / Оператор цикла for
Документация по MQL5: Основы языка / Операторы / Оператор цикла for
  • www.mql5.com
Оператор цикла for - Операторы - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ivan Butko for (i; i>0; i--)
{
i--;
if (i==0) break;
}

Print(i);
Print(Close[i]);

// Das Protokoll sagt (-1), wie also... und daher dasFehlerfeld außerhalb des Bereichs, weil Close[-1] nicht stattfindet.

Ich meine, verstehe ich das richtig, dass nach der Pause in der Kopfzeile(i; i>0; i--) der dritte Ausdruck "i--" trotzdem ausgeführt wird?

Korrekt schreibt

i=10;
for (i; i>0; i--)
{
i--;
if (i==0) break;
}

Print(i);
Print(Close[i]);
Sie nehmen nicht nur in der Kopfzeile, sondern auch im Hauptteil der Schleife ab.
 
Konstantin Nikitin #:

Er schreibt korrekt.

Fragen Sie mich nicht, was für einen Unsinn ich in meinen Code schreibe. Ich möchte nur die Nuancen dieses Operators verstehen) Es scheint, dass ich im Körper angegeben habe "es ist Zeit, hier zu verlassen, weil i=0", aber der Operator nimmt und führt den Ausdruck noch einmal aus, obwohl er die Kontrolle an den nächsten Operator übergeben sollte

 
Ivan Butko #:

Fragen Sie mich nicht, was für einen Blödsinn ich schreibe. Ich möchte nur die Nuancen dieses Operators verstehen) Es ist wie im Körper, den ich angegeben habe "es ist Zeit, hier zu verlassen, weil i=0", aber der Operator nimmt und führt den Ausdruck noch einmal aus, obwohl er die Kontrolle an den nächsten Operator übergeben sollte

Ja, das haben Sie, aber Sie haben es vor dieser Prüfung weggenommen. Schreiben Sie es so

i=10;
for (i; i>0; i--)
{
if (i==0) break;
i--;
}

Print(i);
Print(Close[i]);

wird ein anderes Ergebnis erzielt

 
Konstantin Nikitin #:

Ja, das haben Sie, aber Sie haben es vor dieser Prüfung weggenommen. Schreiben Sie es so


aah... Ich hab's. Verstanden.

Vielen Dank für Ihre prompten Antworten.

 
Ivan Butko #:

Ahh... Ich hab's. Verstanden.

Vielen Dank für Ihre prompten Antworten.

Ihr Code druckt 0, nicht -1...

void OnStart()
  {
int i=10;
for (i; i>0; i--)
{
i--;
if (i==0) break;
}

Print(i);
  }
//+------------------------------------------------------------------+

Wahrscheinlich wird -1 von irgendwo anders gedruckt, höchstwahrscheinlich ist der gesamte Code in den Druckern...

Bevor Sie versuchen, das Problem zu lösen, müssen Sie es identifizieren... Vergewissern Sie sich, dass er da ist, und finden Sie ihn, bevor Sie ihn lösen...

Grund der Beschwerde: