In diesem Video möchten wir einmal einen Expert Advisor erstellen der in der Lage ist, den Wert von diesem Average True Range Oszillator für einen Buy Trailing Stop zu nutzen. Hier wird ein dynamischer Wert berechnet. Also lassen sie uns einmal schauen, wie man so etwas in MQL4 programmieren kann. Um das zu tun, klicken Sie 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 auf Datei, Neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerAverageTrueRangeBuyStop, 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 mit zwei Variablen. Die eine ist für den grundlegenden Stop Punkte Wert. Da werden wir 100 Punkte zu Grunde legen. Variable Nummer Zwei ist für den berechneten Stop Punkte Wert, denn wir möchten ja aufgrund des Average True Range eine dynamische Anpassung für die Stop Loss Punkte haben. In der OnTick-Funktion erstellen wir uns eine Variable für das Signal. Die ist vom Typ string. Wir weisen aber noch keinen Wert zu. Für die Berechnung des Average True Range nutzen wir die integrierte iATR-Funktion. Die ist in MQL4 enthalten und benötigt ein paar Parameter. Der erste Parameter ist für das aktuelle Chart, der zweite Parameter für das auf dem Chart ausgewählte Zeitfenster, Parameter Nummer Drei ist die Anzahl der Kerzen anhand der wir das Ergebnis berechnen möchten. In diesem Fall sind das 14 Kerzen. Und der letzte Parameter hier ist der Verschiebungswert. Den benötigen wir nicht, darum setzen wir den auf null. Außerdem nutzen wir eine statische Variable. Die bekommt den Namen OldValue, also alter Wert. Static bedeutet, dass wir diese Variable über den kompletten Zeitraum zur Verfügung haben. Selbst wenn diese Funktion hier verlassen wird, behält MetaTrader den Wert für die Variable bei. Das ist ganz nützlich, denn das ermöglicht uns, dass wir den aktuellen Average True Range Wert mit dem alten Wert vergleichen können und wenn der aktuelle Wert höher ist als der alte Wert, dann haben wir ein Kauf-Signal und dann weisen wir unserem Signal den Wert buy zu. Und wenn unser Signal auf Kaufen steht und der Rückgabewert für OrdersTotal Null beträgt, dann bedeutet das wir haben keine geöffneten Optionen, aber ein Kaufsignal und dann nutzen wir OrderSend, um eine Kaufposition für 10 Micorlot zu eröffnen. Dies hier ist natürlich eine Testposition. Auf einem Echtgeldkonto würde man das nicht machen, aber wir benötigen ja einen Position, um unseren Trailing Stop zu testen. Das werden wir tun, mit Hilfe einer Funktion, die den Namen CheckATRBuyTrailingStop bekommt. Hier übergeben wir einen Parameter für den Average True Range Wert und das Ergebnis weisen wir der Variable CalculatedStopPointValue zu. Damit wir auch was sehen, erstellen wir mit dem Comment-Befehl hier eine Chartausgabe für das Signal. Den Average True Range Wert und den berechneten Stop Punkte Wert. Danach weisen wir den aktuell berechneten Wert der Variable OldValue zu, damit wir den beim nächsten Aufruf der Funktion wieder zur Verfügung haben. Jetzt müssen wir aber noch diese Funktion hier programmieren. Unsere benutzerdefinierte Funktion bekommt den Namen ChackATRBuyTrailingStop zugewiesen. Wir übergeben hier einen double-Variable mit dem Namen AverageTrueRangeValue. Den nutzen wir hier in einer kleinen Formel, um den berechneten Stop Punkte Wert zu ermitteln, und zwar multiplizieren wir hier den Average True Value Wert mit 100.000 und addieren das Ergebnis auf den Basiswert. Danach brauchen wir noch den konkreten Preis und um den zu ermitteln, ziehen wir vom ask-Preis den berechneten Stop Loss Wert ab und multiplizieren das Ganze mit dem Punktewert für das Chart. Jetzt gehen wir mit Hilfe einer Vorschleife alle Positionen durch. Mittels OrderSelect wählen wir die jeweilige Position aus, prüfen dann,