In diesem Video wollen wir uns einmal anschauen, wie man so einen Indikator hier programmieren kann. Es handelt sich um einen verschobenen gleitenden Durchschnitt, einen sogenannten Shifted Moving Average. Der rote gleitenden Durchschnitt hier, ist ein normaler Moving Average. Und der grüne ist der gleiche Moving Average, zwanzig Kerzen in die Zukunft verschoben. Und wir wollen jetzt einmal anschauen, wie man so was programmiert und wie man damit kaufen und verkaufen Signale erstellen kann. 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 auf Datei, Neu, Expert Advisor aus Vorlage. Ich vergebe hier mal den Namen SimplerShifteSMAEA, klicke auf Weiter, Weiter und Fertigstellen. Jetzt können Sie alles löschen, was sich oberhalb dieser OnTick Funktion befindet. Und auch die zwei Kommentarzeilen werden entfernen. Wir starten mit einem include Befehl und importieren uns die Datei Trade.mqh. Die enthält Handelsfunktionen. Und damit erstellen wir uns jetzt von der Klasse CTrade eine Instanz mit dem Namen trade. Die werden wir später benutzen, um Positionen zu eröffnen. Damit wir das können, müssen wir den Aks Preis und den Bid Preis berechnen. Das geht mit der Funktion SymbolInfoDouble. Der erste Parameter _Symbol steht für das aktuelle Währungspaar auf dem Chart. Parameter Nummer zwei, SYMBOL_ASK, wird benutzt, um den Ask Preis zu ermitteln. Bitte alles in Großbuchstaben schreiben. Und mit NormalizeDouble und _Digits stelle ich sicher, dass ich je nach Währungspaar die jeweils richtige Anzahl von Nachkommastellen berechne. Dieses Währungspaar hier hat drei Nachkommastellen, während andere Währungspaar fünf Nachkommastellen haben. Das Gleiche machen wir hier noch mal mit SYMBOL_BID, um Bid Preis zu errechnen. Danach erstellen wir uns für unser Signal eine string Variable, weisen hier aber noch keinen Wert zu, denn der muss noch ermittelt werden. Für unseren ersten gleitenden Durchschnitt erstellen wir uns ein Moving Average Array. Das Ganze machen wir auch noch mal für den verschobenen gleitenden Durchschnitt, also für den Shifted Moving Average. Unser normaler gleitender Durchschnitt wird mit der Funktion iMA erstellt. Und zwar für das aktuelle Währungspaar auf dem Chart und die auf dem Chart aktuell ausgewählte Zeiteinheit. Wir möchten das Ergebnis aufgrund der letzten zwanzig Kerzen zunächst ohne Verschiebung errechnen. Dazu nutzen wir MODE_SMA für Simple Moving Average. Und das Ganze soll errechnet werden anhand der Schlusskurse. Um das Ganze für den Shifted Moving Average zu berechnen, nutzen wir die gleichen Parameter, einen etwas anderen Namen. Und dieses Mal verändern wir den Verschiebungsparameter und machen eine zwanzig draus. Das sorgt dann dafür, dass der aktuelle gleitenden Durchschnitt noch einmal gezeichnet wird, dieses Mal zwanzig Kerzen in die Zukunft verschoben. Für jedes Array nutzen wir jetzt noch ArraySetAsSeries um von der aktuellen Kerze an, die Preise absteigend zu sortieren mit CopyBuffer. Danach nutzen wir CopyBuffer, um anhand der Moving Average Definition, die wir hier oben getroffen haben, für Buffer null, also die einzige Linie, die wir bei dem Indikator für einen gleitenden Durchschnitt sehen, von der aktuellen Kerze null für drei Kerzen, die Preisdaten zu kopieren und in unserem MovingAverageArray zu speichern. Das Ganze wiederholen wir noch mal für den Shifted Moving Average. Bitte achten Sie darauf, dass Sie den Namen und den Namen für das Array entsprechend abändern. Ansonsten ist auch diese Zeile identisch. Das Gleiche gilt für die nächsten beiden Zeilen. Hier greifen wir nämlich auf Kerze null im MovingAverageArray zu, um den aktuellen Wert für den aktuellen gleitenden Durchschnitt zu ermitteln. Und der Wert in Kerze null für den verschobenen, also für den ShiftedMovingAverage wird der Variable myShiftedAverageValue zugewiesen. Und wenn der MovingAverage größer ist,