MQL5 TUTORIAL GRUNDLAGEN – 87 SIMPLES SELL BUTTON OBJEKT

video
In diesem Video wollen wir uns einmal anschauen, wie man ein Objekt erstellen kann. Diesmal ist es dieser Sell-Button hier. Also lassen Sie uns einmal schauen, wie man so etwas in MQL5 programmiert. 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 SimplerSellButton, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion hier gelöscht werden und auch die zwei Kommentarzeilen können weg. Wir starten mit einem include-Statement, um uns die Datei Trade.mqh zu importieren, die Bestandteil von MQL5 ist und uns vereinfachte Handelsfunktionen bietet. Danach erstellen wir uns eine Instanz von der Klasse CTrade. Die erhält den Namen trade und wir nutzen Sie später, um vereinfachte Positionen zu eröffnen. Außerdem brauchen wir noch zwei Variablen. Einmal für den Ask-Preis und einmal für den Bid-Preis. Das sind auch die Werte, die wir in der OnTick-Funktion zuerst berechnen. Und zwar mit der Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID für die Berechnung und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommastellen für das jeweilige Währungspaar berechnet wird. Jetzt können wir das eigentliche Objekt erstellen. Das übernimmt die Funktion ObjectCreate. Wenn man die einmal markiert und die F1-Taste drückt, dann sehen wir hier eine Anzahl von Parametern und wenn man hier klickt, dann stellen wir fest, dass es eine ganze Menge unterschiedlicher Objekttypen gibt. Wir wollen in diesem Video einen Button erstellen. Das wäre dieses Objekt hier. Es handelt sich um einen Button, der auf dem Hauptchart, bei den Kerzen dargestellt werden soll. ObjectCreate benötigt einige Parameter. Der erste Parameter hier ist für das aktuelle Währungspaar auf dem Chart. Parameter Nummer 2 setzt den Namen für das Objekt. Parameter Nummer 3 ist der Objekttyp. In unserem Fall nutzen wir OBJ_BUTTON. Der 4. Parameter steht für das Fenster. Da wir das Hauptfenster nutzen wollen, ist das hier Fenster 0. Wenn sie Oszillatoren verwenden, wird in der Regel noch ein zweites Fenster unterhalb der Kerzen dargestellt. Das möchten wir in dem Fall nicht nutzen. Und auch die beiden letzten Parameter hier setzen wir auf 0. Die würde man bei anderen Objekten verwenden, um einen Wert für ein Datum oder einen Preis einen Ankerpunkt anzugeben. Das haben wir beispielsweise gemacht, als wir eine Linie gezeichnet haben, die jeweils oberhalb der höchsten Kerze gezeichnet wird. Unser Button soll aber immer an der gleichen Stelle erscheinen, darum brauchen wir diese Werte nicht. Allerdings möchte ich noch einige Eigenschaften verändern. Zum Beispiel möchte ich mit ObjectSetInteger für das aktuelle Währungspaar auf dem Chart und das Objekt mit dem Namen SellButton diese Eigenschaft hier verändern. Die heißt OBJPROP_XDISTANCE. Wir setzen sie auf 200 und das ist die Distanz in Pixeln zum Rand. Ähnlich funktioniert das Setzen der Breite des Buttons. Auch hier ObjectSetInteger für das aktuelle Währungspaar auf dem Chart und das Objekt mit dem Namen SellButton. Diesmal verändern wir die Eigenschaft OBJPROP_XSIZE und setzen die Breite des Buttons auf 200. Das Ganze wiederholen wir jetzt noch einmal für die Eigenschaft OBJPROP_YDISTANCE. Das ist dann die vertikale Distanz. Die setzen wir auf 250 Pixel und ganz ähnlich verfahren wir jetzt hier mit der Höhe des Buttons. Die dafür richtige Eigenschaft nennt sich OBJPROP_YSIZE und die Höhe des Buttons ist in unserem Fall nur 50 Pixel. Und damit die Distanzwerte eingehalten werden, können wir hier noch definieren, in welcher Ecke wir das Objekt darstellen möchten. Dazu verändern wir die Eigenschaft OBJPROP_CORNER. In meinem Fall habe ich Ecke 2 gewählt. Und damit der Button eine sinnvolle Beschriftung erhält, nutzen wir diesmal ObjectSetString und verändern die Eigenschaft OBJPROP_TEXT. Damit ändern wir die Beschriftung hier in SELL. So weit ist das schon ein fertiges Objekt, allerdings fehlt noch die Eventbehandlung, also was passieren soll, wenn der Button gedrückt wird. Darum müssen wir das jetzt programmieren. MQL5 stellt dafür eine Funktion mit dem Namen OnChartEvent bereit und wenn man die einmal markiert und die F1-Taste drückt, dann sehen wir, dass es hier eine ganze Menge von Events gibt, die wir programmieren können. Uns interessiert in diesem Fall nur, ob ein Objekt angeklickt wurde. Das können wir über CHARTEVENT_OBJECT_CLICK feststellen. Die Funktion selbst bekommt hier über einige Parameter Werte übergeben. Der erste Parameter hier steht für das Ereignis an sich. In diesem Fall interessiert uns besonders der 3. Parameter, denn der enthält den Objektnamen. Prüfen wir aber zunächst einmal, ob die ID tatsächlich den Wert CHARTEVENT_OBJECT_CLICK enthält. Denn wir möchten ja nur dann reagieren, wenn der SellButton angeklickt wurde und nicht wenn ein Klick auf dem Chart registriert wird. Und wenn das der Fall ist, dann möchten wir natürlich auch noch wissen, wie der Namen des angeklickten Objektes ist. Das bekommen wir heraus, indem wir den Wert von sparam überprüfen. Das ist hier der letzte übergebene Parameter. Und nur wenn das zutrifft, indem Fall wäre der Wert für sparam hier SellButton, weil das ist der Namen von unserem Objekt das wir hier überwachen, dann möchten wir hier eine Comment-Funktion nutzen, um auf dem Chart auszugeben: sparam wurde gedrückt. Das sollte dann zu der Ausgabe führen: SellButton wurde gedrückt. Und wenn das so ist, dann nutzen wir trade.Sell, um eine Sell-Position für 10 Microlot zu eröffnen. Zum Schluss machen wir hier noch die if-Schleife und die Funktion zu und das wars auch so weit. Falls Sie keine Ahnung haben, was alle diese Funktionen hier bewirken sollen oder wenn Ihnen das Alles zu schnell ging, dann möchten Sie sich vielleicht noch einmal die anderen Videos in dieser Grundlagenserie anschauen, vielleicht ist aber auch der Premiumkurs interessant für Sie. Den finden Sie auf unserer Webseite. Das hier war übrigens wieder eine Idee von einem Premiummitglied und wenn Sie bereits Premiummitglied sind und eine Idee für so ein Video haben, dann schicken Sie mir doch einfach eine E-Mail. Für den Moment klicken wir hier mal auf den Kompilieren-Button 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 hier klicken oder die F4-Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader öffnen wir bitte auf einem Demokonto ein leeres Chart. Der Grund dafür ist, dass wir im Strategietester die Ereignisbehandlung von Buttons nicht richtig prüfen können, da wir aber Positionen eröffnen, nutzen Sie bitte so ein Demokonto. Das kann man direkt aus dem Metatrader heraus erstellen. Es wird aber auch beim Download von MQL5 und Metatrader 5 direkt mitgeliefert. Mein Konto hat hier gerade keine offenen Positionen. Ich such mir jetzt hier also im Metatrader, über den Navigatorbereich meine neu erstellte Datei SimplerSellButton.ex5 heraus. Ziehe sie auf das Chart. Bitte achten Sie darauf, dass der Haken für Algo-Handel erlauben gesetzt ist und klicken Sie auf OK. Dann erscheint jetzt hier mein Button-Objekt. Sollte das bei Ihnen nicht so sein, dann prüfen Sie bitte hier oben, ob es auch da aktiviert ist. Klicken wir also mal auf das Objekt, dann erscheint hier oben der Text SellButton wurde gedrückt. Hier unten ist meine eröffnete Sell-Position. Unser Sell-Button funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie ein Objekt vom Typ Button so programmieren können, dass Sie mit einem Klick darauf eine Aktion auslösen können. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL5.