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,