MQL5 TUTORIAL GRUNDLAGEN – 23 SO PROGRAMIEREN SIE DEN PARABOLIC SAR EXPERT ADVISOR

video

In diesem Video wollen wir uns einmal anschauen, wie man den Parabolischen SAR Indikator hier programmieren kann. Der produziert solche Punkte, die sich entweder unterhalb oder oberhalb der Kerzen bewegen. Und wir wollen jetzt mal schauen, wie man so was mit MQL5 automatisieren kann. Um das zu tun klicken Sie im Metatrader bitte auf dieses kleine Symbol hier oben oder drücken Sie die F4 Taste. Das ruft dann hier den Metaeditor auf. Und hier klicken wir auf Datei, Neue Datei, Expert Advisor aus Vorlagen, Weiter. Ich vergebe hier mal den Namen SimplerParabolicSAREA, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden. Und wir können auch die zwei Kommentarzeilen hier entfernen. Wir starten mit einem include Befehl für die Datei Trade.mqh. Die ermöglicht uns eine Instanz von CTrade zu erstellen. Die nennen wir trade und die wird später noch benötigt, um Positionen zu eröffnen. Innerhalb der OnTick Funktion berechnen wir jetzt den Aks Preis und den Bid Preis. Das macht die Funktion SymbolInfoDouble für das aktuelle Währungspaar. Wir nutzen SYMBOL_ASK, alles in Großbuchstaben, um den Ask Preis zu berechnen. Den brauchen wir, wenn wir kaufen wollen. Und mit SYMBOL_BID bekommen wir den Bid Preis. Den brauchen wir, wenn wir verkaufen. Zusätzlich nutze ich hier NormalizeDouble und _Digits, denn mit _Digits bekomme ich die Anzahl der Ziffern nach dem Dezimalpunkt und zwar für das aktuelle Währungspaar. Das kann unterschiedlich sein. Und ich möchte das gerne automatisiert berechnen lassen. Jetzt brauchen wir noch eine signal Variable. Die bekommt auch den Namen signal. Wir weisen hier noch keinen Text zu, das machen wir später noch. Holen wir uns erst einmal mit MqlRates die Preisdaten für ein PriceArray. MqlRates stellt diese ganzen Preisinformationen für jede Kerze bereit. Mit ArraySetAsSeries wird unser PriceArray zunächst von der aktuellen Kerze an abwärts sortiert. Danach nutzen CopyRates für das aktuelle Währungspaar und die aktuelle Zeiteinheit. Die man übrigens auch mit Unterstrich schreiben könnte. Denn das hier oben ist dasselbe, wie das hier. Und das gilt auch für die Periode auf dem Chart. Mit CopyRates holen wir uns von der aktuellen Kerze an für drei Kerzen die Preisdaten und speichern sie in unserem PriceArray. Jetzt brauchen wir noch ein Array. Diesmal für den SAR Indikator. Wir definieren jetzt mit Hilfe der eingebauten Funktion iSAR für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Schauen wir uns doch mal an, was diese beiden Parameter hier bedeuten. Dazu klicken wir auf Einfügen, Indikatoren, Tendenz, Parabolic SAR und dann sehen wir hier einen Schrittwert von 0,02 und einen Maximum Wert von 0,2. Bestätigen wir den mal. Dann wird der Indikator hier auf dem Chart angezeigt. Klicken wir die rechte Maustaste, wählen Vorlagen und Vorlage speichern. Dann können wir diese Ansicht jetzt unter dem Namen tester.tpl speichern. Denn das ist die Schablone, die vom Backtest genutzt wird. Also bitte speichern Sie das ab. Der aktuelle Wert kann überschrieben werden. Wenn Sie das nicht tun, dann sehen Sie eventuell nach dem letzten Update im Backtest sonst den Indikator nicht. Wir wissen jetzt, dass dieser Parameter für die Schrittweite und dieser hier für den Maximalwert steht. Diese Werte übernehmen wir und sortieren unser Array von der aktuellen Kerze an abwärts indem wir ArraySetAsSeries verwenden. Jetzt können wir mittels CopyBuffer anhand der SARDefinition, die wir hier oben getroffen haben, für das Buffer null, das sind diese Punkte hier, beginnend von Kerze null für drei Kerzen die Werte in unserem SARArray speichern. Denn das ermöglicht uns, den Wert für die letzte Kerze zu ermitteln, indem wir uns den Wert aus Kerze eins von unserem Array holen. Der wird hier mit NormalizeDouble und dieser fünf noch so formatiert, dass wir fünf Nachkommastellen erhalten. Und wenn der Wert kleiner ist, also der niedrigste Preis von Kerze eins in unserem PriceArray, mit anderen Worten, der Punkt befindet sich unterhalb der Kerze, dann haben wir ein Kauf Signal und weisen den Wert buy unserer signal Variable zu. Im anderen Fall, wenn der Wert größer ist, als der höchste Punkt von Kerze eins in unserem PriceArray, dann hätten wir ein Verkaufen Signal. Und dann weisen wir den Begriff Sell unserer signal Variable zu. Wenn unser signal also auf Verkaufen steht, und die Funktion PositonsTotal kleiner ist als eins, mit anderen Worten, wir haben keine geöffnete Position, dann nutzen wir trade.Sell und verkaufen zehn Mikrolot. Im anderen Fall, wenn das Signal auf Kaufen steht und wir ebenfalls keine geöffnete Position haben, dann nutzen wir trade.Buy und kaufen zehn Mikrolot. Zum Schluss nutzen wir noch den Comment Befehl, um eine Chart Ausgabe zu produzieren. Da soll stehen: Das Signal ist, gefolgt von dem ermittelten Signal. Soweit so gut. Wenn Sie nicht wissen, was der ganze Code hier macht oder wenn Ihnen das vielleicht zu schnell ging, dann möchten Sie sich vielleicht die anderen Grundlagenvideos aus dieser Serie anschauen. Oder vielleicht sind Sie ein Kandidat für den Premium Kurs. Aber falls alles soweit geklappt hat, dann können Sie hier oben auf Kompilieren klicken oder die F7 Taste drücken. Das sollte hier unten ohne Fehler funktionieren. Und wenn das in Ihrem Fall auch so ist, dann klicken Sie bitte hier oben oder drücken Sie die F4 Taste, um in den Metatrader zurückzukehren. Und im Metatrader klicken Sie bitte auf Ansicht, Strategietester oder drücken die Tastenkombination Ctrl+R. Hier wählen wir jetzt die Datei SimplerParabolicSAREA aus, markieren die Option für die Visualisierung und starten unseren Test. Und so sieht das Ganze dann im laufenden Betrieb aus. Die Punkte sind unterhalb der Kerzen. Deswegen haben wir hier bereits unsere erste Kaufposition. Und Sie haben in diesem kurzen Video gelernt, wie Sie für den Parabolic SAR Indikator ein MQL5 Programm schreiben können, das in der Lage ist, die Signale nicht nur zu produzieren, sondern auch automatisch zu handeln. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.