MQL5 TUTORIAL – Simples Rechteck Objekt

In diesem Video möchten wir uns einmal ansehen, wie man Objekte wie dieses blaue Rechteck hier automatisiert auf dem Chart ausgeben lassen kann, das Rechteck wird von MQL5 immer neu berechnet, die Oberkante richtet sich hier nach der höchsten und die Unterkante nach der niedrigsten Kerze innerhalb der letzten dreißig Kerzen. Und wir sehen uns jetzt einmal an, wie man so etwas programmiert. Um das zu tun, klicken Sie im Metatrader hier oben auf diesen kleinen Button, oder drücken die F4-Taste. Das ruft dann hier den Metaeditor auf und hier klicken wir auf Datei – Neu – Expert Advisor aus Vorlage – weiter. Ich vergebe hier einmal den Namen Simples Rechteck, klicke auf weiter, weiter, fertigstellen und jetzt kann alles oberhalb dieser OnTick-Funktion hier gelöscht werden und das gilt auch für die zwei Kommentarzeilen. Im ersten Schritt erstellen wir uns erstmal Variablen für die höchste und die niedrigste Kerze, die bekommen auch die entsprechende Bezeichnung. Ausserdem brauchen wir jeweils ein Array für die höchsten und die niedrigsten Preise innerhalb der letzten dreissig Kerzen. Die bekommen den Namen High und Low und jedes dieser beiden Arrays wird jetzt mit ArraysetasSeries von der aktuellen Kerze an abwärts sortiert. Diese Zeile hier ist für unsere Höchstpreise, diese für die Niedrigstpreise. Mit CopyHigh speichern wir für das aktuelle Chart und die auf dem Chart ausgewählte Zeiteinheit von der aktuellen Kerze 0 für 30 Kerzen alle Höchstpreise im Array High. In dieser Zeile machen wir mittels CopyLow das Gleiche nochmal für die niedrigsten Preise. Und jetzt, da wir alle Höchst- und Niedrigstpreise haben, nutzen wir die Funktion ArrayMaximum um aus unserem Array High von der aktuellen Kerze 0 für 30 Kerzen die höchste Kerze zu ermitteln und in dieser Variable hier zu speichern. Denn ArrayMaximum sucht in einem eindimensionalen numerischen Array das maximale Element, genau wie ArrayMinimum den kleinsten Wert sucht. Jetzt haben wir unsere höchste und unsere niedrigste Kerze ermittelt. Mit MQLRates erstellen wir uns jetzt noch ein Array für Preisdaten. Auch das wird von der aktuellen Kerze an absteigend sortiert indem wir ArraySetAsSeries verwenden. Mit der Funktion CopyRates füllen wir jetzt unser Preisinformattions-Array für das aktuelle Chart und die auf dem Chart eingestellte Periode, von der Kerze 0 an für alle auf dem Chart verfügbaren Kerzen und falls es bereits ein Rechteck auf unserem Chart gab, löschen wir die alte Version indem wir ObjectDelete benutzen. ObjectDelete braucht nur zwei Parameter und das ist das aktuelle Chart und der Name von dem Objekt welches zu löschen ist. Danach können wir uns ein neues, aktuelles Rechteck erstellen. Das funktioniert mittels ObjectCreate für das aktuelle Chart. Der Name unseres Objektes soll Rechteck heissen, mit OBJ_RECTANGLE legen wir hier den Objekttyp fest. OBJ_TRIANGLE wäre zum Beispiel ein Dreieck und da gibt es noch einige Objekttypen mehr, wir bleiben aber in diesem Fall bei unserem Rechteck. Das soll im Hauptfenster 0 gezeichnet werden, die linke Kante wird bei der dreissigsten Kerze gezeichnet. Man zählt immer von der aktuellen Kerze an rückwärts. Das wäre Kerze 0, danach kommt Kerze 1, Kerze 2 und so weiter. Die obere Kante wird an der höchsten Kerze gezeichnet. Mit diesem Ausdruck holen wir uns die höchste Kerze aus unserem Preisinformations-Array. Hier sehen wir jetzt, dass diese Kerze hier den längsten Docht hat, damit ist sie die höchste Kerze und anhand dieser Daten wird die Oberkante ausgerichtet. Die rechte Kante unseres Rechteckes soll für Kerze 0 gezeichnet werden, also hier die aktuelle Kerze und für die untere Kante ermitteln wir mit diesem Ausdruck hier den niedrigsten Wert der niedrigsten Kerze innerhalb der letzten 30 Kerzen. Okay, das hier ein wenig komplex aus und das Zeichnen von Objekten gehört auch nicht gerade zu meinen Lieblingsaufgaben, aber es funktioniert. Machen wir noch ein bisschen Kosmetik. Mit ObjectSetInteger lassen sich diverse Eigenschaften verändern. In unserem Fall möchte ich auf dem aktuellen Chart 0 für unser Rechteck die Farbe von der Linie auf Blau verändern und ausserdem möchte ich mittels OBJPROP_FILL die Füllfarbe ebenfalls auf Blau setzen. Das war es auch schon. Wenn Sie soweit fertig sind, dann klicken Sie bitte hier oben auf Kompilieren oder drücken die F7-Taste. Das hat hier ohne Fehler funktioniert und darum können Sie jetzt hier klicken oder F4 drücken um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination STRG und R. Hier wählen wir dann das Programm SimplesRechteck.ex5 aus, markieren hier unten die Option für die Visualisierung und starten unseren Test. Und so sieht das Ganze dann im laufenden Betrieb aus. Unser Rechteck wird immer wieder neu gezeichnet und zeigt uns hier die Handelsspanne der letzten 30 Kerzen an. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.