In diesem Video wollen wir uns einmal anschauen, wie man für einen simplen gleitenden Durchschnitt einen Buy Trailing Stop programmieren kann, also lassen Sie uns einmal anschauen, wie man so etwas in MQL5 realisiert. Um das zu tun, klicken Sie im Metatrader 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 Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerSMABuyTrailingStop klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen können weg. Wir starten damit, dass wir mittels include hier die Datei Trade.mqh einbinden. Die ist Bestandteil von MQL5 und ermöglicht es uns von der Klasse CTrade eine Instanz zu bilden. Die wird uns später helfen, wenn wir Positionen eröffnen. Innerhalb der OnTick-Funktion erstellen wir eine statische Variable für den letzten MovingAverageValue, also den letzten bekannten Wert. DAnnach möchten wir gerne den Ask Preis und den Bid Preis ermitteln. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID und mit NormilzeDouble und _Digits stellen wir sicher, dass wir die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar ermitteln. Damit wir unseren Trailing Stop für eine Position nutzen können, müssen wir natürlich auch eine eröffnen. Wenn also die Funktion PostitionsTotal einen Rückgabewert von < 1 liefert, dann haben wir keine geöffnete Position. Das bedeutet, dass wir eine eröffnen müssen. Dazu nutzen wir tade.Buy, um eine Kaufposition für 10 Microlot zu eröffnen. Natürlich macht man das nur auf einem Demokonto und für jede Position möchten wir auch den Wert für den letzten bekannten MovingAverage Wert zurücksetzen auf 0. Andernfalls könnte es passiert, dass der Expert Advisor versucht den Trailing Stop mit den Werten für die letzte Position nachzuziehen und das wollen wir ja nicht. Für den eigentlichen MovingAverage erstellen wir uns jetzt ein Array vom Typ double, damit es auch Nachkommastellen aufnehmen kann. Anschließend wir das Array mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Jetzt können wir definieren, welche Art von gleitendem Durchschnitt wir gerne nutzen möchten. Dazu nutzen wir die Funktion iMA. Die ist in MQL5 integriert. Und als Parameter übergeben wir das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir möchten gerne 500 Kerzen ermitteln lassen, ohne Verschiebungswert. Wir nutzen MODE_SMA. Das steht für SimpleMovingAverage und das Ergebnis soll anhand der Schlusskurse errechnet werden. Mit der Funktion CopyBuffer füllen wir jetzt unser erstelltes Array, dass wir hier oben definiert haben. Und zwar für Buffer 0. Buffer 0 ist die einzige Linie die unser gleitender Durchschnitt hat. Bei anderen Signalen, wie den Bollinger Bändern gebe es mehrere Buffer. Wir starten hier auch mit der aktuellen Kerze 0 und wir möchten die Werte für drei Kerzen kopieren und in unserem Array speichern. Nachdem wir das getan haben, können wir den aktuellen Wert ermitteln, in dem wir uns in unserem Array den Wert für Kerze 1 anschauen. Das ist die letzte geschlossene Kerze auf dem Chart. Damit unser Stop Loss richtig nachgezogen wird, möchten wir noch ein paar Dinge prüfen. Und zwar ob der StopMovingAverage Wert kleiner ist als der aktuelle Bid Preis. Andernfalls kann er nicht verändert werden. Eine zweite Sache, die wir überprüfen möchten ist, ob der aktuelle Wert größer ist, als der letzte Wert den wir ermittelt haben. Und wenn beide Bedingungen zutreffen, dann möchten wir gerne eine Funktion CheckSMABuyTrailingStop aufrufen. Hier übergeben wir den aktuellen Ask Preis und den ermittelten Wert für den StopMovingAverage Wert. Danach weisen wir den aktuellen Stop Loss Wert der Variable LastStopMovingAverageValue zu, denn beim nächsten Aufruf der Funktion möchten wir wissen, ob er sich verändert hat. Und dann ist der aktuelle Wert der letzte Wert. So weit so gut, aber diese Funktion gibt es noch gar nicht. Darum müssen wir die jetzt programmieren. Unsere Funktion hat keinen Rückgabewert, darum nutzen wir hier void. Der Name der Funktion ist CheckSMABuyTrailingStop und wir übergeben hier als Parameter den double Wert für den Ask Preis und den double Wert für den Stop Loss MovingAverageValue. Jetzt nutzten wir eine Vorschleife, um alle offenen Position durchzugehen. Da wir geöffnete Positionen für unterschiedliche Währungspaar haben können, prüfen wir hier, zu welchem Währungspaar die aktuelle Position gehört. Denn das ermöglicht uns zu prüfen, ob das Währungspaar auf dem Chart und die aktuelle Währung für unsere Position identisch sind. Und falls das passt, nutzen wir die Funktion PositionGetInteger, als Parameter nutzen wir hier POSITION_TICKET, um die Ticketnummer für die aktuelle Position zu ermitteln. Die sehen wir auch hier unter der Spalte Ticket. Im nächsten Schritt nutzen wir PositonGetDouble, um den aktuellen Stop Loss für die Position zu ermitteln. Und falls der aktuelle Stop Loss kleiner ist als der Wert, den wir im Moving Average ermittelt haben, dann nutzen wir trade.PositionModify, um für das aktuelle Positionsticket den Stop Loss an den aktuellen Wert aus unserem gleitenden Durchschnitt anzupassen. Der letzte Parameter hier steht für den Take Profit Wert, aber den möchten wir nicht verändern, also steht der auf 0. Jetzt schließen wir noch die Klammern für den if loop, den for loop und für die Funktion und das wars so weit. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben was alle diese Funktionen 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 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 klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination Steuerung und R. Bitte wählen Sie hier die neu erstellte Datei SimplerSMABuyTrailingStop.ex5 aus, markieren Sie hier unten den Haken für den visuellen Modus und starten Sie Ihren Test. Hier läuft der Expert Advisor auch schon los. Wir müssen hier etwas in das Chart hineinzoomen. Hier sehen wir unseren Moving Average, also den gleitenden Durchschnitt. Und der sollte jetzt hier auch den Stop Loss nach oben hin anpassen, sobald sich der Preis nach oben bewegt. Das funktioniert so weit und Sie haben in diesem Video gelernt, wie man für einen gleitenden Durchschnitt einen Stop Loss programmieren kann. Und Sie haben das selbst getan, mit diesen paar Zeilen hier in MQL5.