In diesem Video wollen wir uns einmal anschauen, wie man für einen gleitenden Durchschnitt, wie diesen hier, einen Expert Advisor programmieren kann, bei dem man die Anzahl der Kerzen ohne Veränderung im Quellcode über eine Benutzervariable verändern kann. Hier werden auch Einstiegssignale produziert. Dieser Expert Advisor macht das gerade aufgrund von 50 Kerzen für einen einfachen gleitenden Durchschnitt. Schauen wir uns also einmal an, wie man so etwas in MQL5 programmieren 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, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier mal den Namen SimpleExterneKerzenanzahl. Hänge noch ein EA dran. Klicke auf weiter, weiter und fertigstellen. Alles oberhalb dieser OnTick-Funktion hier kann gelöscht werden und wir entfernen auch die zwei Kommentarzeilen. Zunächst starten wir mit einem Include-Befehl. Damit importieren wir vereinfachte Handelsfunktionen aus der Datei trade.mqh. Die ist Bestandteil von MQL5. Im nächsten Schritt erstellen wir uns eine Instanz von der Klasse CTrade. Die brauchen wir später, um damit Positionen zu eröffnen und danach erstellen wir eine externe Variable für die Anzahl der Kerzen. Die bekommt hier vorne eine Ergänzung. Einen sogenannten Modifier-Input. Das bedeutet so viel wie externe Benutzereingabe. Die Variable soll Kerzenanzahl heißen und der Initialwert ist 1. Innerhalb der OnTick-Funktion müssen wir uns zunächst den Ask- und den Bid-Preis besorgen. Das geht mit der Funktion SymbolInfoDouble. Für das aktuelle Währungspaar auf dem Chart. Wir nutzen SYMBOL_ASK oder SYMBOL_BID um uns jeweils den Ask- oder den Bid-Preis zu holen. Und mit NormalizeDouble und _Digits sorgen wir dafür, dass auch je nach Währungspaar die richtige Anzahl von Nachkommastellen berechnet wird. Mit MqlRates erstellen wir uns jetzt ein Array für die Preisdaten. Das bekommt den Namen PriceInfo. Im nächsten Schritt nutzen wir ArraySetAsSeries um unser neu erstelltes Array von der aktuellen Kerze an abwärts zu sortieren. Und danach nutzen wir die Funktion CopyRates für das aktuelle Währungspaar auf dem Chart und das aktuell ausgewählte Zeitfenster, um uns von Kerze 0 bis Kerze 3 die Daten zu besorgen und in unserem PriceInfo-Array zu speichern. Das hier ist eigentlich die alte Darstellung. Man kann das durch _Symbol und _Period ersetzen. Denn wenn man das einmal markiert und die F1-Taste drückt, dann lernen wir, man kann das untereinander austauschen. Jetzt möchte ich gern noch eine Variable für unser Signal. Die ist vom Typ string, damit sie Textketten aufnehmen kann. Wir weisen hier aber zunächst noch keinen Wert zu, denn den möchten wir noch berechnen. Für unseren einfach gleitenden Durchschnitt brauchen wir noch ein Array. Das nenne wir hier myMovingAverageArray. Und um den Moving-Average, also den gleitenden Durchschnitt zu berechnen, gibt es die interne Funktion iMA. Die ist Bestandteil von MQL5 und benötigt hier eine Reihe von Parametern für die Berechnung. Der erste Parameter ist für das aktuelle Währungspaar. Der zweite Parameter steht für die aktuell ermittelte Zeiteinheit auf dem Chart. Hier ist die variable für die Kerzenanzahl, die wir selbst bestimmen können. Dieser Parameter hier könnte ein Verschiebung nach rechts oder links bewirken. Das brauchen wir in diesem Fall nicht, darum steht der Parameter auf 0. MODE_SMA steht für SimpleMovingAverage, also einfachen gleitenden Durchschnitt. MODE_EMA währe beispielsweise ein einfacher exponentieller Durchschnitt. Und der letzte Parameter hier PRICE_CLOSE steht für die Berechnung anhand der Schlusskurse. Um unser Array mit Daten zu füllen, nutzen wir CopyBuffer. Damit wird anhand der movingAverage-Definition, die wir oben getroffen haben, für Buffer 0, also für diese rote Signallinie vom gleitenden Durchschnitt, von der aktuellen Kerze an, für drei Kerzen,