MQL4 TUTORIAL GRUNDLAGEN – 122 SIMPLER AVERAGE TRUE RANGE BUY TRAILING STOP

video

 

In diesem Video möchten wir einmal einen Expert Advisor erstellen der in der Lage ist, den Wert von diesem Average True Range Oszillator für einen Buy Trailing Stop zu nutzen. Hier wird ein dynamischer Wert berechnet. Also lassen sie uns einmal schauen, wie man so etwas in MQL4 programmieren kann. Um das zu tun, klicken Sie 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 Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerAverageTrueRangeBuyStop, klicke auf weiter, weiter und fertigstellen.

 

Jetzt kann alles oberhalb der OnTick-Funktion hier gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit zwei Variablen. Die eine ist für den grundlegenden Stop Punkte Wert. Da werden wir 100 Punkte zu Grunde legen. Variable Nummer Zwei ist für den berechneten Stop Punkte Wert, denn wir möchten ja aufgrund des Average True Range eine dynamische Anpassung für die Stop Loss Punkte haben. In der OnTick-Funktion erstellen wir uns eine Variable für das Signal. Die ist vom Typ string. Wir weisen aber noch keinen Wert zu. Für die Berechnung des Average True Range nutzen wir die integrierte iATR-Funktion. Die ist in MQL4 enthalten und benötigt ein paar Parameter. Der erste Parameter ist für das aktuelle Chart, der zweite Parameter für das auf dem Chart ausgewählte Zeitfenster, Parameter Nummer Drei ist die Anzahl der Kerzen anhand der wir das Ergebnis berechnen möchten. In diesem Fall sind das 14 Kerzen.

 

Und der letzte Parameter hier ist der Verschiebungswert. Den benötigen wir nicht, darum setzen wir den auf null. Außerdem nutzen wir eine statische Variable. Die bekommt den Namen OldValue, also alter Wert. Static bedeutet, dass wir diese Variable über den kompletten Zeitraum zur Verfügung haben. Selbst wenn diese Funktion hier verlassen wird, behält MetaTrader den Wert für die Variable bei. Das ist ganz nützlich, denn das ermöglicht uns, dass wir den aktuellen Average True Range Wert mit dem alten Wert vergleichen können und wenn der aktuelle Wert höher ist als der alte Wert, dann haben wir ein Kauf-Signal und dann weisen wir unserem Signal den Wert buy zu. Und wenn unser Signal auf Kaufen steht und der Rückgabewert für OrdersTotal Null beträgt, dann bedeutet das wir haben keine geöffneten Optionen, aber ein Kaufsignal und dann nutzen wir OrderSend, um eine Kaufposition für 10 Micorlot zu eröffnen. Dies hier ist natürlich eine Testposition.

 

Auf einem Echtgeldkonto würde man das nicht machen, aber wir benötigen ja einen Position, um unseren Trailing Stop zu testen. Das werden wir tun, mit Hilfe einer Funktion, die den Namen CheckATRBuyTrailingStop bekommt. Hier übergeben wir einen Parameter für den Average True Range Wert und das Ergebnis weisen wir der Variable CalculatedStopPointValue zu. Damit wir auch was sehen, erstellen wir mit dem Comment-Befehl hier eine Chartausgabe für das Signal. Den Average True Range Wert und den berechneten Stop Punkte Wert. Danach weisen wir den aktuell berechneten Wert der Variable OldValue zu, damit wir den beim nächsten Aufruf der Funktion wieder zur Verfügung haben. Jetzt müssen wir aber noch diese Funktion hier programmieren. Unsere benutzerdefinierte Funktion bekommt den Namen ChackATRBuyTrailingStop zugewiesen.

 

Wir übergeben hier einen double-Variable mit dem Namen AverageTrueRangeValue. Den nutzen wir hier in einer kleinen Formel, um den berechneten Stop Punkte Wert zu ermitteln, und zwar multiplizieren wir hier den Average True Value Wert mit 100.000 und addieren das Ergebnis auf den Basiswert. Danach brauchen wir noch den konkreten Preis und um den zu ermitteln, ziehen wir vom ask-Preis den berechneten Stop Loss Wert ab und multiplizieren das Ganze mit dem Punktewert für das Chart. Jetzt gehen wir mit Hilfe einer Vorschleife alle Positionen durch. Mittels OrderSelect wählen wir die jeweilige Position aus, prüfen dann, ob das Währungspaar der Position zum Währungspaar des Charts passt. Danach möchten wir gerne ermitteln, ob der OrderTyp OP_BUY ist, wenn das der Fall ist, dann handelt es sich um einen Kaufposition und falls das der Fall ist, möchten wir wissen, ob der aktuelle Stop Loss von der Position kleiner ist als der von uns berechnete Stop Loss Preis. Und wenn alle diese Bedingungen zutreffen, dann nutzen wir OrderModify, um für das aktuelle OrderTicket und den aktuellen Eröffnungspreis den berechneten Stop Loss  Preis hier anzupassen.

 

Die drei Werte für TakeProfit, Ablaufdauer und Farbe lassen wir unverändert. Zum Schluss müssen wir hier noch unsere Schleifen und die Funktion schließen und mit Hilfe des return-Befehls liefern wir an unser Hauptmodul den berechneten Stop Point Wert zurück. Ich hab hier wieder eine Klammer zu viel. Das war´s auch schon im Großen und Ganzen. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was alle diese Codezeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst ein anderes Video aus der Grundlagenserie noch einmal anschauen. Vielleicht ist aber auch der Premiumkurs interessant für Sie. Den finden Sie auf unserer Webseite und da gibt´s jetzt auch im Shop die Möglichkeit solche Quellcodes hier herunterzuladen. Das hier war übrigens wieder ein Vorschlag von einem Premiumkursmitglied und wenn Sie bereits Premiummitglied sind und eine Idee für so ein Video hier haben, dann lassen Sie´s mich doch einfach wissen. Für den Moment klicken wir hier auf Kompilieren oder drücken die F7-Taste.

 

Das hat bei mir ohne Fehler funktioniert und wenn das bei Ihnen auch so ist, dann können Sie jetzt hier oben auf dieses kleine Symbol klicken oder die F4-Taste drücken, um in den MetaTrader zurückzukehren. Und im MetaTrader wählen wir ein leeres Chart, klicken auf Einfügen, Indikatoren, Oszillatoren, Average True Range. Hier übernehmen wir die Standardwerte für 14 Kerzen, klicken auf OK. Dann taucht hier der Oszillator auf und jetzt können wir mit der rechten Maustaste in das Kerzenchart klicken und wählen Vorlagen, Vorlage speichern und speichern das Ganze unter dem Namen tester.tpl, denn das ist die Schablone die wir im Strategietester zu sehen bekommen. Den alten Wert können Sie hier ersetzen. Wenn Sie den Strategietester noch nicht angezeigt bekommen, dann klicken Sie bitte auf Ansicht, Strategietester oder drücken die Tastenkombination Steuerung und R.

 

Hier wählen wir jetzt die neu erstellte Datei SimplerAverageTrueRangeBuyStop.ex4 aus. Bitte markieren Sie die Option für den visuellen Modus und starten Sie Ihren Test. Wie man sieht, läuft unser Expert Advisor auch schon los. Wir sehen eine dynamische Anzahl für die Stop Loss Punkte und unser Trailing Stop wird hier auch nachgezogen. 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 Expert Advisor erstellen können, der in der Lage ist, Buy Trailing Stops für Kaufpositionen nachzuziehen und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL4.