![video](https://d8wyob5mxqc1u.cloudfront.net/MQL5Tutorial-DE/BASICS/MQL5-TUTORIAL-GRUNDLAGEN-114-SIMPLER-SHIFTED-PRICE-EA.png)
In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor erstellen kann, der in der Lage ist, anhand von Preisdaten auf einem Line-Chart zu handeln. Also lassen Sie uns einmal schauen, wie man so etwas 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, neue Datei, Expert Advisor aus Vorlage, weiter. Ich vergebe hier einmal den Namen SimplerShiftedPriceEA, klicke auf weiter, weiter und fertigstellen. Jetzt kann hier alles oberhalb der OnTick-Funktion gelöscht werden und auch die zwei Kommentarzeilen werden entfernt. Wir starten mit einem include-Befehl für die Datei trade.mqh.
Die ist Teil von MQL5 und stellt vereinfachte Handelsfunktionen zur Verfügung. Um diese Funktionen nutzen zu können erstellen wir uns hier eine Instanz von der Klasse CTrade. Die bekommt den Namen trade. Innerhalb der OnTick-Funktion berechnen wir uns jetzt den Ask-Preis und den Bid-Preis. Das geht mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. SYMBOL_ASK oder SYMBOL_BID liefert uns den jeweiligen Preis und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar auch berechnet wird. Außerdem brauchen wir noch eine Variable für unser Signal. Hier weisen wir aber noch keinen Wert zu, denn den möchten wir gleich noch ermitteln. Mit der Funktion MqlRates erstellen wir uns jetzt ein Preis-Array für Preisinformationen.
Das wird mit der Funktion ArraySetAsSeries im Anschluss von der aktuellen Kerze an abwärts sortiert und mit CopyRates füllen wir unser Array für das aktuelle Währungspaar auf dem Chart und die aktuell ausgewählte Zeiteinheit, von der aktuellen Kerze 0, für drei Kerzen mit Daten, die wir hier im PriceInformation-Array speichern. Wir brauchen aber noch ein zweites Array und zwar für unseren MovingAverage. Und hier nutzen wir die Funktion iMA. Für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit möchte ich gerne einen SimpleMovingAverage für eine Kerze berechnen und die Ausgabe soll 20 Kerzen in die Zukunft verschoben werden. Wir nutzen MODE_SMA, das steht für SimpleMovingAverage und die Ergebnisse sollen anhand der Schlusskurse berechnet werden. Auch in diesem Fall nutzen wir ArraySetAsSeries, um unser Array von der aktuellen Kerze an abwärts zu sortieren. Mit CopyBuffer können wir jetzt unser Array mit Daten füllen.
Anhand der Definition, die wir hier oben getroffen haben, kopieren wir uns für Buffer 0, von der aktuellen Kerze 0, für drei Kerzen, die Daten und speichern sie uns in unserem Array. Und jetzt sind wir in der Lage, den aktuellen Wert für unser Array zu ermitteln. Dazu greifen wir einfach auf Kerze 0 in unserem MovingAverageArray zu und wenn der Wert den wir da ermitteln haben unter dem aktuellen Schlusskurs für Kerze 0 in unserem Preisinformations-Array liegt, dann ist das für uns ein Buy-Signal und dann weisen wir den Begriff Buy unserer Signalvariable zu. Andernfalls, wenn der aktuelle MovingAverage-Wert größer ist als der Schlusskurs für Kerze 0 in unserem Preisinformations-Array, dann wäre das ein Verkaufen-Signal und dann weisen wir den Begriff Sell unsere Signalvariable zu. Und wenn unser Signal auf Verkaufen steht und uns der Rückgabewert für PositionsTotal einen Wert kleiner 1 liefert, dann haben wir keine geöffneten Positionen, aber ein Sell-Signal. Und jetzt nutzen wir trade.Sell, um 10 Microlot zu verkaufen. Umgekehrt, wenn unser Signal auf Kaufen steht und wir ebenfalls keine geöffneten Positionen haben, dann nutzen wir hier trade.Buy, um 10 Microlot zu kaufen.
Zum Schluss gönnen wir uns noch mit dem Comment-Befehl eine Chartausgabe. Die wird uns den Text „Das aktuelle Signal ist jetzt:“ gefolgt von dem ermittelten Signal ausgeben. Das war´s soweit. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was alle diese Codezeilen hier bewirken sollen, dann möchten Sie sich vielleicht ein anderes Grundlagenvideo aus dieser Serie noch einmal anschauen. Vielleicht ist aber auch der Premiumkurs interessant für Sie. Den finden Sie auf unserer Webseite und dort gibt´s jetzt auch einen Link zum Shop für Quelltexte wie diesen hier, aber für den Moment klicken wir hier oben mal auf Kompilieren oder drücken die F7-Taste. Das hat in meinem Fall ohne Fehler funktioniert und wenn das bei Ihnen auch so ist, dann können Sie jetzt hier oben auf dieses kleine Symbol klicken oder die F4-Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader öffnen Sie bitte ein ganz normales Kerzenchart, stellen hier oben auf die Linienansicht um, klicken mit der rechten Maustaste in das Chart und wählen Vorlage, Vorlage speichern. Bitte speichern Sie das Ganze unter tester.tpl, denn das ist die Schablone die wir gleich im Strategietester angezeigt bekommen.
Den alten Wert können Sie hier getrost überschreiben. Danach klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination Steuerung und R. Bitte wählen Sie hier die neu erstellte Datei SimplerShiftedPriceEA.ex5 aus, markieren Sie hier unten die Option für den visuellen Modus und starten Sie Ihren Test. Hier läuft unser Expert Advisor auch schon los. Aktuell haben wir ein Kaufsignal. Das sollte sich bei der nächsten Überkreuzung der beiden gleitenden Durchschnitte hier ändern und das ist jetzt gerade passiert. Unser Expert Advisor funktioniert also wie gewünscht und Sie haben in diesem kurzen Video gelernt, wie Sie anhand von Preisdaten auf einem Line-Chart mit einem verschobenen SMA reine Preisdaten handeln können und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.