In diesem Video möchten wir uns einmal anschauen, wie man mit Hilfe des While Befehls eine ganze Menge Code innerhalb dieser While Schleife ausführen kann. Solange bis hier der Wert zehn Millionen hochgezählt wird, passiert hier oben überhaupt nichts. Erst wenn der von uns definierte Mindestwert erreicht ist, dann fängt unser Programm hier oben an zu handeln. Und wir wollen uns in diesem Video einmal anschauen, wie man mit MQL4 diese While Schleife programmieren kann. Um das zu tun klicken Sie bitte auf dieses kleine Symbol hier oben oder drücken Sie die F4 Taste. Da öffnet dann hier den Metaeditor und hier klicken wir auf Datei, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier einmal den Namen SimplerWhileLoop. Klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten damit, dass wir hier oben eine integer Variable für unseren Counter definieren. Denn wir brauchen nur ganzzahlige Werte. Der initiale Wert ist eins. Danach erstellen wir noch eine integer Variable für den Mindestwert. Wir möchten gern bis zehn Millionen hochzählen. Und jetzt nutzen wir den While Befehl, um zu prüfen, ob unser Zähler kleiner ist, als die von uns definierte Mindestgröße von zehn Millionen. Und falls das wahr ist, wird alles ausgeführt, was sich in den zwei geschweiften Klammern hinter dem While Befehl befindet. In diesem einfachen Beispiel möchten wir gerne den aktuellen Wert ausgeben. Das machen wir mit der Print Funktion. Die wird uns im Journal den Text DelayCounter und den aktuellen Wert anzeigen. Und nach der Print Ausgabe möchten wir diesen Wert erhöhen, jeweils um eins. Das geht mit dem Befehl DelayCounter= DelayCounter+1. Alles auf der rechten Seite des Gleichheitszeichens wird dem Wert auf der linken Seite zugewiesen. Und so wird unser Zähler jeweils erhöht. Das war es auch schon im Großen und Ganzen. Wenn Sie soweit sind, können Sie hier oben auf Kompilieren klicken oder die F7 Taste drücken. Das hat hier ohne Warnungen und ohne Fehler funktioniert. Und deswegen klicken wir jetzt hier oder drücken die F4 Taste, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination Strg+R. Hier wählen wir jetzt die neue Datei SimplerWhileLoop.ex4 aus. Bitte markieren Sie hier die Option für den visuellen Modus und starten Sie einen Test. Und wenn wir jetzt auf die Journal Reiterkarte klicken, dann sehen wir, dass hier unser While Counter läuft. Hier oben passiert überhaupt nichts, solange, bis unsere Zählschleife hier unten abgeschlossen ist. Denn jetzt wird exklusiv alles ausgeführt, was sich innerhalb unseres While Loops befindet. Erst wenn das erledigt, hier unten das läuft ein bisschen länger nach, dann wird hier oben unser Test gestartet. Der zeitliche Verzug bei der Anzeige hier unten ist darauf zurückzuführen, dass der Print Befehl ziemlich viel Zeit in Anspruch nimmt. Wenn Sie also Ihr eigenes System programmieren, machen Sie vom Print Befehl nur sehr sparsam Gebrauch. Denn der verzögert die komplette Ausführung. Im Groben war es das. Aber es gibt eine Besonderheit. Und zwar, wenn wir diesen Teil hier ausschneiden und hier unterhalb der While Schleife wieder einfügen. Unser Programm lässt sich immer noch anstandslos kompilieren. Wir haben immer noch keine Fehler und keine Warnungen. Aber wenn wir jetzt den aktuellen Test hier stoppen und erneut starten, dann sieht man in der Print Ausgabe, denn unser Counter niemals hochgezählt wird. Wir haben eine Endlosschleife produziert. Dadurch, dass dieser Teil hier niemals ausgeführt wird, ist die Abfrage für die Bedingung hier oben immer wahr. Und das kann in einem Programm zu großen Problemen führen. Darum ist der While Befehl mit Vorsicht zu genießen. Wir können den jetzt hier durch if ersetzen. Denn if wird nur ein einziges Mal bei jedem Tick ausgeführt. Kompilieren wir das Ganze noch mal, halten unseren Test an. Jetzt wird der Counter viel langsamer hochgezählt. Weil die if Abfrage nur einmal pro Preisänderung ausgeführt wird. Das ging mit While deutlich schneller. Also ändern wir das hier wieder. Aber bitte stellen Sie sicher, dass Sie eine Abbruchbedingung haben. Und, dass Sie diese innerhalb des While Loops platzieren. Ansonsten könnten Sie mit dem While Befehl eine Endlosschleife programmieren, die dazu führen kann, dass Ihr Programm für immer in dieser While Schleife hängenbleibt. Kompilieren wir das noch mal erneut, starten einen letzten Test. Und jetzt läuft das Ganze deutlich schneller hier ab. Unsere While Schleife funktioniert so, wie sie soll. Und Sie haben in diesem kurzen Video gelernt, wie Sie den While Befehl nutzen können, um eine ganze Menge Codes in einer Schleife auszuführen, bis eine bestimmte Bedingung eingetreten ist. Und Sie haben das selbst programmiert mit diesen paar Zeilen hier in MQL4. Download “CODE - SIMPLER WHILE LOOP” SimplerWhileLoop.mq4 – 113-mal heruntergeladen – 396,00 B
Podcast: Play in new window | Download