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
Sie haben sicherlich einen großen Schritt nach vorne im Hauptthema gemacht - Sie haben Funktionen gemeistert und begonnen, sie zu benutzen, und ich gratuliere Ihnen natürlich!)
Ich bin dabei, den bisher gelernten Stoff zu festigen und habe begonnen, für und während der Schleifen zu lernen. Trailing, wenn auch in ferner Zukunft, aber es ist ein obligatorischer Teil meines Selbststudienplans.
Mit freundlichen Grüßen, Vladimir.
...
Im Großen und Ganzen ist das Drehbuch korrekt geschrieben. Es berücksichtigt nicht den Nullwert von Period_learning, aber sonst ist es gut.
Ok, Peter, ich werde darüber nachdenken, wie ich das Skript verkomplizieren und eine if-else-Bedingungsanweisung innerhalb der Funktion anwenden kann.
Mit freundlichen Grüßen, Vladimir.
Guten Tag und gute Laune an alle!
Ich lerne weiter die Programmiersprache MQL5. Unter Berücksichtigung der Tipps von Peter Konov füge ich hier den fertigen Code des Skripts ein, das eine Fortsetzung einer der Aufgaben der Teilnehmer dieses Threads ist. Das Skript wurde in allen Modi getestet. Keine Probleme festgestellt. Zunächst habe ich die minimale Anzahl von Eingabeparametern verwendet. Der Skriptcode ist auf Englisch geschrieben, die Kommentare zum Code sind auf Russisch, um den Lernprozess zu erleichtern. Wie ich vorhin versprochen habe, habe ich versucht, das Skript so zu beschreiben, dass es für einen Schüler der 1. Klasse der Programmierschule verständlich ist.
Mit freundlichen Grüßen, Vladimir.
Guten Tag und gute Laune an alle!
Ich lerne weiter die Programmiersprache MQL5. Unter Berücksichtigung der Tipps von Peter Konov füge ich hier den fertigen Code des Skripts ein, das eine Fortsetzung einer der Aufgaben der Teilnehmer dieses Threads ist. Das Skript wurde in allen Modi getestet. Keine Probleme festgestellt. Zunächst habe ich die minimale Anzahl von Eingabeparametern verwendet. Der Skriptcode ist auf Englisch geschrieben, die Kommentare zum Code sind auf Russisch, um den Lernprozess zu erleichtern. Wie ich vorhin versprochen habe, habe ich versucht, das Skript so zu beschreiben, dass es für einen Schüler der 1. Klasse der Programmierschule verständlich ist.
Mit freundlichen Grüßen, Vladimir.
Beheben Sie einen Fehler und es wird perfekt sein.
Was die Funktion betrifft, so nehme ich an, dass der Code so hätte geschrieben werden müssen:
Mit freundlichen Grüßen, Vladimir.Was die Funktion betrifft, so nehme ich an, dass der Code so hätte geschrieben werden müssen:
Mit freundlichen Grüßen, Vladimir.Beheben Sie nur einen Fehler, und schon ist alles perfekt.
Globale Objekte, werden standardmäßig durch den Konstruktor initialisiert. Für primitive Typen (in unserem Fall alle außer String) ist es 0. Aber für Speicher (Lesevariablen), die auf dem Stack zugewiesen werden, werden sie nicht initialisiert. Aus diesem Grund können globale Variablen nicht initialisiert werden; denken Sie daran, dass sie in diesem Fall gleich Null sein werden. Das Fehlen der Initialisierung (gewöhnen Sie sich daran, die vom Compiler erzeugten Warnungen sofort zu vermeiden, es sei denn, Sie wissen genau, was Sie tun) ist jedoch ein ernstes Problem, da das Lesen einer nicht initialisierten Variablen zu undefiniertem Verhalten führt. Zum Beispiel verhält sich dieser Code in Release- und Debug-Builds unterschiedlich, und niemand kann garantieren, dass sich sein Verhalten nicht auch ändert, wenn Sie die Compiler-Version oder die Optimierungseinstellungen ändern:
Peter, zum Thema globale Variablen: Ich habe in der Literatur noch nicht gefunden, dass globale Variablen vordefiniert sein müssen. Haben Sie einen Link zur Quelle, um Ihr Wissen in dieser Angelegenheit zu verbessern? Die MQL5-Referenz enthält keinen expliziten Hinweis auf die Initialisierung:
Der Typ bool ist für die Speicherung der logischen Werte true oder false vorgesehen , deren numerische Darstellung 1 bzw. 0 ist .
Beispiele:
bool a =true;
bool b =false;
bool c =1;
Die interne Darstellung ist eine 1-Byte-Integer-Zahl. Es ist zu beachten, dass in boolschen Ausdrücken auch andere ganzzahlige oder reelle Typen oder Ausdrücke dieser Typen anstelle von bool verwendet werden können, ohne dass der Compiler einen Fehler erzeugt. In diesem Fall wird Null als falsch und alle anderen Werte als wahr interpretiert.
Globale Objekte, werden mit dem Standardkonstruktor initialisiert. Für primitive Typen (in unserem Fall alle außer String) ist sie 0. Aber für Speicher (Lesevariablen), die auf dem Stack zugewiesen werden, werden sie nicht initialisiert. Aus diesem Grund können globale Variablen nicht initialisiert werden; denken Sie daran, dass sie in diesem Fall gleich Null sein werden. Aber das Fehlen der Initialisierung (gewöhnen Sie sich daran, die vom Compiler erzeugten Warnungen sofort zu vermeiden, es sei denn, Sie wissen genau, was Sie tun) ist ein ernstes Problem, weil das Lesen einer nicht initialisierten Variablen zu undefiniertem Verhalten führt. Zum Beispiel verhält sich dieser Code in Release- und Debug-Builds unterschiedlich, und niemand kann garantieren, dass sich sein Verhalten nicht auch ändert, wenn Sie die Compiler-Version oder die Optimierungseinstellungen ändern: