MQL5 Tutorial – Simpler Höchst, Niedrigst- und Durchschnittspreis

In diesem Video schauen wir uns einmal an, wie man für eine bestimmte Anzahl von Kerzen den höchsten, den niedrigsten und den Durchschnittspreis errechnen kann. In diesem Fall haben wir hier einen niedrigsten Preis von 1.20083. Der Höchstpreis liegt bei 1.20089, und der Durchschnitt liegt in der Mitte bei 1.20086. Ein solcher Expert Advisor kann beispielsweise dazu genutzt werden, um intelligente Handelsentscheidungen zu treffen, wenn sich der Durschnitt, der Höchstpreis oder der Niedrigstpreis sehr stark verändert, z.B. wenn die Volatilität steigt. Wir ermitteln die Preisdaten hier anhand der letzten 10 Minuten-Kerzen. Und in diesem Video wollen wir einmal anschauen, wie man in MQL5 einen Expert Advisor programmieren kann, der uns diese Preisdaten hier berechnet und anzeigt.
Um das zu tun, klicken Sie bitte im Meta-Editor auf diesen kleinen Button hier, oder drücken die F4-Taste. Das ruft dann hier den Meta-Editor auf, und hier klicken wir auf “Datei/ Neu/ Expert Advisor (Vorlage)/ Weiter”. Ich vergebe hier mal den Namen “SimplerHoechstNiedrigstUndDurchschnittspreis”, klicke auf “Weiter/ Weiter/ Fertigstellen”. Und jetzt kann alles oberhalb dieser OnTick-Funktion hier entfernt werden; und auch die zwei Kommentarzeilen werden gelöscht. Zunächst erstellen wir uns einmal eine Variable für die höchste und niedrigste Kerze. Beide Variablen sind vom Typ “Int” und bekommen die Bezeichnung “HoechsteKerze” und “NiedrigsteKerze”. Das sind deshalb Int-Variablen, weil sie die Nummer für die höchste oder niedrigste Kerze aufnehmen werden. Zusätzlich brauchen wir noch zwei Arrays für die höchsten und niedrigsten Kerzen. Die bekommen den Namen “High” und “Low”, und anhand dieser eckigen Klammern hier kann man erkennen, dass sie mehrere gleichartige Werte aufnehmen werden. Sie sind vom Typ Double, damit sie Preisdaten mit Nachkommastellen verarbeiten können. Mit dem MQL5-Befehl ArraySetAsSeries sortieren wir ein Array von der aktuellen Kerze an abwärts. In diesem Fall für das High-Array, welches die Höchstpreisdaten aufnimmt; und das Ganze machen wir nochmal genauso für das Low-Array. Hier kommen die Niedrigstpreise rein. Und mit dem integrierten MQL5-Befehl CopyHigh kopieren wir für das aktuelle Währungspaar und die auf dem Chart ausgewählte Periode von der aktuellen Kerze 0 für 10 Kerzen die Höchstwerte in unser High-Array. Das Ganze machen wir dann nochmal; diesmal nutzen wir das Low-Array und den MQL5-Befehl CopyLow. Und um die höchste der 10 Kerzen zu berechnen, nutzen wir den Befehl ArrayMaximum. Der sucht in unserem Array nach dem maximalen Element. Da wir im High-Array von der aktuellen Kerze für 10 Kerzen suchen, liefert uns ArrayMaximum die höchste Kerze zurück. Natürlich gibt es auch noch den Befehl ArrayMinimum; der macht das gleiche im Low-Array, ebenfalls von der aktuellen Kerze für 10 Kerzen und liefert uns die niedrigste Kerze.
Jetzt brauchen wir noch ein Array für die Preisdaten. Das wird mit MqlRates erstellt und soll mein PreisArray heißen, denn die „HoechsteKerze“ und die „NiedrigsteKerze“ enthalten nur die Nummer. Also wenn das hier die aktuelle Kerze 0 ist, und das hier die niedrigste Kerze ist, dann würden wir hier die Nummer der niedrigsten Kerze zurückgeliefert bekommen, aber jede Kerze hat natürlich auch noch Preisdaten. Und MqlRates bewahrt die Information über Preise, Volumen und Spread auf. Dazu gehören die Höchst- und die Niedrigstpreise, der Eröffnungskurs und der Schlusskurs; und diese Daten benötigen wir gleich. Auch unser PreisArray wird mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Danach kopieren wir die Preisdaten in unser PreisArray. Das macht die Funktion CopyRates. Die liefert uns für das aktuelle Währungspaar und die auf dem Chart ausgewählte Zeiteinheit von der aktuellen Kerze 0 mit diesem Ausdruck hier sämtliche verfügbaren Kerzen und speichert alle diese Preisdaten in unserem PreisArray. Um den höchsten Preis zu ermitteln, greifen wir auf den höchsten Punkt der “HöchsteKerze” in unserem PreisArray zu und speichern ihn in der Variable “hoechsterPreis”. Genauso speichern wir für den “niedrigsterPreis” den niedrigsten Wert der “NiedrigsteKerze” aus unserem PreisArray. Und um den Durchschnitt zu berechnen, addieren wir den höchsten und den niedrigsten Preis, teilen das Ergebnis durch 2, und mit NormalizeDouble und dieser 6 hier sorgen wir dafür, dass der Durchschnittspreis eine Nachkommastelle mehr enthält. Das ist für uns Menschen besser lesbar, denn andernfalls würde der Durchschnitt hier aufgerundet. Und das Ergebnis aus dieser Berechnung weisen wir der Variable “durchschnittlicherPreis” zu. Mit der Comment-Funktion geben wir jetzt auf unserem Chart den Höchstpreis, den Durchschnitt und den niedrigsten Preis aus, jeweils in einer neuen Zeile.
Und wenn Sie fertig sind, dann können Sie mit der F7-Taste, oder falls Sie über Ansicht die Werkzeugleiste einblenden, mit dem Kompilieren-Button hier Ihren Quelltext kompilieren. Und wenn das ohne Fehler und Warnungen über die Bühne geht, dann wechseln wir mit diesem kleinen Button hier, oder mit der F4-Taste zurück in den MetaTrader. Und im MetaTrader klicken wir auf “Ansicht/ Strategietester” oder drücken die Tastenkombination Strg+R. Hier wählen wir jetzt die Datei “SimplerHoechstNiedrigstUndDurchschnittspreis.ex5” aus, markieren hier die Option für die Visualisierung und starten unseren Test. Und jetzt sollten Sie auf Ihrem Chart hier oben die drei Preise angezeigt bekommen. Und Sie haben diesen Expert Advisor selbst programmiert, mit diesen paar Zeilen hier in MQL5.

Download “MQL5 TUTORIAL DEUTSCH - SIMPLER HOECHST- NIEDRIGST- UND DURCHSCHNITTSPREIS” – 61-mal heruntergeladen – 1 KB