MQL4 TUTORIAL GRUNDLAGEN – 75 SIMPLER TIME FILTER

video

In diesem Video wollen wir uns einmal anschauen, wie man anhand eines Filters zu bestimmten Zeiten das Trading erlauben oder verbieten kann. Um circa ein Uhr wird hier der erste Trade eröffnet werden. Denn wir haben ein Zeitfenster von ein Uhr morgens bis zehn Uhr morgens definiert. Also lassen Sie uns einmal herausfinden, wie man so etwas in MQL4 programmieren kann. 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 SimplerTimeFilter, klicke auf Weiter, Weiter und Fertigstellen. Jetzt kann alles oberhalb der OnTick Funktion hier gelöscht werden. Und wir entfernen auch die zwei Kommentarzeilen. Zunächst definieren wir hier einmal eine Startzeit für unser Trading. Ich werde das hier mal auf ein Uhr ändern. Dann geht das später im Strategietester schneller. Da wir hier aber den Modifier Input benutzen, lässt sich dieser Wert auch ohne Neukompilieren hinterher vom Benutzer verändern, indem er über die Expert Advisor Eigenschaften die gewünschte Zeit einstellt. Das wiederholen wir nochmal. Diesmal für die StopTradingTime. Nach der hier definierten Uhrzeit soll Trading verboten sein. Damit wir wissen, wie spät es ist, brauchen wir natürlich auch noch eine Variable für die aktuelle Uhrzeit. Die heißt CurrentTime. Und wir nutzen hier eine Variable, ob Trading erlaubt oder verboten ist. Die ist vom Typ bool, kann also entweder wahr oder falsch sein. In MQL4 wird für false eine Null und für true eine Eins zurückgegeben. Soweit zu den Variablen. In der OnTick Funktion nutzen wir eine lokale Variable mit dem Namen time. Die ist vom Format datetime. Und wir weisen ihr den Rückgabewert der Funktion TimeLocal zu. Wenn man das einmal markiert und die F1 Taste drückt, dann sieht man, dass man damit die lokale Zeit auf dem Computer auf dem der Metatrader läuft, zurückbekommt. Es handelt sich also nicht um die Serverzeit vom Broker. Und diese ermittelte Zeit möchten wir jetzt mit dieser Funktion in eine Textkette umwandeln. TimeToString kann das in unterschiedlichen Formaten tun. Wir hätten gerne dieses Format hier mit Stunden und Minuten, geteilt von einem Doppelpunkt. Das kann uns dieser Parameter hier liefern. TimeToString hat genau zwei Parameter. Der erste Parameter ist eine Uhrzeit, die wir hier oben ermitteln. Und im zweiten Parameter legen wir fest, wie diese Uhrzeit formatiert werden soll. Wir möchten nur traden, wenn wir uns im erlaubten Zeitfenster befinden. Dazu möchten wir eine Funktion mit dem Namen CheckTradingTime nutzen. Die existiert aber noch nicht, die müssen wir gleich noch programmieren. Und nur, wenn wir von dieser Funktion eine Erlaubnis zurückbekommen, dann prüfen wir, ob OrdersTotal einen Rückgabewert von null hat. Also, ob wir keine geöffnete Position haben. Und falls beides zutrifft, dann nutzen wir OderSend um zehn Mikrolot zu kaufen. Das hier sind unsere beiden einzigen Konditionen für diesen Einstieg. Auf einem Echtgeldkonto würde man das so nicht machen. Da würde man noch Indikatoren mit hinzunehmen. Aber für dieses einfache Beispiel soll uns das so reichen. Jetzt benötigen wir noch eine Ausgabe auf dem Chart. Das übernimmt der Comment Befehl. Der wird uns anzeigen, ob Trading erlaubt oder verboten ist. Außerdem die aktuelle ermittelte Zeit und die von uns definierten Werte für die StartTradingTime und die StopTradingTime. Damit das hier funktioniert, müssen wir jetzt aber die entsprechende Funktion programmieren. Unsere benutzerdefinierte Funktion hat den Namen CheckTradingTime. Und sie ist vom Typ bool, kann also nur wahr oder falsch zurückgeben. Wir möchten gerne das Trading erlauben, wenn innerhalb der aktuellen Zeit die von uns definierte StartTradingTime gefunden werden kann. Sowas kann man mit StringSubstr realisieren. Denn hier haben wir eine Startposition und eine Länge. Das bedeutet, wir durchsuchen den String für die aktuelle Zeit von Anfang an. Wir suchen nach einer Textkette mit fünf Zeichen. Und prüfen, ob die mit unserer definierten StartTradingTime übereinstimmt. Und wenn das der Fall ist, dann setzen wir unsere Variable TradingIsAllowed auf true. Im anderen Fall, wenn im aktuellen Zeitstempel der von uns definierte Wert für die StopTradingTime gefunden wurde, dann möchten wir Trading verbieten. Darum setzen wir dann TradingIsAllowed auf false. Zum Schluss geben wir mit dem return Befehl noch das Ergebnis an unsere Hauptfunktion zurück. Und das war es soweit. Wenn ihnen das hier alles zu schnell ging, oder wenn Sie nicht verstehen, was alle diese Code Zeilen hier bewirken sollen, dann möchten Sie sich vielleicht zunächst die anderen Videos aus dieser Grundlagenserie noch einmal anschauen. Vielleicht ist aber auch der Premiumkurs auf unsere Webseite interessant für Sie. Dieses Video war übrigens wieder ein Vorschlag von einem Premiumkurs Mitglied. Und wenn Sie bereits Premium Mitglied 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 hier oben auf Kompilieren oder drücken die F7 Taste. Das sollte hier ohne Fehler funktionieren. Und wenn das bei Ihnen auch so ist, dann können Sie jetzt hier oben 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 Strg+R auf der Tastatur. Bitte wählen Sie hier die neu erstellte Datei SimplerTimeFilter.ex4 aus. Markieren Sie die Option für den visuellen Modus und starten Sie ihren Test. Hier läuft unser Expert Advisor auch schon los. Wir beschleunigen das mal etwas und dann sollten wir innerhalb von wenigen Sekunden beim Erreichen dieser ein Uhr Zeitmarke die erste Position auf dem Chart sehen. Das ist jetzt passiert. Unser Expert Advisor funktioniert also wie gewünscht. Und Sie haben in diesem kurzen Video gelernt, wie Sie mit MQL4 eine Expert Advisor programmieren können, der Trading erlauben oder verbieten kann und zwar anhand einer von uns definierten Zeitspanne. Und Sie haben das selbst programmiert, mit diesen paar Zeilen hier in MQL4.