MQL4 TUTORIAL GRUNDLAGEN – 82 SIMPLER SMA SELL TRAILING STOP

video

In diesem Video wollen wir uns einmal anschauen, wie man für einen gleitenden Durchschnitt und für eine Verkaufsposition einen Trailing Stop programmieren kann. Also lassen Sie uns einmal schauen, wie man so etwas für MQL4 realisiert. Um das zu tun klicken Sie 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 SimplerSMASellTrailingStop, 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 damit, dass wir eine statische Variable vom Typ double erstellen. Die bekommt den Namen LastStopMovingAverageValue und wird den jeweils letzten Wert für unseren Trailing Stop Wert aufnehmen. Damit wir aber einen Trailing Stop benutzen können müssen wir zunächst einmal eine Testposition eröffnen. Immer wenn die Funktion OrdersTotal uns einen Wert von 0 zurückliefert, dann eröffnen wir hier mit OrderSend eine Test Sell Position von 10 Mircolot und wir weisen danach unserer Variable LastStopMovingAverageValue einen unrealistisch hohen Wert von 1.000 zu. Man könnte hier auch den Wert 0 verwenden, aber dann müsste man eine zusätzliche Überprüfung einbauen. Denn in der Regel prüft man bei einem Trailing Stop für eine Sell-Position, ob der aktuelle Wert für den Trailing Stop kleiner ist als der letzte Wert und der kann niemals unter 0 sein. Darum machen wir das in diesem Fall einmal so. Jetzt können wir mit der Funktion iMA, die in MQL4 vorhanden ist, für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit für 500 Kerzen ohne einen Wert für die Verschiebung einen gleitenden Durchschnitt berechnen. Deswegen nutzen wir MODE_SMA. SMA steht für SimpleMovingAverage. Und die Ergebnisse sollen anhand der Schlusskurse für die Kerze 1 berechnet werden. Und jetzt, da wir diesen Wert kennen, können wir prüfen, ob der kleiner ist als der letzte bekannte Wert. Als zweite Bedingung interessiert mich noch, ob der aktuelle Wert über dem Ask Preis liegt. Und wenn diese beiden Bedingungen zutreffen, dann möchte ich gerne eine Funktion aufrufen mit dem Namen CheckSMASellTrailingStop. Und dieser Funktion übergeben wir den aktuellen Wert für den StopMovingAverageValue. Danach weisen wir den aktuellen Wert der Variable LastStopMovingAverageValue zu, denn beim nächsten Aufruf ist ja der aktuelle Wert der letzte Wert. So weit so gut, aber diese Funktion hier existiert noch überhaupt nicht, darum müssen wir die jetzt programmieren. Der Name der Funktion ist CheckSMASellTrailingStop. Wir nutzen hier void, da wir keinen Rückgabetyp benötigen. Und als Parameter übernehmen wir hier den StopMovingAverageValue, den wir hier oben übergeben haben. Im Anschluss nutzen wir eine Vorschleife, um durch alle Positionen durchzugehen bis keine mehr übrig sind. Und für jede Positionsnummer nutzen wir hier OrderSelect, um die entsprechende Position auszuwählen. Anschließend möchten wir gerne prüfen, ob das Währungspaar für die Position übereinstimmt mit dem Währungspaar auf unserem Chart und zusätzlich prüfen wir noch den OrderType ab. Wir wollen wissen ob es eine Verkaufs Order ist, denn nur dann macht es Sinn einen SellTrailingStop nachzuziehen. Und als letzte Bedingung interessiert uns noch ob der aktuelle OrderStopLoss größer ist als der aktuelle Wert für unseren gleitenden Durchschnitt oder ob wir einen Wert 0 für den Stop Loss haben. Das wäre beispielsweise der Fall, wenn wir für unsere Testposition keinen Stop Loss angegeben haben. Jetzt kommen wir endlich zum entscheidenden Teil, wo wir mit OrderModify für das aktuelle Ticket und den unveränderten Eröffnungspreis unserer Position den Stop Loss auf den StopMovingAverageValue anpassen. Der OrderTakeProfit und die beiden Werte für das Ablaufdatum und die Farbe bleiben unverändert. Zum Schluss setzen wir hier noch die schließenden Klammern für die beiden Schleifen und für die Funktion. Das wars soweit. Wenn Ihnen das hier alles zu schnell ging oder wenn Sie keine Ahnung haben was diese Codezeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst die anderen Videos aus der Grundlagenserie noch einmal anschauen. Vielleicht ist aber auch der Premiumkurs interessant für Sie. Den finden Sie auf unserer Webseite. Für den Moment klicken wir hier auf kompilieren oder drücken die F7-Taste. Ich habe hier einen Klammerfehler gemacht. Hier fehlt die schließende Klammer für die Funktion. Ergänzen wir das mal und klicken auf kompilieren. Dann hat das jetzt ohne Fehler funktioniert und wenn das bei Ihnen auch so ist, dann können Sie jetzt hier klicken oder die F4-Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir jetzt auf Einfügen, Indikatoren, Tendenz, Moving Average. Bitte wählen Sie hier die Periode für 500 Kerzen, die Methode Simple, anwenden auf Close Price und die Farbe Ihrer Wahl aus und klicken auf OK. Wenn wir jetzt hineinzoomen, dann taucht hier der gleitende Durchschnitt auf. Wir klicken jetzt mit der rechten Maustaste in das Chart und wählen Vorlagen, Vorlage speichern und speichern das Ganze unter dem Namen tester.tpl, denn das ist die Ansicht die wir im Strategietester zu sehen bekommen. Die alte Schablone können Sie hier ersetzen. Falls Sie den Strategietester noch nicht sehen, klicken Sie bitte auf Ansicht, Strategietester oder drücken Sie die Tastenkombination Steuerung und R. Bitte wählen Sie hier die neu erstellte Datei SimplerSMASailTrailingStop.ex4 aus, markieren Sie die Option für den visuellen Modus und starten Sie ihren Test. Hier läuft unser Expert Advisor auch schon los. So wie es aussieht wird auch unser Stop hier nachgezogen. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie für eine Verkaufsposition und einen gleitenden Durchschnitt einen TrailingStop programmieren können. Und Sie haben das selbst getan mit diesen paar Zeilen hier in MQL4.