MQL5 TUTORIAL GRUNDLAGEN – 24 SO PROGRAMMIEREN SIE DEN AVERAGE TRUE RANGE OSZILLATOR

video
play-sharp-fill

In diesem Video wollen wir uns einmal den Average True Range Oszillator anschauen. Wir erstellen Kaufen und Verkaufen Signale, die auch auf dem Chart direkt gehandelt werden anhand dieser Werte hier. Eigentlich wird so ein Oszillator als Filter eingesetzt. Wir wollen ihn jetzt mal als Signal programmieren. Klicken Sie im Metatrader bitte auf dieses kleine Symbol hier oder drücken die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplerAverageTrueRangeEA, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion entfernt werden. Und auch die zwei Kommentarzeilen kommen weg. Wir starten damit, dass wir mitteln include die Datei Trade.mqh importieren. Damit lässt sich eine Instanz der Klasse CTrade erstellen. Die nennen wir trade und die wird später noch benötigt, um Positionen zu eröffnen. In der OnTick Funktion erstellen wir uns erst einmal eine leere Variable für das Signal. Die bekommt auch den Namen signal, aber noch keinen Wert. Da wir kaufen und verkaufen möchten, müssen wir zunächst den Ask und den Bid Preis berechnen. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. SYMBOL_ASK, alles in Großbuchstaben, liefert uns den Ask Preis. Und SYMBOL_BID würde uns den Bid Preis anzeigen. Mittels NormalizeDouble und _Digits lassen wir uns hier für die Währungspaare ermitteln, ob wir drei oder fünf Nachkommastellen haben. Je nach Währungspaar ist das unterschiedlich. Als nächstes erstellen wir uns ein Array für Preisdaten. Das bekommt den Namen PriceArray. Und jetzt können wir mit der eingebauten MQL5 Funktion iATR definieren, wie wir die AverageTrueRange berechnen möchten. _Symbol ermittelt das aktuelle Währungspaar auf dem Chart. _Period wird uns die aktuelle Zeiteinheit auf dem Chart ausgeben. Und dieser letzte Parameter 14 steht für 14 Kerzen. Wenn Sie auf einem leeren Chart einmal auf Einfügen, Indikatoren, Oszillatoren, Average True Range klicken, dann sehen Sie auch hier die 14 Kerzen als Voreinstellung. Wir übernehmen das mal mit Okay. Diese Ansicht ließe sich jetzt mit der rechten Maustaste über Vorlagen, Vorlage speichern, als tester.tpl speichern, die aktuelle Schablone ersetze ich hier mal. Denn das ist die Schablone, die auch im Strategietester später benutzt wird. Seit dem letzten Update kommt es vor, dass man die Signale zweimal angezeigt bekommt. In dem Fall lösche ich hier den Indikator einfach und speichere die leere Vorlage als tester.tpl. Machen wir mal weiter. Wir nutzen ArraySetAsSeries um unser PriceArray von der aktuellen Kerze an abwärts zu sortieren. Und mittels CopyBuffer füllen wir jetzt unser PriceArray mit Daten anhand der Definition, die wir hier oben getroffen haben. Und zwar für Buffer null, das ist diese Signallinie hier, von der aktuellen Kerze null für drei Kerzen. Und diese Daten speichern wir in unserem PriceArray. Und jetzt können wir den aktuellen Wert ermitteln, indem wir uns den Wert von Kerze null aus unserem PriceArray holen. Mit NormalizeDouble und Komma fünf stelle ich sicher, dass die Darstellung hier auch fünf Nachkommastellen hat, wie der Indikator selbst. Ich möchte hier gerne eine statische Variable verwenden für einen alten Wert, den ich dann mit dem aktuellen Wert vergleichen kann. Und wenn dieser alte Wert beim ersten Mal noch keinen Wert hat, dann weisen wir den aktuellen Wert als alten Wert zu. Und wenn jetzt unser aktueller Wert größer ist, als der alte Wert, dann betrachten wir das in diesem Fall als Kaufsignal und weisen das Wörtchen buy unserer signal Variable zu. Im anderen Fall, ein Verkaufssignal würde entstehen, wenn es runtergeht. Wenn also der aktuelle Wert kleiner ist als der alte Wert, in dem Fall weisen wir unserer signal Variable den Wert sell zu. Denn jetzt wollen wir verkaufen. Und zwar immer, wenn unser signal auf sell steht und uns die Funktion PositionsTotal einen Wert von kleiner eins liefert, das bedeutet, wir haben keine geöffneten Positionen. Und in dem Fall nutzen wir trade.Sell um zehn Mikrolot zu verkaufen. Andernfalls, wenn unser signal den Wert buy hat, und wir ebenfalls keine geöffneten Positionen haben, in dem Fall nutzen wir trade.Buy, um zehn Mikrolot zu kaufen. Mit dem Comment Befehl erstellen wir noch eine Ausgabe auf dem Chart. Die soll uns das Singnal ausgeben. „\n“ erstellt eine neue Zeile. Dort wird uns dann der alte Wert angezeigt. Und in einer weiteren Zeile darunter der aktuelle Wert. Und zum Schluss weisen wir den aktuellen Wert noch der Variable OldValue zu. Denn beim nächsten Aufruf dieser Funktion soll er als alter Wert mit dem neu ermittelten Wert verglichen werden können. Das war es soweit. Wenn Sie nicht wissen, was dieser ganze Code hier tut oder wenn Ihnen das vielleicht zu schnell war, dann möchten Sie sich vielleicht die anderen Videos aus dieser Grundlagenserie anschauen. Oder vielleicht ist auch der Premium Kurs interessant für Sie. Für den Moment klicken wir mal auf Kompilieren. Das hat hier ohne Fehler funktioniert. Und wenn das bei Ihnen auch so ist, dann klicken Sie bitte auf dieses kleine Symbol hier oder drücken Sie 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 im Strategietester wählen wir die neue Datei SimplerAveragerTrueRangeEA.ex5 aus. Bitte markieren Sie hier noch die Option für die Visualisierung und starten Sie Ihren Test. So sieht das Ganze dann im laufenden Betrieb aus. Hier haben wir bereits unsere erste Verkaufsposition. Hier oben werden Buy und Sell Signale generiert. Und Sie haben in diesem kurzen Video gelernt, wie Sie für den Average True Range Oszillator einen automatisch handelsfähigen Expert Advisor erstellen können. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.