MQL5 TUTORIAL GRUNDLAGEN – 92 SIMPLER DEVIATION CHANNEL

video
play-sharp-fill

 

In diesem Video wollen wir uns einmal anschauen, wie man ein solches Objekt hier zeichnen kann. Es handelt sich um einen sogenannten Diviation Channel. Der zeigt uns hier grade die Trendrichtung an. Und wir wollen uns einmal anschauen, wie man so etwas in MQL5 programmieren kann. Um das zu tun, klicken Sie 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 mal den Namen SimplesDevChannelObjekt, 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 damit, dass wir die Anzahl der Kerzen auf dem Chart berechnen. Das geht mit der Funktion ChartGetInteger für die Chart-ID null. Und wir möchten gerne diese Eigenschaft hier ermitteln. Die nennt sich CHART_FIRST_VISIBLE_BAR. Der letzte Parameter steht für das Fenster, das ist Fenster null. Damit wird das Fenster bezeichnet, in dem sich die Kerzen befinden. Jetzt erstellen wir uns mal eine Variable für die niedrigste Kerze. Außerdem benötige ich noch ein Array für die niedrigsten Kerzenpreise. Das Ganze wiederholen wir nochmal, denn wir möchten auch die höchsten Kerzenpreise ermitteln. Mit ArraySetAsSeries werden jetzt beide Arrays von der aktuellen an abwärts sortiert. Und mit CopyLow können wir jetzt für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit, von der aktuellen Kerze null für alle Kerzen auf dem Chart, die niedrigsten Preise ermitteln. Die werden dann in unserem Array Low gespeichert. Das Gegenstück dazu heißt CopyHigh. Auch hier für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit, von der aktuellen Kerze null für alle Kerzen auf dem Chart werden die höchsten Preise ermittelt und in unserem Array mit dem Namen High gespeichert. Jetzt können wir die niedrigste Kerze auf dem Chart berechnen. Das übernimmt die Funktion ArrayMinimum. Die schaut in unserem Array mit dem Namen Low von der aktuellen Kerze null für alle Kerzen auf dem Chart nach dem minimalen Wert und speichert ihn in dieser Variable. Das gibt es natürlich dann auch noch für die höchste Kerze. Da heißt die Funktion ArrayMaximum. Die schaut in dem High Array, auch von der aktuellen Kerze null für alle Kerzen auf dem Chart nach dem höchsten Wert und speichert ihn in dieser Variable. Zusätzlich nutzen wir jetzt noch MqlRates. MqlRates speichert nämlich neben den Preisinformationen auch die Zeitinformationen. Auch dieses Array wird mit ArraySetAsSeries von der aktuellen Kerze an abwärts sortiert. Im Anschluss nutzen wir CopyRates für das aktuelle Währungspaar auf dem Chart und die aktuell ausgewählte Zeiteinheit, um von der aktuellen Kerze für alle Kerzen auf dem Chart die Preisinformationen in unserem Array zu speichern. Jetzt haben wir die grundlegenden Daten, die wir zum Zeichnen unseres Kanal Objektes benötigen. Bevor wir das aber tun, nutzen wir hier ObjectDelete, um für das aktuelle Währungspaar alle alten Objekte zu löschen, die diesen Namen hier haben. Beim allerersten Aufruf dieser Funktion gibt es noch kein Objekt. Aber danach soll immer der alte Kanal gelöscht werden, bevor ein neuer gezeichnet wird. Das machen wir mit Hilfe der Funktion ObjectCreate. Die braucht einige Informationen. Der erste Parameter steht für die Chart-ID. Das wird hier mit null angegeben. Also ändern wir das mal entsprechend. Parameter Nummer zwei steht für den Objektnamen. Ich habe dieses Objekt SimpleChannelObject genannt. Im dritten Parameter wird der Typ des Objektes angegeben. Wenn wir das mal markieren und die F1 Taste drücken, dann sehen wir, dass es unterschiedliche Objekttypen gibt, die unterschiedliche Parameter benötigen. In unserem Fall ist es ein Diviation Channel, also ein Kanal für die Abweichung, hier übersetzt mit Kanal der Standardabweichung. Parameter Nummer vier sagt Metatrader, dass das Objekt auf dem Hauptchart gezeichnet werden soll. Und jetzt kommen die Koordinaten. Der erste Angelpunkt ist der Zeitpunkt für die vorletzte Kerze auf dem Chart. Punkt time bedeutet Zeitpunkt. Und dieser Ausdruck hier zieht vom Index der Kerzen auf dem Chart eine Kerze ab. Wenn Sie das nicht tun, dann bekommen Sie einen Speicherüberlauf. Koordinate Nummer zwei setzen wir für die niedrigste Kerzen und auf den niedrigsten Preis. Unser Objekt soll bis zur aktuellen Kerze gezeichnet werden. Der nächste Parameter steht wieder für die niedrigste Kerze und den niedrigsten Preis. Und für die zweite Linie geben wir hier wieder die Anzahl der Kerzen auf dem Chart minus eins an, übergeben hier den Zeitpunkt dafür. Der letzte Parameter beschreibt die höchste Kerze und dort den höchsten Preis. Diese Objekteigenschaften können Sie natürlich anpassen wie Sie möchten. Für dieses einfach Beispiel soll uns das aber so reichen. Jetzt verändern wir noch ein paar Objekteigenschaften. Das geht mit der Funktion ObjectSetInteger. Für Chart-ID null möchten wir für das Objekt mit dem Namen SimpleChannelObject die Objekteigenschaft Farbe verändern. Die heißt OBJPROP_COLOR und wir setzen die hier auf Gelb. Mit Hilfe von ObjectSetDouble setzen wir für die gleiche Chart-ID und das gleiche Objekt die Eigenschaft OBJPROP_DEVIATION. Ich verwende hier einen Wert von zwei. Dieser Wert steht für die Abweichung. Die Übersetzung hier ist nicht ganz gelungen. Vom Prinzip hat es damit zu tun, wie weit die äußeren Linien voneinander entfernt gezeichnet werden. Weiter geht es mit der Eigenschaft OBJPROP_WIDTH. Die steht für die Breite, in unserem Fall die Linienstärke und die habe ich hier auf eins gesetzt. Und als letzte Eigenschaft setzen wir OBJPROP_RAY_RIGHT. Die Eigenschaft wird auf true, also wahr, gesetzt. Denn das wird uns eine Objektvorschau ermöglichen. Das bedeutet, dass unser Kanal über die aktuelle Kerze hinaus und in die Zukunft gezeichnet wird. Das war es soweit. Wenn Ihnen das hier zu schnell ging oder wenn Sie nicht wissen, was alle diese Code Zeilen hier bewirken sollen, dann möchten Sie vielleicht zunächst eines der anderen Videos in der Grundlagenserie noch einmal anschauen. Vielleicht ist aber auch der Premium Kurs interessant für Sie. Den finden Sie auf unserer Webseite. Und wenn Sie schon ein Premium Kurs Mitglied sind und eine Idee für so ein Video haben, dann schreiben Sie mir einfach ein E-Mail. Wir klicken jetzt hier mal auf Ansicht, Werkzeugliste und auf Kompilieren oder drücken die F7 Taste. Das hat bei mir ohne Fehler funktioniert. Und wenn das bei Ihnen auch so ist, dann können Sie jetzt hier rechts oben auf dieses kleine Symbol klicken oder die F4 Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir Ansicht, Strategietester oder drücken die Tastenkombination Ctrl+R. Bitte wählen Sie hier die neu erstellte Datei SimplesDevChannelObjekt .ex5 aus, markieren Sie die Option für den visuellen Modus und starten Sie Ihren Test. Und wenn wir einmal hinein zoomen, dann sehen wir, dass der Kanal auch entsprechend angepasst wird. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie ein Objekt zeichnen können, das einen Standard Diviation Kanal auf Ihrem Chart zeichnet. Und Sie haben das selbst getan, mit diesen paar Zeilen hier in MQL5.