Fehler, Irrtümer, Fragen - Seite 439

 
Hilfe bitte, ich mache einen EA in MEditor5, kompiliere und platziere ihn auf einem Chart, und er (der EA) stürzt ab, d.h., das Symbol erscheint und verschwindet.
 
cokfx:
Hilfe, plz einen EA in den Assistenten in MEditor5, Kompilieren, auf einem Chart setzen und es (der EA) erscheint, dh, das Symbol erscheint und verschwindet.

Auf welches Symbol und auf welche TF setzen wir die Eule? Was steht im Protokoll?
 
Renat:

Das bedeutet, dass es keinen Fehler des Testers oder der MQL5-Ausführungsumgebung gibt, sondern dass es sich um einen expliziten Fehler des Programmierers handelt.

Hm. Der Programmierer hat ein unerwartetes Verhalten des Programms entdeckt, das Wesen dieses Verhaltens erkannt, es explizit wiedergegeben, ein einfaches Beispiel gegeben, das es ad absurdum führt(Schlafen mit negativen Werten), und der Programmierer sagt, es sei ein Programmierfehler :) Obwohl "Fehler des Programmierers" z.B. bedeutet, dass die Funktion Sleep im Tester nicht funktioniert.

Aus den obigen Ausführungen geht hervor, dass die Entwickler die Verwendung negativer Werte in der Funktion Sleep() für akzeptabel halten. Obwohl aus der Funktionsbeschreibung ("...sie verzögert die Ausführung des aktuellen Expert Advisors oder Skripts für ein bestimmtes Intervall") nicht hervorgeht, dass das Verzögerungsintervall mit negativen Zahlen berechnet werden kann. Apropos Fehler, betrachten Sie meine Aussage, dass das Terminal die Verwendung negativer Werte in der Sleep()-Funktion als solche hätte verhindern sollen.

 
Yedelkin:

Hm. Der Programmierer hat ein für ihn unerwartetes Programmverhalten entdeckt, das Wesen dieses Verhaltens erkannt, es explizit wiedergegeben, ein einfaches Beispiel gegeben, das es ad absurdum führt(Schlafen mit negativen Werten), und der Programmierer sagt, es sei ein Programmierfehler :) Obwohl "Fehler des Programmierers" z.B. bedeutet, dass die Funktion Sleep im Tester nicht funktioniert.

Aus den obigen Ausführungen geht hervor, dass die Entwickler die Verwendung negativer Werte in der Funktion Sleep() für akzeptabel halten. Obwohl aus der Funktionsbeschreibung ("...verzögert die Ausführung des aktuellen Expert Advisors oder Skripts für ein bestimmtes Intervall") nicht hervorgeht, dass das Verzögerungsintervall mit negativen Zahlen berechnet werden kann. Apropos Fehler, betrachten Sie meine Aussage, dass das Terminal die Verwendung negativer Werte in der Funktion Sleep() als solche hätte verhindern sollen.

Und Sie haben wahrscheinlich erwartet, dass Sie den Schlaf beenden, bevor Sie ihn betreten, wenn die Verzögerung negativ ist?
 

Yedelkin, wie stellen Sie sich vor, dass der Compiler die Parameter von Funktionen kontrolliert? Und es gibt Dutzende solcher Funktionen, bei denen die Werte der Parameter unter Kontrolle sein müssen.

Hier gibt es nur zwei Möglichkeiten - entweder die Geschwindigkeit der Erstellung oder eine völlig paranoide Kontrolle.

Wir haben uns für den ersten Weg entschieden. In diesem Fall überspringt das Laufzeit-Subsystem keine falschen Parameter zur Laufzeit, indem es einen Fehlercode generiert, den wir mit der Funktion GetLastError erhalten können.

Документация по MQL5: Проверка состояния / GetLastError
Документация по MQL5: Проверка состояния / GetLastError
  • www.mql5.com
Проверка состояния / GetLastError - Документация по MQL5
 
Wären Sie so freundlich, das Ergebnis Ihres negativen Wertes zu berechnen, es auf 32 Bits von int zu beziehen, dann über arithmetischen Überlauf zu lesen und Ihre 17 Tage zu finden.

Willkommen in der Welt der echten Programmierung.
 
