MQL5 TUTORIAL GRUNDLAGEN – 45 SIMPLER SAR SELL TRAILING STOP

video

In diesem Video wollen wir uns einmal anschauen, wie man einen Sell Trailing Stop mit Hilfe des Parabolic SAR Indicator automatisch handeln lassen kann. In dem Moment, wo hier oben die Punkte auftauchen, wird unser Trailing Stop nachgezogen. Und wir wollen jetzt einmal anschauen, wie man so etwas mit MQL5 programmieren kann. Um das zu tun, klicken Sie im Metaeditor 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 einmal den Namen SimplerSARSellStop. Klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb dieser OnTick Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen können weg. Wir starten mit einem include Befehl für die Datei Trade.mqh. Die ist Bestandteil von MQL5 und ermöglicht uns die Eröffnung von Testpositionen. Dazu erstellen wir uns hier, eine Instanz von der Klasse CTrade. Die erhält den Namen trade. Jetzt müssen wir den Bid Preis berechnen, damit wir gleich eine Testposition eröffnen können. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir nutzen NormalizeDouble und _Digits, um die richtige Anzahl von Nachkommastellen zu ermitteln. Das können drei oder fünf Nachkommastellen sein, je nach Währungspaar. Und wenn uns die Funktion PositionsTotal einen Wert von kleiner eins zurückliefert, dann haben wir keine geöffneten Positionen. Und dann nutzen wir trade.Sell um eine Testposition für zehn Mikrolot zu eröffnen. Bitte machen Sie das nur auf einem Demo Account, damit wir etwas haben, womit wir den Trailing Stop später auslösen können, brauchen wir eine Position. Auf einem Echtgeldkonto würde man natürlich keine Testposition eröffnen. Weiter geht es damit, dass wir uns ein Array erstellen. Und danach definieren wir mit Hilfe der in MQL5 eingebauten Funktion iSAR, für das aktuelle Währungspaar auf dem Chart und die aktuelle Zeiteinheit auf unserem Chart die Werte für diese beiden Parameter. Und die sehen Sie auch, wenn Sie auf einem leeren Chart einmal auf Einfügen, Indikatoren, Tendenz, Parabolic SAR klicken. Dann gibt es hier einen Schrittwert von 0,02 und einen Maximalwert von 0,2. Klicken wir einmal auf Okay, machen einen Rechtsklick auf dem Chart, Vorlagen und Vorlage speichern und speichern das Ganze unter dem Namen tester.tpl. Denn das ist die Schablone, die wir gleich im Strategietester auch benutzen werden. Die alte Schablone kann ruhig überschrieben werden. Weiter im Quelltext. Jetzt sortieren wir mit ArraySetAsSeries unser Array von der aktuellen Kerze an abwärts und füllen es mit Werten. Das macht CopyBuffer. Anhand der SAR-Definition, die wir hier oben getroffen haben, kopieren wir die Werte für das Buffer null, also die Indikatorlinie, die bei uns durch diese Punkte dargestellt wird. Angefangen von Kerze null. Das ist die aktuelle Kerze. Und wir kopieren uns die Werte für drei Kerzen und speichern sie in unserem Array. Und danach können wir unseren SARWert bestimmen, indem wir einfach auf Kerze null in unserem Array zugreifen. NormalizeDouble und Komma fünf nutze ich hier, weil auch der Originalindikator fünf Nachkommastellen hat, wie man hier an dem Wert Value erkennen kann. Und am Ende der OnTick Funktion rufen wir eine Funktion CheckSarSellTrailingStop auf, übergeben hier den Bid Preis und den SARWert als Parameter. Diese Funktion existiert aber noch nicht. Darum müssen wir die jetzt programmieren. Unsere benutzerdefinierte Funktion ist vom Typ void, hat also keinen Rückgabewert. Sie hat den Namen ist CheckSarSellTrailingStop. Wir übergeben hier den Bid Preis und den SARWert als Parameter. Mit Hilfe einem for Loop gehen wir alle Positionen durch und ermitteln für jede einzelne Position das Positionssymbol. Das geht mit der Funktion PositionsGetSymbol für den aktuellen Schleifenzähler. Wenn das aktuelle Symbol auf unserem Chart und das Positionssymbol übereinstimmen, dann machen wir weiter. Jetzt benötigen wir für jede Position die Ticketnummer. Die ermitteln wir mit PositionGetInteger. Als Parameter übergeben wir POSITION_TICKET, alles in Großbuchstaben. Außerdem brauchen wir den aktuellen Stop Loss. Den erhalten wir mit PositionGetDouble und verwenden hier den Parameter POSITION_SL, ebenfalls in Großbuchstaben. Und falls unser aktueller Stop Loss größer ist, als der aktuelle SARWert oder der aktuelle Stop Loss den Wert null hat, das wäre zum Beispiel beim ersten Mal, wo wir unseren Expert Advisor starten der Fall, dann nutzen wir trade.PositionModify, um für das aktuelle Ticket den Stop Loss auf den SARWert zu setzen. Den Wert für den Take Profit lassen wir in diesem Fall unverändert. Zum Schluss müssen wir noch unsere Schleifen und unsere Funktion hier schließen. Falls Sie nicht wissen, was diese Codezeilen hier bewirken sollen, oder wenn Ihnen das alles zu schnell war, dann möchten Sie sich vielleicht zunächst noch die anderen Videos aus dieser Grundlagenserie anschauen. Oder vielleicht ist auch der Premium Kurs auf unserer Webseite interessant für Sie. Für den Moment klicken wir hier mal auf Kompilieren oder drücken die F7 Taste. Das hat hier ohne Fehler funktioniert. Und wenn das bei Ihnen auch so ist, dann klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste, um in den Metatrader zurückzukehren. Im Metatrader hatten wir ja bereits diese Schablone mit dem Indikator als tester.tpl gespeichert. Falls Sie das nicht getan haben, dann holen Sie das bitte noch nach. Andernfalls klicken wir jetzt auf Ansicht, Strategietester oder drücken die Tastenkombination Ctrl+R. Bitte wählen Sie hier die neu erstellte Datei SimplerSARSellTrailingStop.ex5 aus. Markieren Sie hier unten den Haken für den visuellen Modus und starten Sie Ihren Test. Und so sieht das Ganze jetzt im laufenden Betrieb aus. Sobald hier die Punkte auf der anderen Seite der Kerzen auftauchen, wird unser Trailing Stop nachgezogen. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.