MQL4 GRUNDLAGEN – 91 SIMPLES CHANNEL OBJEKT

video
play-sharp-fill

 

In diesem Video wollen wir uns einmal anschauen, wie man einen Channel als Objekt auf ein Chart zeichnen kann. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL4 programmieren kann.

Um das zu tun, klicken Sie bitte hier oben auf dieses kleine Symbol 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 SimplesChannelObjekt, klicke auf weiter, weiter und fertigstellen.

Jetzt kann alles oberhalb der OnTick-Funktion hier gelöscht werden. Wir entfernen auch die zwei Kommentarzeilen. In der OnTick-Funktion möchten wir zunächst mal die Anzahl der Kerzen auf dem Chart berechnen. Das übernimmt diese Funktion hier. Die heißt WindowFirstVisibleBar und die wird uns die erste sichtbare Kerze auf dem Chart ermitteln.

Außerdem hätte ich gerne gewusst, welches die niedrigste Kerze auf dem Chart ist. Das berechnet uns die Funktion iLowest, für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit. Wir nutzen hier MODE_LOW da uns nur die Niedrigstpreise jeder Kerze interessieren.

Und zwar möchten wir das wissen für die Anzahl der sichtbaren Kerzen auf dem Chart, bis zur aktuellen Kerze 0. Das Ganze wiederholen wir jetzt nochmal für die höchste Kerze auf dem Chart. Wir nutzen hier die Funktion iHighest. Auch wieder für das aktuelle Währungspaar auf dem Chart und die auf dem Chart ausgewählte Zeiteinheit.

Diesmal allerdings nutzen wir MODE_HIGH, denn diesmal interessieren uns nur die Höchstkurse.

Und auch hier von allen Kerzen auf dem Chart bis hin zur aktuellen Kerze 0. Danach nutzen wir ObjectDelete, um ein Objekt mit dem Namen SimpleChannel zu löschen. Das gibt es beim ersten Aufruf noch gar nicht. Das wollen wir aber jetzt erstellen. Und jedes Mal, wenn sich die Preise aktualisieren soll das Objekt gelöscht und neu gezeichnet werden.

Eigentlich müssten wir das hier Channel-Objekt nennen. Und um unser Objekt zu zeichnen nutzen wir die Funktion ObjectCreate. ObjectCreate übernimmt eine ganze Menge Parameter, die wir gleich der Reihe nach durchgehen werden. Der erste Parameter 0 steht für das aktuelle Chart. Parameter Nummer 2 ist eine Textkette.

Ich hab unser Objekt hier SimpleChannel genannt. Man kann vom Prinzip jeden beliebigen Namen verwenden, solange man darauf achtet, dass der Name überall gleich geschrieben wird. Parameter Nummer 3 ist der Objekt Typ. Wir haben hier OBJ_CHANNEL genutzt. Das ist dieser Objekttyp hier.

Es gibt noch jede Menge weitere Objekttypen und auch unterschiedliche Channel-Objekte. Parameter Nummer 4 bestimmt, wo unser Objekt gezeichnet werden soll. Wir möchten das gerne im Hauptfenster tun. Das ist hier das Fenster mit den Kerzen. Wenn Sie mit Oszillatoren arbeiten, wie zum Beispiel dem MAC D, dann wissen Sie, dass bei diesen Oszillatoren noch Fenster unterhalb der Kerzen gezeichnet werden. Wir hätten unseren Kanal aber gerne im Hauptfenster gezeichnet. Dazu müssen wir jetzt noch einige Koordinaten angeben.

Der erst Punkt ist der Zeitpunkt für die erste sichtbare Kerze auf dem Chart. Hier unten ist ja die Achse mit den Zeitpunkten, die gibt uns immer die aktuellen Uhrzeiten an. Für die erste Linie hätte ich gerne den niedrigsten Preis der niedrigsten Kerze als Ankerpunkt. Hier auf der Y-Achse sieht man ja immer die Werte.

Ich möchte gerne, dass unsere Objektzeichnung bis zur aktuellen Kerze geht, also dem Zeitpunkt wo die aktuelle Kerze gezeichnet wird. Der nächste Parameter ist wieder identisch mit dem hier oben. Auch hier soll unsere Linie für den niedrigsten Preis der niedrigsten Kerze gezeichnet werden, und die zweite Linie ist immer parallel zur Ersten.

Hier wählen wir als ersten Punkt den Zeitpunkt der ersten Kerze auf dem Chart aus und ich möchte gerne, dass unsere Linie durch den höchsten Preis der höchsten Kerze gezeichnet wird. Schließen wir hier noch die Klammer und setzen ein paar Objekteigenschaften. Mit Hilfe von ObjectSetInteger setzen wir für die Chart-ID 0 und das Objekt mit dem Namen SimpleChannel die Objekteigenschaft für die Farbe. Die heißt OBJPROP_COLOR, und hier hätte ich gerne eine gelbe Linie. Mit ObjektSetInteger lassen sich auch noch andere Eigenschaften verändern.

In diesem Fall nutzen wir OBJPROP_STYLE, um eine durchgezogene Linie zu erstellen. Das geht mit Hilfe von STYLE_SOLID. ObjectSetInteger kann auch genutzt werden, um die Stärke der Linie zu verändern. Das ist die Eigenschaft OBJPROP_WIDTH. Die setzen wir hier auf 3. Und die letzte Eigenschaft nennt sich OBJPROP_RAY. Die wird uns eine Objektvorschau ermöglichen. Das bedeutet, dass unser Kanal über die aktuelle Kerze hinaus gezeichnet wird. Das wars soweit. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben was diese Codezeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst eines der anderen Videos in dieser Grundlagenserie hier anschauen.

Vielleicht ist sogar der Premiumkurs interessant für Sie. Den finden Sie auf unserer Webseite. Für den Moment klicken wir hier 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 oben auf dieses kleine Symbol klicken oder die F4-Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder Sie können auch die Tastenkombination Steuerung und R nutzen. Bitte wählen Sie hier die neu erstellte Datei SimplesChannelObjekt.ex4 aus, markieren Sie die Option für den visuellen Modus und starten Sie Ihren Test.

Hier sehen wir auch schon, dass unsere Channel-Linien gezeichnet werden. Beschleunigen wir das Ganze mal etwas und zoomen ins Chart hinein. Dann sehen Sie, dass sich mit verändernden Preisen auch unsere Linien verändert gezeichnet werden. Auch wenn wir wieder hinauszoomen passen sich unsere Kanallinien an.

Unser Expert Advisor funktioniert also und Sie haben in diesem kurzen Video gelernt, wie Sie ein einfaches Channel-Objekt zeichnen können, und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL4.