MQL4 TUTORIAL GRUNDLAGEN – 56 SIMPLER CLOSE TIMER

video
play-sharp-fill

In diesem Video wollen wir uns einmal anschauen, wie man einen Expert Advisor programmieren kann, der in der Lage ist, Positionen nach einer bestimmten Zeit zu schließen, wenn sie nicht in den Profit gelaufen sind. Wenn wir das hier einmal beschleunigen, dann sehen wir, dass jede Menge Positionen geöffnet und geschlossen worden sind. Die Frage nach einem solchen Timer kam von einem Mitglied des Premium Kurses. Und wir wollen uns einmal anschauen, wie man so etwas in MQL4 programmieren kann. Um das zu tun, klicken Sie bitte im Metatrader auf dieses kleine Symbol hier oben oder drücken 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 SimplerCloseTimer, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann hier alles oberhalb der OnTick Funktion gelöscht werden. Und auch die zwei Kommentarzeilen kommen weg. Für unseren Strategietest prüfen wir zunächst, ob die Anzahl der offenen Positionen null ist. Wenn das zutrifft, dann möchten wir hier gerne jeweils eine Buy und eine Sell Testposition eröffnen. Das würde man auf einem Echtgeldkonto natürlich nicht machen. Aber, wir benötigen hier Positionen, damit wir sie schließen können. Im Anschluss rufen wir hier die Funktion CheckCloseTimer auf. Die existiert noch nicht. Also müssten wir die jetzt programmieren. Die Funktion hat den Rückgabetyp void, da wir nichts zurückgeben müssen. Wir nutzen hier eine for Schleife, um alle Orders durchzugehen. Mittels OrderSelect wählen wir die jeweilige Position aus. Und da wir ja zeitbasiert schließen möchten, besorgen wir uns mit Hilfe der Funktion TimeLocal erstmal die aktuelle Zeit im Strategietester. Danach nutzen wir MqlDateTime. Damit kann man eine sogenannte Struktur erstellen. In unserem Fall eine Struktur, die Zeiten und Daten, vor allen Dingen hier die Stunde enthält. Das ist das, was wir brauchen. Dazu nutzen wir TimeToStruct, um aus der Zeit, die wir hier oben ermittelt haben, hier eine Struktur zu machen. Und anschließend ermitteln wir die aktuelle Stunde, indem wir uns aus dieser Struktur den Wert für die Stunde holen. Für die Ausgabe im Journal hätte ich die Zeit gerne nochmal lesbar als String Variable. Jetzt kommen wir zum zweiten Teil. Und das ist die Positionseröffnungszeit. Die erhalten wir mit der Funktion OrderOpenTime. Auch hier nutzen wir MqlDateTime und erstellen uns eine entsprechende Struktur. Jetzt konvertieren wir die DateTime Variable in unsere Zeitstruktur. Und holen uns im Anschluss den Wert für die Stunde, indem wir auf den Wert Hour in unserer Struktur zurückgreifen. Auch die Eröffnungszeit hätte ich gerne nochmal als Textkette in für Menschen lesbarer Form. Und danach berechnen wir die Differenz, indem wir einfach von der aktuellen Stunde, der aktuellen Uhrzeit die ermittelte Eröffnungsstunde abziehen. Bitte bedenken Sie, das funktioniert hier nur innerhalb eines Handelstages. Wenn Sie das datumsübergreifend nutzen möchten, dann müssten Sie zusätzlich auf einen Wechsel des Tagesdatums prüfen. Damit wir auch was sehen, erstellen wir uns hier mit Print noch ein paar Ausgaben. Und jetzt kommt die eigentliche Überprüfung. Denn, wenn so und so viel Stunden vergangen sind, in meinem Fall hier, nach der ersten Stunde, dann möchten wir gerne wissen, ob der Profit negativ ist. Falls das zutrifft prüfen wir, ob der Ordertyp OP_SELL ist. Dann wäre das eine Verkaufsposition. In dem Fall nutzen wir OrderClose für unser ermitteltes OrderTicket in Verbindung mit dem Ask Preis, um die Order zu schließen. Andernfalls, wenn der Ordertyp den Wert OP_BUY hat, dann nutzen wir OrderClose für unser aktuelles Ticket und übergeben den Bid Preis. Zum Schluss müssen wir noch unsere Klammern schließen für die if Abfrage, für den for Loop und für die Funktion. Und das war es soweit. Wenn Ihnen das hier alles zu schnell ging oder wenn Sie nicht verstanden haben, was diese Code Zeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst die anderen Videos aus dem Grundlagen Video Kurs anschauen. Oder vielleicht ist sogar der Premiumkurs auf unserer Webseite interessant für Sie. Das hier war aktuell eine Frage von einem Premiumkurs Mitglied. Für den Moment klicken wir jetzt hier mal auf Kompilieren. Ich habe hier einen Klammerfehler gemacht. Hier oben, meine OnTick Funktion hat zwei öffnende Klammern. Kompilieren wir nochmal. Dann sieht das schon viel besser aus. Und wenn das bei Ihnen auch so ist, dann können Sie jetzt hier auf dieses kleine 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 Strg+R. Bitte wählen Sie hier die neu erstellte Datei SimplerCloseTimer.ex4 aus. Markieren Sie die Option für den visuellen Modus und starten Sie Ihren Test. Hier läuft der Expert Advisor los. Und wenn wir das einmal beschleunigen, dann sehen wir, dass hier Positionen vom Timer geschlossen werden. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben gelernt, wie man einen Timer zum Schließen von nichtprofitablen Positionen in MQL4 programmiert. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier, in MQL4.