MQL5 GRUNDLAGEN – 84 SIMPLER BOLLINGER BANDS SELL TRAILING STOP

video
play-sharp-fill

In diesem Video wollen wir uns einmal anschauen, wie man einen Sell Trailing Stop für das obere Bollinger Band programmieren kann. Also lassen Sie uns einmal schauen, wie man so etwas im Metatrader programmiert. 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 SimplerBollingerBandsSellTrailingStop, 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 oben mit einem include-Befehl. Der wird uns die in MQL5 enthaltene Datei trade.mqh importieren. Und die enthält eine Klasse mit dem Namen CTrade. Davon erstellen wir uns jetzt eine Instanz und geben ihr den Namen trade. In der OnTick-Funktion starten wir mit einer statischen double-Variable. Die bekommt den Namen LastStopBollingerBandsValue und die wird immer den letzten Wert aufnehmen, den wir dann mit dem aktuellen Wert vergleichen. Jetzt berechnen wir den Ask Preis und den Bid Preis. Das übernimmt die 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 wir die richtige Anzahl von Nachkommastellen berechnen. Je nach Währung können das nämlich 3 oder 5 Nachkommastellen sein. Damit wir einen Trailing Stop nachziehen können, prüfen wir jetzt, ob die Anzahl der Positionen kleiner ist als 1 und wenn wir keine geöffnete Position haben, dann nutzen wir trade.Sell, um uns eine Testposition über 10 Microlot zu eröffnen. Natürlich würde man das nur auf dem Demokonto oder im Strategietester machen. Danach setzen wir die Variable LastStopBollingerBandsValue auf einen sehr hohen Wert von 1000. Den werden wir in der Realität nie haben und theoretisch könnten wir den hier auch auf 0 setzen, aber dann müssten wir zusätzliche Überprüfungen einbauen und für dieses einfache Beispiel soll uns das hier so reichen. Weiter geht es mit der Erstellung von zwei Arrays für das obere und für das untere Bollinger Band. Es gäbe auch noch das mittlere Band, aber das wird in diesem Fall nicht benötigt. Mit ArraySetAsSeries sortieren wir uns beide Bollinger Bänder von der aktuellen Kerze an abwärts. Mit der Funktion iBands, die in MQL5 eingebaut ist, können wir jetzt für das aktuelle Währungspaar und die auf dem Chart eingestellte Zeiteinheit die Bollinger Bänder für 20 Kerzen berechnen. Wir nutzen hier keinen Wert für die Verschiebung. Der Wert für die Deviation beträgt 2. Wenn man mal auf die Eigenschaften der Bollinger Bänder klickt, dann wird das in Deutsch mit Abweichung übersetzt. Wir möchten die Werte anhand der Schlusskurse berechnen und darum nutzen wir hier als letzten Parameter PRICE_CLOSE, bitte alles in Großbuchstaben. Jetzt füllen wir unser Array für das obere und das untere Bollinger Band, und zwar mittels CopyBuffer. Anhand der Bollinger Band Definition, die wir hier oben getroffen haben, für das obere Band machen wir das für Buffer 1, für das unter nutzen wir Buffer 2 und für beide gilt, wir starten mit der aktuellen Kerze 0 und kopieren die Werte für 3 Kerzen, um sie in unseren Arrays zu speichern. Und jetzt können wir auf Kerze 1 in unserem Array zugreifen, um das letzte obere und das letzte untere Bollinger Band zu berechnen. Kerze 1 nutzen wir, weil es für die aktuelle Kerze 0 keinen Schlusskurs gibt. Da würde uns ein sich ständig ändernder Wert angezeigt. Jetzt prüfen wir noch einige Dinge ab. Wir möchten gerne wissen, ob der Wert für das obere Bollinger Band größer ist als der Ask Preis und außerdem möchten wir den Stop Loss nur dann verschieben, wenn der Wert für das Bollinger Band kleiner ist als der letzte Wert für dieses Band. Denn sonst würden wir den Trailing Stop auch wieder nach oben verschieben und das macht bei einem Sell Trailing Stop keinen Sinn. Wenn beides zutrifft, dann rufen wir eine Funktion auf, die den Namen hat, CheckBollingerSellTrailingStop und übergeben ihr hier den Wert für das obere Bollinger Band. Danach weisen wir den aktuellen Wert für das Bollinger Band dem letzten Stop Loss Wert zu, denn beim nächsten Aufruf der Funktion wollen wir das ja wieder vergleichen. Diese Funktion hier gibt es noch nicht, also müssen wir die jetzt programmieren. Wir nutzen hier void, da wir keinen Rückgabetyp benötigen. Der Name der Funktion soll CheckBollingerSellTrailingStop sein und wir erhalten hier eine Variable für das obere Bollinger Band. Danach gehen wir hier mit einer Vorschleife alle Positionen durch und mit PositionGetSymbol, für den aktuellen Wert des Schleifenzählers, holen wir uns hier das Währungspaar für die aktuelle Position, denn im nächsten Schritt möchten wir überprüfen, ob das Währungspaar auf dem Chart und das Währungspaar für die Position zusammenpassen. Sofern das der Fall ist, ermitteln wir hier die Ticketnummer, in dem wir die Funktion PositionGetInteger mit dem Parameter POSITION_TICKET nutzen. Außerdem holen wir uns noch den aktuellen Stop Loss für die Position. Das geht mit PositionGetDouble und hier übergeben wir als Parameter POSITION_SL. Und wenn der aktuelle Stop Loss größer ist als der Wert für das obere Bollinger Band oder wenn der aktuelle Stop Loss überhaupt keinen Wert hat, dann nutzen wir trade.PositionModify für das aktuelle Positionsticket und passen den Stop Loss Wert für das obere Bollinger Band an. Den Take Profit Wert lassen wir hier unverändert. Falls Sie diese Überprüfung hier vergessen und bei der Eröffnung der Position keinen Stop Loss gesetzt haben, würde unser Trailing Stop niemals verändert werden. Also bitte denken Sie daran. Zum Schluss machen wir hier noch unsere Schleifen und unsere Funktion zu. Und das wars auch so weit. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was alle diese Codezeilen bewirken sollen, dann möchten Sie sich vielleicht zunächst die anderen Videos aus dieser Grundlagenserie noch einmal anschauen. Vielleicht ist aber auch der Premiumkurs interessant für Sie. Den finden Sie auf unserer Webseite. Für den Moment blenden wir hier mal die Werkzeugliste ein und klicken hier auf Kompilieren oder drücken die F7-Taste. Und wenn das bei Ihnen auch so ist, dann klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken 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 SimplerBollingerBandSellTrailingStop.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 und wir sehen, dass der Sell Trailing Stop anhand des oberen Bollinger Bandes nachgezogen wird. Es funktioniert also alles wie es soll. Und Sie haben in diesem kurzen Video gelernt, wie Sie für das obere Bollinger Band, mit MQL5, einen Sell Trailing Stop programmieren können. Und Sie haben das selbst getan, mit diesen paar Zeilen hier in MQL5.