MQL5 TUTORIAL GRUNDLAGEN – 125 SIMPLER ATR SELL TRAILING STOP

video
play-sharp-fill

 

In diesem Video wollen wir uns einmal anschauen, wie man für den Average True Range Indikator einen Sell Trailing Stop programmieren kann, der nachgezogen wird, wenn der der Wert für diesen Indikator hier sinkt. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL5 programmieren kann. Um das zu tun, klicken Sie im MetaTrader bitte hier oben auf dieses kleine Symbol 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 Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerAverageTrueRangeSellStop, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion hier entfernt werden und auch die zwei Kommentarzeilen werden gelöscht. Wir starten mit einer include-Funktion für die Datei Trade.mqh.

 

Diese Datei ist im Umfang von MQL5 enthalten und sie enthält die Klasse CTrade von der wir uns hier eine Instanz mit dem Namen trade erstellen. Außerdem benötigen wir einige Variablen. Die Erste ist für den Basis Stop Point Wert, die Zweite ist für den berechneten Stop Point Wert und die dritte Variable ist der Bid Preis. Den nutzen wir diesmal als globale Variable. Alle Variablen, die außerhalb einer Funktion deklariert werden stehen für alle Funktionen zur Verfügung. Innerhalb der OnTick-Funktion erstellen wir uns jetzt eine Signal-Variable. Die ist vom Typ string, aber wir weisen hier noch keinen Wert zu. Danach berechnen wir den Bid Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart.

 

Wir nutzen SYMBOL_BID und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar ermittelt werden. Als nächstes erstellen wir ein PriceArray für unsere Preisdaten und für die Definition unseres Average True Range Indikators nutzen wir die eingebaute Funktion iATR. Die benötigt einige Parameter. Der erste Parameter ist das aktuelle Währungspaar. Der zweite Parameter die auf diesem Währungspaar ausgewählte Zeiteinheit und wir möchten das Ergebnis anhand von 14 Kerzen berechnen. Mit der Funktion ArraySetAsSeries sortieren wir unser PriceArray jetzt von der aktuellen Kerze an abwärts. Und mit der Funktion CopyBuffer füllen wir unser PriceArray mit Daten. Anhand der Definition, die wir hier oben getroffen haben, möchten wir für Buffer 0, das ist die Signallinie, von der aktuellen Kerze 0 für drei Kerzen die Daten in unserem PriceArray speichern.

 

Jetzt können wir den aktuellen Average True Range Wert berechnen, in dem wir auf Kerze 0 in unserem PriceArray zugreifen und mit NormalizeDouble und fünf Nachkommastellen stellen wir sicher, dass die Darstellung so ist wie auch auf dem Chart zu sehen. Denn hier wird für den Indikator auch das Ergebnis mit fünf Nachkommastellen angezeigt. Wir benötigen auch eine statische Variable vom Typ double für den alten Wert. Und wenn der aktuelle Average True Range Wert kleiner ist als der alte Wert, dann haben wir ein Verkaufssignal und dann setzen wir unser Signal auf sell und wenn wir ein Verkaufssignal haben und die Anzahl der Positionen kleiner ist als 1, dann bedeutet das, wir haben keine offenen Positionen, aber ein Verkaufssignal und dann nutzen wir trade.Sell, um eine Testposition von 10 Microlot zu eröffnen. Das hier machen wir auf einem Demokonto, und zwar deshalb damit wir sehen können, ob unser Trailing Stop funktioniert, denn dazu benötigen wir eine geöffnete Position. Wir ermitteln den Wert für den Trailing Stop in dem wir hier eine benutzerdefinierte Funktion mit dem Namen CheckATRSellTrailingStop aufrufen und ihr den Parameter für den Average True Range Value übergeben. Diese Funktion existiert aber noch nicht, also müssen wir die gleich programmieren. Vorher fügen wir noch eine Chartausgabe mit dem Comment-Befehl hinzu.

 

Die wird uns das aktuelle Signal, den Average True Range Wert und den berechneten Stop Point Wert ausgeben. Danach weisen wir den aktuellen Wert der Variable OldValue, also dem alten Wert zu. Denn beim nächsten Aufruf der Funktion wird der aktuelle Wert ja der alte Wert sein. Das war´s so weit mit der Hauptfunktion. Weiter geht´s mit der Programmierung von unserer benutzerdefinierten Trailing Stop Funktion. Die hat den Namen CheckATRSellTrailingStop und bekommt hier als Parameter den Average True Range Wert übergeben. Hier berechnen wir zunächst den Stop Point Wert, in dem wir den Basiswert, den wir am Anfang definiert haben, mit dem Ergebnis aus dieser Multiplikation hier addieren. Das ermöglicht uns den Stop Loss Preis zu berechnen und das ist der aktuelle Bid-Preis zzgl. des berechneten Stop Point Wertes mal des Punktewertes.

 

Mit einer Vorschleife gehen wir jetzt alle Positionen durch. Die Funktion PositionGetSymbol für den aktuellen Schleifenzähler ermittelt das jeweilige Währungspaar der Position und wenn das Währungspaar auf dem Chart und das Positionswährungspaar übereinstimmen, dann möchten wir einige Details ermitteln. Das Erste ist das Positionsticket. Das erhalten wir über die Funktion PositionGetInteger und hier ist der Parameter POSITION_TICKET. Als nächstes berechnen wir den aktuellen Stop Loss. Das geht mit Hilfe der Funktion PositionGetDouble und hier ist der Parameter POSITION_SL. Und wenn der aktuelle Stop Loss größer ist als der berechnete Stop Loss Preis oder wenn der aktuelle Stop Loss den Wert 0 hat, was der Fall wäre, wenn wir die Funktion zum aller ersten Mal aufrufen, dann möchten wir unseren Stop Loss nachziehen.

 

Das übernimmt die Funktion trade.PositionModifiy für das aktuelle Positionsticket. Und wir verändern hier den Wert für den Stop Loss auf den berechneten Stop Loss Preis. Der letzte Parameter hier steht für den Take Profit Wert. Den lassen wir unverändert. Zum Schluss machen wir noch unsere Schleifen zu, liefern das berechnete Ergebnis für den berechneten Stop Point Wert hier an unsere Hauptfunktion zurück und beenden die Funktion. Jetzt muss ich hier unten eine zusätzliche Klammer noch entfernen und das war´s auch schon so weit. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was diese Codezeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst eines der anderen Grundlagenvideos noch einmal anschauen. Vielleicht ist auch der Premiumkurs interessant für Sie. Den finden Sie auf unserer Webseite und da gibt es jetzt auch diese Quellcodes hier im Shop zum Herunterladen. Für den Fall dass Sie keine Lust haben das alles selbst abzutippen. Für den Moment klicken wir hier mal auf den Kompilieren Button oder drücken die F7-Taste.

 

Das sollte hier ohne Fehler funktionieren und wenn das bei Ihnen auch so ist, dann klicken Sie bitte hier oben auf diesen kleinen Button 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 Steuerung und R. Bitte wählen Sie hier die neu erstellte Datei SimplerAverageTrueRangeSellStop.ex5 aus, markieren Sie hier unten die Option für den visuellen Modus und starten Sie Ihren Test. Hier läuft unser Expert Advisor auch schon los. Wir sehen, dass der Stop Loss nachgezogen wird. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie für den Average True Range Oszillator einen Sell Trailing Stop programmieren können. Und Sie haben das selbst getan, mit diesen paar Zeilen hier in MQL5.