MQL5 TUTORIAL GRUNDLAGEN – 124 SIMPLE ORDER CLOSE TIME

video
play-sharp-fill

 

In diesem Video wollen wir einmal herausfinden, wie man die Zeit für die Schließung von bereits abgeschlossenen Positionen ermitteln kann. Also lassen Sie uns einmal schauen, wie man so etwas mit MQL5 programmiert. Um das zu tun, klicken Sie bitte im Metatrader 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 SimplerOderCloseZeit, 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 damit, dass wir die Datei Trade.mqh importieren. Die ist Bestandteil von MQL5 und sie ermöglicht uns hier eine Instanz der Klasse CTrade zuz erstellen. Innerhalb der OnTick Funktion ermitteln wir zunächst den Ask Preis und den Bid Preis. Das übernimmt die Funktion SymbolInfoDouble für das aktuelle Währungspaar auf dem Chart. Wir nutzen entweder SYMBOL_ASK oder SYMBOL_BID. Und mit NormalizeDouble und _Digits stellen wir sicher, dass die richtige Anzahl von Nachkommastellen berechnet wird. Im Anschluss möchten wir gerne prüfen, ob wir keine offenen Positionen haben. Das wäre der Fall, wenn PositionsTotal keiner ist als eins. Und wenn dem so ist, dann möchten wir hier Testpositionen eröffnen. Das würde man natürlich auf einem Echtgeldkonto nicht tun. Aber dafür sind Demo-Konten ja geeignet. Und wenn wir keine Positionen eröffnen, dann können wir natürlich auch kein Datum für die Zeit der Schließung ermitteln. Das möchten wir mit einer separaten Funktion erledigen. Die bekommt den Namen GetCloseTime, aber existiert noch nicht. Also müssen wir die jetzt programmieren. Unsere benutzerdefinierte Funktion hat keinen Rückgabewert. Darum nutzen wir hier void. Wir übergeben auch keine Parameter. Wir brauchen für die Berechnung einige Variablen. Ich habe diese hier auch in einem anderen Video verwendet. Eventuell benötigen Sie nicht alle davon. Für unsere Berechnung greifen wir hier auf die Order Historie zu. Und mit einer for-Schleife gehen wir alle Positionen durch. Danach möchten wir gerne mit Hilfe von HistoryDealGetTicket die Ticket Nummer der jeweiligen geschlossenen Position ermitteln, sofern diese größer ist null. Denn dann können wir uns einige Eigenschaften zur jeweiligen Position holen. Der Order Profit wird mit Hilfe der Funktion HistoryDealGetDouble für das aktuelle Ticket berechnet. Hier nutzen wir als Parameter DEAL_PROFIT. Für den Order Typ funktioniert das ganz ähnlich. Das machen wir mit HistoryDealGetInteger für die Ticket Nummer. Und hier nutzen wir DEAL_TYPE. Außerdem möchten wir gerne wissen, ob das Währungspaar zum Chart passt. Darum ermitteln wir hier mit HistoryDealGetString für die Ticket Nummer noch das aktuelle Symbol. Das geht mit DEAL_SYMBOL. Jeder Deal hat auch einen Entry Wert. Den ermitteln wir mit HistoryDealGetInteger für die Ticket Nummer und nutzen DEAL_ENTRY. Jetzt kommen wir zum interessanten Teil. Die DealTime ermitteln wir mit HistoryDealGetInteger für die Ticket Nummer und nutzen DEAL_TIME. Da das aber einen Integer Wert zurückliefert, der für Menschen schlecht zu lesen ist, konvertieren wir das Ganze mit TimeToString in ein lesbares Format für die DealTime. Dazu nutzen wir hier TIME_DATE und TIME_SECONDS. Weiter geht es mit der Überprüfung, ob unsere Position auch zum aktuellen Währungspaar auf dem Chart passt. Außerdem möchten wir noch wissen, ob der OrderType entweder ORDER_TYPE_BUY oder ORDER_TYPE_SELL ist. Denn, es gibt auch sogenannte Pending Orders, also noch nicht ausgeführte Order Typen. Und für die möchten wir hier nichts ermitteln. Uns interessiert, ob die Order geschlossen wurde. In dem Fall ist der Wert für DealEntry gleich eins. Und wenn das zutrifft, kalkulieren/ dann ermitteln wir hier ein Resultat, indem wir die ganzen einzelnen Werte zusammenhängen und den Profit, die Nummer für das Ticket und die Uhrzeit an dem die Position geschlossen wurde, in eine Textkette hängen, die wir anschließend mit Print in unserem Journal ausgeben. Zum Schluss machen wir noch die Funktionen und die Schleifen zu. Und das war es so weit. Wenn Ihnen das hier zu schnell ging oder wenn Sie keine Ahnung haben, was alle diese Funktionen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst eines der Videos aus der Grundlagenserie noch einmal anschauen. Oder vielleicht ist auch direkt der Premiumkurs auf unserer Webseite interessant für Sie. Da finden Sie im Store jetzt auch solche Quelltexte, falls Sie sich die Zeit für das selber tippen ersparen möchten. Das hier war übrigens wieder eine Idee von einem Premiumkurs Mitglied. Und wenn Sie auch eine Idee für so ein Video haben, dann lassen Sie es mich doch einfach wissen. Für den Moment klicken wir hier auf Kompilieren oder drücken die F7 Taste. Das sollte eigentlich ohne Fehler funktionieren. Und wenn das bei Ihnen auch so ist, dann können Sie jetzt hier oben auf dieses Symbol klicken oder die F4 Taste drücken, um in den Metatrader zurückzukehren. Und im Metatrader klicken wir auf Ansicht, Strategietester oder drücken die Tastenkombination Ctrl+R. Bitte wählen Sie hier die neu erstellte Datei SimplerOrderCloseZeit.ex5 aus. Markieren Sie hier die Option für den visuellen Modus und starten Sie Ihren Test. Hier läuft unser Test auch schon an. Im Moment sind hier noch keine Positionen geschlossen worden. Aber sobald hier ein Stop Loss oder ein Take Profit ausgelöst wird, sollte sich das ändern und dann dürften wir hier unten auch die Einträge sehen. Ich beschleunige das Ganze mal. Und wie Sie sehen, funktioniert das auch für mehrere Tickets. Wir haben also hier die Schließungszeit berechnet. Unsere Daten werden hier für unterschiedliche Positionen angezeigt. Und in diesem kurzen Video haben Sie gelernt, wie man die Schließungszeit für eine Position berechnet. Und Sie haben das selbst getan, mit diesen paar Zeilen hier in MQL5.