In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor erstellen kann der mit diesem Indikator hier einen Buy-Stop-Loss nachziehen kann. Es handelt sich hier um den Envelopes-Indikator. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL4 programmieren kann. 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 SimplerEnvelopesBuyTrailingStop, klicke auf weiter, weiter und fertigstellen. Jetzt kann hier alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Wir starten hier mit einer statischen Variable. Die soll uns den letzten Wert des Stop-Loss-Envelopes-Wertes aufnehmen und damit wir den Stop-Loss ausprobieren brauchen wir natürlich eine Position. Sofern wir also keine offene Position haben, wird uns der Wert OrdersTotal einen Wert von 0 zurückgeben und dann nutzen wir hier OrderSend, um eine Testkaufposition für zehn Microlot zu eröffnen. Natürlich würde man das nur auf einem Demokonto tun. Gleichzeitig setzen wir hier den letzten Stop-Loss-Wert auf 0, denn mit einer neuen Position brauchen wir natürlich auch einen neuen Wert. Im nächsten Schritt berechnen wir hier die Werte für das untere und das obere Band des Envelopes-Indikators. Das kann die Funktion iEnvelopes für uns übernehmen. Die benötigt einige Parameter. Der erste Parameter steht für das aktuelle Währungspaar, der Zweite für die auf dem Chart ausgewählte Zeiteinheit. Wir möchten unser Ergebnis gerne für 14 Kerzen berechnen. Wir nutzen MODE_SMA für Simple Moving Average. Keinen Wert für die Verschiebung. Die Ergebnisse sollen anhand der Schlusskurse berechnet werden und diesen Wert passen wir jetzt noch an. Denn wenn Sie im Metatrader einmal auf die Eigenschaften des Envelopes-Indikator klicken, dann sehen wir hier einen Wert von 0,10 Prozent für die Abweichung. Das wollen wir auch in unserem Quellcode verwenden, denn sonst passen später die optische Darstellung und die Berechnung nicht zusammen. Der vorletzte Parameter steht für das jeweilige Band. Wenn man iEnvelopes einmal markiert und die F1-Taste drückt, dann sehen wir, dass für diesen Indikator 1 für das obere und 2 für das untere Band steht. Genau das verwenden wir auch hier im vorletzten Parameter. Der letzte Parameter steht für die Kerze. Wir möchten gerne das Ergebnis für Kerze 1, also die letzte fertige Kerze berechnen und wenn der letzte Wert für unseren Stop-Loss unter dem aktuellen unteren Band liegt, dann möchten wir gern diese Funktion hier aufrufen. Die heißt CheckEnvelopesBuyTrailingStop und bekommt den unteren Bandwert als Parameter übergeben. Diese Funktion gibt es aber nicht, die müssen wir gleich noch programmieren. Als letzten Schritt in unserer OnTick-Funktion möchten wir gerne den letzten Stop-Loss mit dem aktuellen Wert für unser unteres Band füllen, damit wir diesen Wert als letzten Wert beim nächsten Aufruf der Funktion zur Verfügung haben. Kommen wir aber zur eigentlich interessanten Funktion. Die hat keinen Rückgabewert und den Namen CheckEnvelopesBuyTrailingStop. Wir übergeben hier als double-Wert den Wert für das untere Band. Mit Hilfe einer Vorschleife gehen wir hier alle offenen Positionen durch. Für jede dieser Positionen nutzen wir OrderSelect, um die aktuelle Order auszuwählen. Danach prüfen wir, ob das OrderSymbol zum Symbol auf dem Chart passt, also ob die Währungspaare übereinstimmen. Außerdem interessiert uns, ob der Order-Typ OP_BUY ist, es sich also um eine Kaufposition handelt, denn wir nutzen ja hier eine Funktion für den Buy Trailing Stop und wenn das alles zutrifft, dann möchten wir gerne noch wissen, ob der aktuelle Order-Stop-Loss für diese Position unterhalb von unserem unteren Band liegt. Treffen alle diese Bedingungen zu, dann nutzen wir die Funktion OrderModify,