MQL5 TUTORIAL GRUNDLAGEN – 86 SIMPLER BUY BUTTON

video

In diesem Video wollen wir uns einmal anschauen, wie man ein solches Objekt hier programmieren kann. Es handelt sich um einen BuyButton. Und wir wollen mal schauen, wie man so etwas mit dem Metatrader 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 mal den Namen SimplerBuyButton, klicke auf weiter, weiter und fertigstellen. Jetzt kann alles oberhalb der OnTick-Funktion hier gelöscht werden. Und auch die zwei Kommentarzeilen werden entfernt. Wir starten hier oben mit einem include-Befehl. Der wird die Datei trade.mqh importieren. Die ist Bestandteil von MQL5 und bietet uns vereinfachte Handelsfunktionen. Sie enthält auch die Klasse CTrade von der wir uns eine Instanz mit dem Namen trade erstellen. Als nächstes erstellen wir uns hier double-Variablen für den Ask- und den Bid-Preis. Und das ist auch das Erste was wir innerhalb der OnTick-Funktion berechnen möchten. Der Ask-Preis wird berechnet über die Funktion SymbolInfoDouble. Wir übergeben hier als Parameter _Symbol für das aktuelle Währungspaar auf dem Chart. Für den Ask-Preis ist der zweite Parameter SYMBOL_ASK, bitte alles in Großbuchstaben schreiben. Und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommstellen für das jeweilige Währungspaar berechnet wird. Für den Bid-Preis ist das ziemlich identisch, bis auf den Namen für die Variable. Und als 2 Parameter nutzen wir hier SYMBOL_BID. Im Anschluss erstellen wir ein Objekt. Das übernimmt die Funktion ObjectCreate. Hier übergeben wir als ersten Parameter das aktuelle Währungspaar, also _Symbol. Parameter Nummer 2 ist der Name für das Objekt. Das bekommt bei uns jetzt den Namen BuyButton. Parameter Nummer 3 ist der Objekttyp. Wir nutzen hier OBJ_BUTTON und wenn man das einmal markiert und die F1-Taste drückt, dann sieht man, dass es hier eine ganze Reihe von Objekttypen gibt. Uns interessiert diese Art von Objekt, wo man einen Button direkt auf dem Chart anzeigen lassen kann. Parameter Nummer 3 steht für das Fenster, das wir nutzen wollen. In diesem Fall ist das Hauptchart, dass ist das Chart wo die Kerzen angezeigt werden. Wenn Sie auf Einfügen, Indikatoren, Oszillatoren und MACD klicken, dann würden Sie jetzt hier ein zweites Fenster für Oszillatoren angezeigt bekommen. Das wollen wir aber nicht nutzen. Wir hätten den Button lieber auf dem Chart mit den Kerzen. Der nächste Parameter steht für ein Datum. Hier brauchen wir keinen Wert, genau so wenig, wie für den letzten Parameter. Das wäre ein Preis. Wir müssen unseren Preis aber nicht bewegen. Darum setzen wir jetzt die Eigenschaften über ObjectSetInteger für das aktuelle Währungspaar auf dem Chart und für das Objekt mit dem Namen BuyButton möchte ich gerne diese Eigenschaft hier verändern. OBJPROP_XDISTANCE, die setze ich auf 200. Als nächstes möchte ich gern die Breite verändern. Auch hier nutze ich ObjectSetInteger für das aktuelle Währungspaar und das Objekt mit dem Namen BuyButton. Und diesmal verändere ich die Eigenschaft OBJPROP_XSIZE. Das ist die Breite von unserem Knopf. Und auch hier verwenden wir 200 Pixel. Der Abstand vom Rand wird jetzt nochmal für die Höhe gesetzt. Hier war das OBJPROP_XDISTANCE. Für die Y-Achse wäre das OBJPROP_YDISTANCE. Auch hier wieder 200 Pixel. Und jetzt setzen wir noch eine weiter integer-Eigenschaft. Die heißt OBJPROP_YSIZE. Hier handelt es sich um die Höhe des Buttons und da reichen uns 50 Pixel, denn sonst wäre der Button ein bisschen groß. Außerdem kann man in MQL5 sagen, in welcher Ecke das Objekt auftauchen soll. Dafür gibt’s die Objekteigenschaft OBJPROP_CORNER. Ich hab mich hier für Ecke 2 entschieden. Und von dort aus werden diese Distanzwerte dann genutzt. Und damit der Button auch vernünftig beschriftet wird, nutzen wir diesmal ObjectSetString, um einen Textwert zu verändern. Das ist die Eigenschaft OBJPROP_TEXT. Und ich hätte gerne den Text Buy auf dem Button stehen. Diese Klammer hier gehört nach hier unten. Und das Ganze liese sich jetzt auch schon kompilieren. Der Button selbst hat aber noch keine Funktion, denn dafür müssen wir noch eine Ereignisbehandlung programmieren. Dafür gibt’s in MQL5 die Funktion OnChartEvent. Die kann ziemlich viele Ereignisse behandeln und hat hier 4 Parameter. Der erste Parameter steht für die Ereignis-ID. Es folgen 3 weitere Parameter, die hier Werte übergeben und diese Werte können je nach Objekttyp ganz unterschiedlich sein. Uns wird hier der letzte Wert interessieren. Das ist ein string-Wert. Der enthält als Text den Namen von unserem Objekt. Wir möchten aber nur reagieren, wenn ein Objekt angeklickt wird. Das wäre der Fall, wenn der Wert für die ID hier den Wert CHARTEVENT_OBJECT_CLICK entspricht. Es gibt durchaus noch andere Ereignisse. Und wenn man das einmal markiert und die F1-Taste drückt, dann lernen wir hier, dass es Ereignisse für Tastendrücke, Mausbewegungen und sogar für das Mausrad gibt. Das interessiert uns alles nicht. Wir benötigen die Event-ID CHARTEVENT_OBJECT_CLICK und da interessiert uns auch nur, ob jemand den BuyButton geklickt hat. Darum prüfen wir im nächsten Schritt, ob der Wert für sparam den Wert BuyButton hat, denn das ist der Name für unser Objekt, was uns interessiert. Wenn alle diese Bedingungen erfüllt sind, dann möchte ich gern eine Chartausgabe für den Wert des Sparameters haben. Im Idealfall sollte da stehen BuyButton wurde angeklickt. Und wenn das so ist, dann nutzen wir trade.Buy, um eine Position für 10 Microlot zu kaufen. Zum Schluss müssen wir noch zwei Klammern setzen. Diese hier ist für die if-Abfrage und die Letzte zum Beenden der Funktion. Und das wars auch schon so weit. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben was alle diese Codezeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst einmal die anderen Videos aus dieser Grundlagenserie noch einmal anschauen. Vielleicht ist aber auch der Premiumkurs interessant für Sie. Den können Sie auf unserer Webseite finden. Das hier war übrigens wieder ein Vorschlag von einem Premiumkurs Mitglied und falls Sie bereits Mitglied im Premiumkurs sind und eine Idee für so ein Video haben, dann schicken Sie mir doch einfach ein E-Mail. Für den Moment klicken wir mal auf Ansicht, Werkzeugliste und klicken auf Kompilieren oder wir drücken die F7-Taste. Ich hab hier einen Fehler gemacht. Hier fehlt ein Semikolon. Wenn wir das hier ergänzen und den Kompiliervorgang wiederholen, dann funktioniert das hier ohne Fehler. Und wenn das bei Ihnen auch so ist, dann können Sie 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 jetzt ein neues Chartfenster. Bitte machen Sie das nur auf einem Demoaccount, denn wir müssen jetzt eine Position eröffnen und leider wird diese Objektbehandlung im Strategietester nicht richtig unterstützt. Ich bin hier aber in meinem Demoaccount und Sie können auch eins erstellen, direkt aus Metatrader heraus, in dem Sie hier mit der rechten Maustaste Konto eröffnen auswählen. In dem Demokonto haben wir jetzt hier ein leeres Chart. Hier suchen wir uns jetzt die neu erstellte Datei SimplerBuyButton im Navigator heraus, ziehen den Expert Advisor auf das Chart. Bitte setzen Sie hier den Haken für Algo-Handel erlauben, klicken Sie auf OK und bei der nächsten Preisänderung sollte der BuyButton hier unten auftauchen. Blenden wir uns mal das Terminal ein, dann sehen wir das derzeit keine geöffneten Positionen vorhanden sind. Und wenn ich jetzt hier auf Buy klicke, erscheint hier oben der Text der BuyButton wurde angeklickt. Hier ist auch schon unserer Position eröffnet worden. Und Sie haben in diesem kurzen Video gelernt, wie Sie in MQL5 einen BuyButton programmieren können und wie Sie die Ereignisbehandlung für den Metatrader umsetzen. Und Sie haben das selbst programmiert mit diesen paar Zeilen hier in MQL5.