MQL5 TUTORIAL GRUNDLAGEN – 131 STANDALONE EMA MACD EXPERT ADVISOR

video
play-rounded-fill

In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor programmieren kann, der zwei gleitende Durchschnitte und den MACD als Filter benutzt. Also schauen wir mal, wie das mit MQL5 geht. Um das zu tun, klicken Sie bitte im MetaTrader auf diesen kleinen IDE Button hier oben oder drücken Sie die F4 Taste. Das ruft dann den MetaEditor auf und ich habe hier schon eine vorprogrammierte Version. Die startet damit, dass wir mit dem Include Befehl hier oben die Datei Trade.MQH importieren.

 

Die ist Bestandteil von MQL5 und gehört zum Sprach-Umfang. Als nächstes nutzen wir wieder den Include Befehl und importieren uns zwei selbst programmierte Module. Die werden den gleitenden Durchschnitt und den MACD jeweils nutzen, um ein Einstiegs- und ein Filter Signal zu ermitteln. Anschließend berechnen wir den Ask Preis und den Bid preis. Das machen wir mit der Funktion Symbol Info Double für das aktuelle Währungspaar auf dem Chart und wir nutzen Symbol Unterstrich Ask oder Symbol Unterstrich Bid. Und mit Unterstrich Digits und Normalize double stellen wir sicher, dass wir die richtige Anzahl von NachKommastellen für das jeweilige Währungspaar ermitteln. Je nach Währung kann das nämlich unterschiedlich sein. Danach erstellen wir eine Instanz von der Klasse CTrade, die wir Trade nennen. Die stellt vereinfachte Handels-Funktionen bereit, die wir nutzen, um Positionen zu eröffnen. Weiter geht es mit der OnTick Funktion.

 

Hier nutzen wir MQL4Rates, um uns ein Informations Array für Preisdaten zu erstellen. Das wird dann mit Array set as series im Anschluss von der aktuellen Kerze an abwärts sortiert. Und mit Copy Rates füllen wir unser Array mit Preis Daten für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir starten bei der aktuellen Kerze Null und kopieren uns die Daten für drei Kerzen in unser Preis Info Array. Das ermöglicht uns, den aktuellen Preis zu ermitteln, indem wir uns den Schluss Preis für die aktuelle Kerze im Preis Info Array ausgeben lassen. Weiter geht es mit zwei String Variablen. Die eine ist für das Trading Signal und die andere ist für das Filter Signal. Dazu rufen wir eine Funktion auf. Die Check Entry EMA heißt. Und die befindet sich in diesem Modul. Und für den Filter rufen wir eine Funktion mit dem Namen Check Entry Macd auf. Die finden wir in diesem Modul.

 

Denn wenn das Trading Signal auf kaufen steht und der Filter ebenfalls auf kaufen steht und uns die Funktion Positions total einen Wert von Null zurückliefert, dann haben wir zwei Kauf Signale und keine offenen Positionen und dann nutzen wir Trade.Buy, um eine Position für zehn Mike zu eröffnen. Im anderen Fall, wenn das Trading Signal auf Sell steht, also wir ein Verkaufen Signal haben und auch der Filter sagt wir sollen verkaufen, dann prüfen wir ebenfalls, ob wir keine offenen Positionen haben. Und wenn das alles zutrifft, dann nutzen wir Trade.Sell um einer Verkaufs-Position über zehn Microlot zu eröffnen. Zum Schluss nutzen wir noch das Comment Signal, um uns das Signal für die gleitenden Durchschnitte und für den MACD auf dem Bildschirm ausgeben zu lassen. Diese beiden Module hier gibt es aber noch nicht. Die müssen wir also programmieren.

 

Das hier ist das erste. Die Funktion heißt Check entry EMA, um den exponentiellen gleitenden Durchschnitt zu ermitteln. Zunächst erstellen wir eine String Variable mit dem Namen Entry. Der weisen wir hier aber noch keinen Wert zu. Und dann erstellen wir uns zwei Arrays, eins für den Moving Average für 20 Kerzen und eins für den Moving Average für 50 Kerzen. Das geht mit der Funktion IMA für das aktuelle Währungspaar auf dem Chart und die auf dem Chart eingestellte Zeiteinheit. Das hier ist die Anzahl der Kerzen. Wir brauchen keinen Verschiebungswert. Wir nutzen Mode EMA. Das steht für Exponential Moving Average und die Ergebnisse sollen anhand der Schluss-Preise ermittelt werden. Hier machen wir das für 20 Kerzen und darunter wiederholen wir das Ganze noch mal für 50 Kerzen.

 

Jetzt nutzen wir wieder Array set as series, um unser Moving Average Array abwärts zu sortieren. Das wiederholen wir auch für die zweite Variante für die 50 Kerzen. Und mit Copy Buffer füllen wir jetzt unser Moving Average Array mit Daten. Wir tun das anhand der Definition, die wir hier weiter oben getroffen haben, und zwar für Buffer Null. Das ist die einzige Signal Linie, die ein gleitender Durchschnitt hat.