MQL5 TUTORIAL GRUNDLAGEN – 20 SO PROGRAMMIEREN SIE EINEN CROSSOVER EXPERT ADVISOR

video

In diesem Video wollen wir uns einmal anschauen, wie man so einen Crossover Moving Average Expert Advisor automatisieren kann. Wir haben hier einen gelben und einen roten Moving Average. Und wenn die zwei sich überkreuzen, dann wird hier oben ein Signal generiert, das hier unten eine automatische Positionseröffnung verursacht. Und wir wollen uns in diesem Video einmal anschauen, wie man das mit 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, Neu, Expert Advisor aus Vorlage, Weiter. Ich vergebe hier mal den Namen SimplerCrossoverEA, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion gelöscht werden. Und wir entfernen auch die zwei Kommentarzeilen hier. Wir starten mit einer include Anweisung, mit der wir uns die Datei Trade.mqh importieren. Die gehört mit zum Lieferumfang von MQL5 und stellt vereinfachte Handelsfunktionen bereit. Danach erstellen wir uns hier eine Instanz von der Klasse CTrade. Die bekommt den Namen trade und wir werden sie gleich verwenden, um damit eine Position zu eröffnen. Bevor wir das aber tun können, brauchen wir erst einmal den Ask Preis und den Bid Preis. Die kann man ermitteln mit der Funktion SymbolInfoDouble. Als Parameter übergeben wir hier das aktuelle Währungspaar auf dem Chart. Das wird automatisch ermittelt durch _Symbol. Und im zweiten Parameter geben wir an, ob wir den Ask Preis oder den Bid Preis haben möchten. Für den Ask Preis verwenden wir SYMBOL_ASK, alles in Großbuchstaben. Und für den Bid Preis dann entsprechend SYMBOL_BID. NormalizeDouble und _Digits sorgt dafür, dass je nach Währungspaar entweder drei oder fünf Nachkommastellen automatisch ermittelt werden. Als nächstes brauchen wir noch eine Variable für unser Signal. Die bekommt auch den Namen Signal und zunächst einen leeren Wert zugewiesen. Für unseren Crossover brauchen wir ein SmallMovingAverageArray und ein BigMovingAverageArray. Legen wir zunächst hier oben einmal fest, dass der SmallMovingAverage einen Wert von zwanzig Kerzen und der BigMovingAverage einen Wert von fünfzig Kerzen haben soll. Wir nutzen die Funktion iMA für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit um für unseren SmallMovingAverage ohne Verschiebung, mit MODE_SMA für SimpleMovingAverage den Wert auf Basis der Schlusskurse zu berechnen. Bitte beachten Sie, dass Mode SMA und PRICE_CLOSE jeweils in Großbuchstaben geschrieben wird. Das Ganze wiederholen wir dann noch mal für den BigMovingAverage. Im Großen und Ganzen ist diese Zeile identisch. Aber dieses Mal wird halt der BigMovingAverage Wert genutzt, den wir hier oben mit fünfzig initialisiert haben. Dadurch, dass das beides hier input Variablen sind, lässt sich das später im laufenden Betrieb noch verändern. Die vier hat hier nichts zu suchen. Im Anschluss nutzen wir CopyBuffer um anhand der SmallMovingAverage Definition, die wir hier oben getroffen haben, für Buffer null, also die einzige Linie, die wir in einem gleitenden Durchschnitt als Signal zur Verfügung haben, zu berechnen. Wir hätten gerne die Daten von der aktuellen Kerze null für drei Kerzen. Und das Ergebnis wird in unserem SmallMovingAverageArray gespeichert. Das Gleiche machen wir hier noch mal für das BigMovingAverageArray. Und jetzt können wir unser Einstiegssignal berechnen. Wenn der BigMovingAverageArray für Kerze eins > SmallMovingAverageArray für Kerze eins und der BigMovingAverageArray Wert für Kerze zwei noch < als für den SmallMovingAverage für Kerze zwei, dann haben wir eine Überkreuzung und möchten kaufen. Also weisen wir den Begriff Kaufen unserer Signal Variable zu. Das Ganze gibt es auch noch mal anders rum. Wenn der Wert für Kerze eins im BigMovingAverageArray < war als für Kerze eins im SmallMovingAverageArray und der BigMovingAverageArray Wert für Kerze zwei > war, als der Wert für den SmallMovingAverageArray in Kerze zwei, dann haben wir eine Überkreuzung in die andere Richtung. Also weisen wir den Begriff Verkaufen unserer Signal Variable zu. Und wenn das Signal den Wert verkaufen hat und wir mit PositionsTotal < eins ermittelt haben, dass wir keine offenen Positionen haben, dann nutzen wir trade.Sell um zehn Mikrolot zu verkaufen. Andernfalls, wenn unser Signal auf Kaufen steht und wir ebenfalls keine offene Position haben, dann nutzen trade.Buy um zehn Mikrolot zu kaufen. Zu guter Letzt brauchen wir noch eine Chart Ausgabe. Die erstellen wir uns mit Hilfe des Comment Befehls. Der gibt uns dann den Text: Das aktuelle Signal ist, gefolgt von dem durch uns errechneten Signal aus. Im Großen und Ganzen war es da jetzt. Wem das zu schnell war oder zu viel, der sollte sich einmal den Premium Kurs anschauen oder die Videos aus dieser Serie noch mal durchgehen. Aber wenn Sie soweit alles haben, dann können Sie hier auf Kompilieren klicken oder die F7 Taste drücken. Das sollte dann hier ohne Warnungen und Fehler funktionieren. Und falls das bei Ihnen auch so ist, dann klicken Sie hier oben auf dieses kleine Symbol oder drücken Sie die F4 Taste, um in den Metatrader zurückzukehren. Im Metatrader nutzen wir jetzt einen kleinen Trick. Wir klicken auf Einfügen, Indikatoren, Moving Average, wählen hier für die Periode zwanzig Kerzen aus. Die Verschiebung stellen wir auf null. Wir möchten gerne einen Simple Moving Average, der auf Schlusskursen basierend berechnet wird in roter Farbe auf dem Chart sehen. Also klicken wir hier auf Okay. Dann wiederholen wir das Ganze. Der nächste Moving Average soll gelb werden. Und hier möchten wir gerne den Wert auf fünfzig Kerzen ändern. Übernehmen wir das mit Okay. Dann sehen wir hier beide Moving Averages auf dem Chart. Jetzt klicken wir hier mit der rechten Maustaste, wählen Vorlagen, Vorlage speichern und speichern das Ganze unter dem Namen tester.tpl. Denn das ist die Schablone, die im Backtest verwendet wird. Danach klicken wir auf Ansicht, Strategietester oder drücken Ctrl+R. Das ruft dann den Strategietester auf und hier wählen wir die neu erstellte Datei SimplerCrossoverEA.ex5 aus. Bitte markieren Sie auch hier die Option für die Visualisierung und starten Sie Ihren Test. Und so sieht das Ganze jetzt im laufenden Betrieb aus. Wir haben hier bereits eine erste Überkreuzung und einen Verkaufstrade eröffnet. Unser Expert Advisor generiert hier oben fleißig Signale. Wenn Sie den Test stoppen und hier auf Eingaben klicken, dann sehen Sie, dass die von uns definierten Werte hier auch verändert werden können. Ich ändere das jetzt mal für den SmallMovingAverage auf dreißig Kerzen. Bitte vergessen Sie aber nicht, dann auch für die Schablone den Moving Average Wert hier in den Einstellungen anzupassen und die Vorlage erneut zu speichern, und zwar als tester.tpl. Danach können Sie den Test erneut starten. Und wie man sieht, hat der rote Moving Average jetzt den Wert dreißig in runden Klammern. Auch hier wurde ein Signal erzeugt. Und Sie haben in diesem kurzen Video gelernt, wie Sie für zwei gleitende Durchschnitte einen voll automatischen Expert Advisor programmieren können, der auch in der Lage ist, die generierten Signale zu handeln. Außerdem können Sie die Werte für die gleitenden Durchschnitte später zur Laufzeit selber ändern. Und Sie haben das alles selbst programmiert, mit diesen paar Zeilen hier in MQL5. [download id="1892"]