MQL5 TUTORIAL GRUNDLAGEN – 116 SIMPLER ENVELOPES SELL TRAILING STOP

video
play-sharp-fill

 

In diesem Video wollen wir uns einmal anschauen, wie man einen Sell Trailing Stop für diesen Indikator hier programmieren kann. Es handelt sich um den Envelopes-Indikator. Also lassen Sie einmal schauen, wie man so etwas mit MQL5 programmieren kann. Um das zu tun, klicken Sie bitte im Metatrader 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 SimplerEnvelopesSellTrailingStop, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen werden entfernt.

 

Wir starten hier mit einem include-Befehl für die Datei trade.mqh. Die ist Bestandteil von MQL5 und wir können darin von der Klasse CTrade eine Instanz mit dem Namen trade erstellen. Diese Instanz werden wir später nutzen, um eine Testposition zu eröffnen. Innerhalb der OnTick-Funktion starten wir damit, dass wir uns eine statische Variable vom Typ double erstellen. Die soll uns den letzten Stop Loss-Wert wieder zur Verfügung stellen, wenn die Funktion das nächste Mal aufgerufen wird. Danach berechnen wir den Ask Preis und Bid Preis. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID und mit NormalizeDouble und _Digits stellen wir sicher, dass jeweils die richtige Anzahl von Nachkommastellen hinter den Komma berechnet wird. Damit wir eine Trailing Stop auch anpassen können brauchen wir auch eine Position. Wir prüfen also im nächsten Schritt ob PositionsTotal uns einen Wert von kleiner 1 liefert. Wenn das der Fall ist, dann setzten wir hier unseren letzten Wert für den Stop Loss auf 0.

 

Danach eröffnen wir eine Testposition mit trade.Sell. Die Position soll 10 Microlot groß sein. Natürlich würden man diesen Schritt auf einem Echtgeldkonto überspringen, aber dafür sind Demokonto ja da. Weiter geht es. Wir benötigen jetzt jeweils ein Array für das obere und für das untere Band des Indikators. Danach nutzen wir ArraySetAsSeries, um das Array für das obere und für das untere Band von der aktuellen Kerze an abwärts zu sortieren und jetzt können wir die in MQL5 enthaltene Funktion iEnvelopes nutzen, um für das aktuelle Währungspaar und die auf dem Chat aktuell ausgewählte Zeiteinheit für 14 Kerzen den Wert des Indikators zu berechnen. Wir nutzen hier keinen Verschiebungswert. Dieser Parameter hier, MODE_SMA, steht für Simple Moving Average. Die Ergebnisse sollen anhand der Schlusskurse berechnet werden.

 

Und dieser Wert 0.100 den sieht man auch, wenn man auf einem leeren Chartfenster einmal auf Einfügen, Indikatoren, Tendenz, Envelopes klickt. Da ist der Wert. Es handelt sich um den Abweichungswert oder auf Englisch Deviation-Wert. Bitte übernehmen Sie hier alle grundlegenden Einstellungen, klicken auf OK. Jetzt erscheint der Indikator auf dem Chart und jetzt klicken wir mit der rechten Maustaste, wählen Vorlagen, Vorlage speichern und speichern das Ganze unter den Namen tester.tpl. Den alten Wert können Sie hier ersetzen. Tester.tpl ist die Schablone, die angezeigt wird, wenn wir einen Strategietest starten, aber zurück zum Programm. Mit CopyBuffer können wir uns jetzt anhand der Envelopes-Definition, die wir hier oben getroffen haben, entweder für Buffer 0 oder Buffer 1, das steht für das jeweilige Band, von der aktuellen Kerze 0 für drei Kerzen die Daten ins obere bzw. untere Band-Array kopieren. Das ermöglicht uns dann die Werte für die aktuelle Kerze zu ermitteln. Das hab ich hier aber mal auskommentiert, denn in diesem Fall interessiert uns eher die Kerze davor.

 

Das ist Kerze 1 und den Wert dafür erhalten wir, indem wir auf Kerze 1 im jeweiligen Array zugreifen. Ich hab hier noch NormalizeDouble und die Sechs genutzt, um die Wert auf sechs Nachkommastellen zu kürzen. Das ist nämlich auch das was wir angezeigt bekommen, wenn wir den Envelopes-Indikator einmal aufrufen. Jetzt möchten wir gerne eine Funktion mit dem Namen CheckEnvelopesSellTrailingStop aufrufen. Die existiert noch gar nicht, also müssen wir die noch gleich programmieren, und der übergeben wir den Wert für das letzte obere Band. Als letzte Aktion in der OnTick-Funktion setzen wir den Wert für den letzten Stop auf den aktuellen Wert für das obere Band und das wars auch schon mit der OnTick-Funktion. Weiter geht’s mit dieser Funktion. Hier nutzen wir void, da wir keinen Rückgabewert benötigen. Der Name der Funktion ist CheckEnvelopesSellTrailingStop und wir übergeben hier als Parameter den letzten oberen Bandwert. Mit Hilfe einer Vorschleife gehen wir alle verfügbaren Positionen durch. Hier interessiert uns zunächst einmal der Rückgabetyp von PositionGetSymbol für den aktuellen Schleifenzähler. Damit ermitteln wir das Positionswährungspaar, denn wir möchten nur dann weitermachen, wenn das Währungspaar auf dem Chart und das Positionswährungspaar zusammenpassen.

 

Wenn das der Fall ist, dann ermitteln wir das Positionsticket. Das geht mit PositionGetInteger. Der Parameter, den wir verwenden ist, POSITION_TICKET. Ähnlich lässt sich auch der Stop Loss ermitteln. In diesem Fall mit PositionGetDouble und hier nutzen wir den Parameter POSITION_SL. Unser Stop Loss soll nur dann verschoben werden, wenn der aktuelle Stop Loss größer ist als der des letzten oberen Bandes oder wenn der aktuelle Stop Loss den Wert 0 hat. Trifft eine der beiden Bedingungen zu, dann nutzen wir tade.PositionModifiy, um für das aktuelle Positionsticket den Stop Loss auf den Wert des letzten oberen Bandes anzupassen. Zum Schluss machen wir noch alle Schleifen und die Funktion zu und das wars auch schon so weit. Wenn Ihnen das hier alles zu schnell ging oder wenn Sie keine Ahnung haben, was diese Codezeilen alles bewirken sollen, dann möchten Sie sich vielleicht zunächst eines der anderen Videos aus diesen Grundlagen noch einmal anschauen. Vielleicht ist aber auch der Premiumkurs interessant für Sie. Den finden Sie auf unsere Webseite und da gibt’s auch einen Shop für Source Codes, aber für den Moment klicken wir hier mal auf Kompilieren oder drücken die F7-Taste.

 

Das sollte ohne Fehler funktionieren und wenn das bei Ihnen auch so ist, dann können Sie hier oben auf dieses kleine Symbol klicken oder mit der F4-Taste zurückkehren in den Metatrader. 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 SimplerEnvelopesSellTrailingStop.ex5 aus, markieren Sie die Option für den visuellen Modus und starten Sie Ihren Test. Hier läuft der Expert Advisor auch schon los. Wir zoomen mal ins Chart, dann sehen wir auch das obere Band und sobald sich dieses nach unten bewegt, wird auch der Stop Loss nachgezogen. Unser Expert Advisor funktioniert also wie gewünscht und Sie haben in diesem kurzen Video gelernt, wie Sie einen Sell Trailing Stop für den Envelopes-Indikator programmieren können und Sie haben das selbst getan, mit diesen paar Zeilen hier, in MQL5.