MQL5 TUTORIAL GRUNDLAGEN – 66 SIMPLER SHIFTED EMA

video

In diesem Video wollen wir einmal einen Expert Advisor erstellen, der in der Lage ist, anhand von, nach rechts in die Zukunft verschobenen exponentiellen gleitenden Durchschnitten, Kaufen- und Verkaufen-Signale zu generieren. Also schauen wir uns 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 Meta Editor auf und hier klicken wir auf Datei, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerShiftedEMA, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb dieser OnTick-Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten hier oben mit einem include-Befehl. Der soll uns die Datei Trade.mqh importieren. Die stellt über die Klasse CTrade vereinfachte Handelsfunktionen bereit. Darum erstellen wir uns hier eine Instanz davon, mit dem Namen Trade. Außerdem möchte ich gerne drei benutzerdefinierte Variablen haben. Die erste Variable soll für die Anzahl der Kerzen, zur Berechnung von unserem gleitenden Durchschnitt genutzt werden. Und die Variablen 2 und 3 sind die jeweiligen Verschiebungswerte. Der Verschiebungswert 1 wird 20 Kerzen und der Verschiebungswert 2 100 Kerzen betragen. Das sorgt dann dafür, dass die gleitenden Durchschnitte hier rechts vom aktuellen Preis gezeichnet werden. In der OnTick-Funktion berechnen wir zunächst den Ask-Preis und den Bid-Preis. Das übernimmt die Funktion SymbolInfoDouble, für das aktuelle Währungspaar auf dem Chart. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID, bitte alles in Großbuchstaben. Und mit NormalizeDouble und _Digits sorgen wir dafür, dass je nach Währungspaar entweder drei oder fünf Nachkommastellen berechnet werden. Anschließend erstellen wir uns hier eine Variable für das Signal. Die ist vom Typ string, damit sie Text aufnehmen kann, aber wir weisen hier noch keinen Wert zu. Denn der wird jetzt ermittelt. Da wir zwei gleitende Durchschnitte nutzen wollen, brauchen wir auch zwei Arrays. Beide sind vom Typ double und sollen unsere Preisdaten für die gleitenden Durchschnitte aufnehmen. Zunächst einmal sortieren wir die beiden Arrays von der aktuellen Kerze an abwärts. Das übernimmt die Funktion ArraySetAsSerious. Für unseren ersten gleitenden Durchschnitt nutzen wir die in MQL eingebaute Funktion iMA für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir nutzen hier die Anzahl der vom Benutzer definierten Kerzen. In diesem Fall ist der Vorgabewert 20. Der Verschiebungswert für den ersten gleitenden Durchschnitt ist ebenfalls 20. MODE_EMA steht für exponentiell moving average. Und wir möchten gerne, dass die Werte anhand der Schlusskurse berechnet werden. Darum nutzen wir hier als letzten Parameter PRICE_CLOSE. Das Ganze wiederholen wir hier nochmal für den zweiten Moving Average. Vom Prinzip ist alles identisch, bis auf den Verschiebungswert. Danach können wir mit CopyBuffer anhand der Definition, die wir hier oben getroffen haben, für Buffer 0, also die eine Signallinie die wir haben, von der aktuellen Kerze 0, für 3 Kerzen ermitteln und in unseren MovingAverageArray speichern. Auch das wiederholen wir für unseren zweiten gleitenden Durchschnitt. Auch hier ist, bis auf die Namen, für das Array und die Definition alles identisch. Kommen wir zum eigentlichen Einstieg: Wenn der Ask-Price größer ist, als der Wert für Kerze 0 in unserem ersten MovingAverageArray und wenn der Ask-Price ebenfalls größer ist, als der Wert für Kerze 0 in unserem zweiten MovingAverageArray, dann ist das für uns ein Kauf-Signal. Und dann weisen wir den Wert buy unserer Signal-Variable zu. Im umgekehrten Fall, wenn der Bid-Price kleiner ist, als der Wert für Kerze 0 in unserem ersten MovingAverageArray, und wenn der Bid-Price ebenfalls kleiner ist, als der Wert für Kerze 0 in unserem zweiten MovingAverageArray, dann ist das für uns ein Verkauf-Signal und jetzt weisen wir den Begriff sell unserer Signal-Variable zu. Und wenn unser Signal den Wert sell hat, dann prüfen wir mit PositionsTotal, ob wir offene Positionen haben. Liegt dieser Wert unter 1 dann wir haben keine geöffnete Position. Und dann nutzen wir trade.Sell, um 10 Microlot zu verkaufen. Andernfalls, wenn das Signal den Wert buy hat und wir ebenfalls keine geöffneten Positionen haben, dann nutzen wir trade.Buy, um 10 Microlot zu kaufen. Zum Schluss erstellen wir mit Comment noch eine Chartausgabe. Die wir uns den Text „Das aktuelle Signal ist“ gefolgt von dem ermittelten Signal ausgeben. Das war´s so weit. Wenn Ihnen das hier zu schnell ging oder wenn Sie nicht wissen, was all diese Codezeilen bewirken wollen, dann möchten Sie sich vielleicht zunächst einmal die anderen Videos in dieser Grundlagenserie anschauen oder vielleicht ist auch der Premium-Kurs interessant für Sie. Den finden Sie auf unserer Webseite. Für den Moment klicken wir hier auf kompilieren. Das sollte hier ohne Fehler funktionieren. Und wenn das bei Ihnen auch so ist, dann können Sie hier oben auf das kleine Symbol klicken oder die F4-Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader möchten wir uns zunächst noch eine passende Schablone einrichten, damit wir im Strategietester auch sehen was passiert. Dazu stelle ich hier erst mal auf das Linienchart um. Anschließend klicken wir auf Einfügen, Indikatoren, Tendenz, Moving Average. Der erste Moving Average hat für 20 Kerzen einen Verschiebungswert von 20. Die Methode ist exponential und wir berechnen die Ergebnisse anhand der Schlusskurse. Klicken wir mal auf OK. Dann taucht der Moving Average hier auf. Das Ganze wiederholen wir jetzt noch einmal. Unser zweiter Moving Average der soll einen Verschiebungswert von 100 haben. Ich hätte gerne eine andere Farbe. Übernehmen wir das auch mit OK. Und jetzt klicken wir mit der rechten Maustaste in die Schablone, wählen Vorlagen, Vorlage speichern und speichern das Ganze unter dem Namen tester.tpl. Der alte Wert kann überschrieben werden. Tester.tpl ist die Schablone die im Strategietester genutzt wird. Bitte achten Sie darauf, dass die Eigenschaften hier übereinstimmen mit dem was wir unter Eingabe nutzen. Falls Sie den Strategietester noch nicht sehen, dann klicken Sie bitte auf Ansicht, Strategietester oder drücken sie die Tastenkombination Steuerung und R. Bitte wählen Sie hier die neu erstellte Datei SimplerShifedEMA.ex5 aus, markieren Sie die Option für den visuellen Modus und starten Sie einen Test. Uns so sieht der Expert Advisor dann im laufenden Betrieb aus. Wir haben hier ein Sell-Signal und bereits eine erste Position. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie mit MQL5 einen verschobenen exponentiellen gleitenden Durchschnitt nutzen können, um Kaufen- und Verkaufen-Signal nicht nur zu generieren sondern auch zu handeln. Und Sie haben das selbst programmiert mit diesen paar Zeilen hier in MQL5.