uncleVic:
Sie haben wohl erwartet, dass Sie Sleep verlassen, bevor Sie es mit einem negativen Wert betreten?

Die Erwartungsannahme ist falsch.

Es war überhaupt nicht dafür gedacht, mit negativen Werten zu arbeiten. Siehe meinen obigen Beitrag:"Aus der Funktionsbeschreibung ("...verzögert die Ausführung des aktuellen EA oder Skripts für ein bestimmtes Intervall") ist es schwer anzunehmen, dass das Verzögerungsintervall in negativen Zahlen gezählt werden kann". Und es geht nicht darum, was ich "erwarten könnte", sondern um die Tatsache, dass die SLeep-Funktion tatsächlich die Arbeit mit negativen Werten ermöglicht. Als dies herausgefunden wurde, schickte er eine Nachricht. Wenn Sie eine solche Arbeitsweise der Funktion Sleep() für akzeptabel halten, wird sie auch so bleiben.

 
Yedelkin:

sondern dass die Funktion SLeep es tatsächlich ermöglicht, mit negativen Werten zu arbeiten.

Was schlagen Sie vor? Um das Programm in einem Notfall zu beenden?
 
Yedelkin:

Die Erwartungsannahme ist falsch.

Es war überhaupt nicht dafür gedacht, mit negativen Werten zu arbeiten. Siehe meinen obigen Beitrag:"Aus der Funktionsbeschreibung ("...verzögert die Ausführung des aktuellen EA oder Skripts für ein bestimmtes Intervall") ist es schwer anzunehmen, dass das Verzögerungsintervall in negativen Zahlen gezählt werden kann". Und es geht nicht darum, was ich "erwarten könnte", sondern um die Tatsache, dass die SLeep-Funktion tatsächlich die Arbeit mit negativen Werten ermöglicht. Als dies herausgefunden wurde, schickte er eine Nachricht. Wenn Sie eine solche Arbeitsweise der Funktion Sleep() für akzeptabel halten, wird sie auch so bleiben.

Natürlich ist die interne Darstellung vorzeichenlos.

Sie können den Typ des Parameters in uint ändern.

 
stringo:

Yedelkin, wie stellen Sie sich vor, dass der Compiler die Parameter von Funktionen kontrolliert? Und es gibt Dutzende solcher Funktionen, bei denen die Werte der Parameter unter Kontrolle sein müssen.

Hier gibt es nur zwei Möglichkeiten - entweder die Geschwindigkeit der Erstellung oder die totale paranoide Kontrolle.

Wir haben uns für den ersten Weg entschieden. In diesem Fall überspringt das Laufzeitsubsystem keine falschen Parameter in der Ausführungsphase und erzeugt einen Fehlercode, den wir mit der Funktion GetLastError abrufen können.

Ja, meine Herren, ich bin immer auf Ihrer Seite! :) Und ich weiß in der Programmierung nur einen kleinen Teil von dem, was Sie wissen (ich bin nur von MQL5 Reference geführt). Aber wenn ich einige Punkte sehe, die mir persönlich nicht klar sind, dann schreibe ich darüber. Ich versuche, wenn möglich, ein anschauliches Beispiel für den "unklaren Moment" zu geben. Wenn Sie also der Meinung sind, dass der "Alarm falsch" ist, dann habe ich entweder das Referenzmaterial falsch verstanden, oder das Referenzmaterial enthält nicht alle Informationen, die zum Verständnis des Augenblicks notwendig sind. In diesem Fall würde mir ein Hinweis (Warnung) im Abschnitt "Sleep-Funktion" genügen, der besagt, dass (1) "der Compiler den Wert des Funktionsparameters nicht kontrolliert, so dass die Funktion mit negativen Werten arbeiten kann" und (2) "die Sleep()-Funktion vom Tester vollständig unterstützt wird".

Ich habe keine Ahnung, wie der Compiler arbeitet. Ausgehend von dem beschriebenen Paradigma der Arbeit des Compilers habe ich den Drang, in den Anmerkungen zu Dutzenden von Funktionen zu reflektieren, dass die Werte ihrer Parameter nicht vom Terminal kontrolliert werden.

Grund der Beschwerde: