In diesem Video wollen wir einmal anhand dieses Indikators hier einen Buy Trailing Stop programmieren. Der vom Envelopes-Indikator gesteuert wird. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL5 programmieren kann. Um das zu tun, klicken Sie bitte hier oben auf dieses kleine Symbol oder drücken Sie die F4-Taste im Metatrader. 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 alles oberhalb der OnTick-Funktion hier gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Wir starten hier mit einem include-Befehl. Der wird uns die Datei trade.mph importieren. Die ermöglicht es uns von der Klasse C-Trade eine Instanz mit dem Namen trade zu erstellen und die werden wir gleich nutzen, um eine Testposition zu eröffnen. In der OnTick-Funktion starten wir mit einer statischen Variable vom Typ double. Die soll den Wert für den letzten Stop-Loss speichern. Danach ermitteln wir den Ask-Preis und den Bid-Preis. Das geht über 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 ermitteln wir automatisch wie viele Nachkommastellen das jeweilige Währungspaar hat. Damit wir einen Stop-Loss testen können müssen wir eine Testposition eröffnen. Das macht man natürlich nur auf einem Demokonto und immer, wenn PositionsTotal uns einen Rückgabewert von kleiner 1 zurückgibt, dann bedeutet das, dass wir keine geöffnete Position haben. Und dann eröffnen wir hier mit trade.Buy eine Testposition über 10 Microlot. Direkt im Anschluss setzen wir den letzten Stop-Loss-Wert zurück, denn mit einer neuen Position muss der Stop-Loss natürlich auch neu berechnet werden. Für unseren Envelopes-Indikator brauchen wir zwei Arrays. Die erstellen wir hier und im Anschluss nutzen wir ArraySetAsSeries, um diese beiden Arrays von der aktuellen Kerze an abwärts zu sortieren. Danach nutzen wir die in MQL5 eingebaute Funktion iEnvelopes für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit, um den Indikatorwert für 14 Kerzen zu berechnen. Den Verschiebungswert setzen wir auf 0. Wir nutzen MODE_SMA für Simple Moving Average. Das Ergebnis soll anhand der Schlusskurse berechnet werden und dieser letzte Parameter hier ist der sogenannte Diviation-Wert. Wenn Sie einmal ein leeres Chart öffnen und auf Einfügen, Indikatoren, Tendenz, Envelopes klicken, dann sehen Sie auch hier diesen Wert als Abweichung von 0.100. Wir übernehmen hier mal die Standardwerte, klicken auf OK, klicken mit der rechten Maustaste in das Chart, speichern diese Vorlage unter dem Namen tester.tpl, denn das ist die Vorlage, die wir gleich im Strategietester sehen werden. Den alten Wert können Sie hier getrost ersetzen. Weiter geht´s im Metaeditor mit dem Befehl CopyBuffer. Der wird uns anhand der Envelopes-Definition, die wir hier oben getroffen haben, die Daten für Buffer 0 und für Buffer 1 in das obere beziehungsweise in das untere Band kopieren. Wir starten jeweils mit Kerze 0 und kopieren uns Preisdaten für drei Kerzen. Um den aktuellen Wert zu berechnen, brauchen wir nur in Kerze des jeweiligen Arrays hineinzuschauen. Mit NormalizeDouble und ,6 kürze ich das Ganze hier auf sechs Nachkommastellen. Uns interessiert in diesem Fall eher die Kerze davor. Die Werte lassen sich ähnlich ermitteln. Hier schauen wir einfach auf den Wert von Kerze 1 und natürlich müssen wir auch den Namen der Variablen entsprechend anpassen. Weiter geht´s mit den Prüfkonditionen, denn wir möchten gerne wissen, ob der letzte Wert für das untere Band kleiner ist als der Bid-Preis. Als nächstes überprüfen wir, ob der Wert für das letzte untere Band größer ist als der Wert für unseren letzten Stop-Loss und wenn beide Bedingungen zutreffen,