Hinweis: In meinen Ausführungen beziehe ich mich auf den MetaTrader5, das Vorgehen im MetaTrader4 unterscheidet sich nur geringfügig. Mit anderen Programmen habe ich noch keine Erfahrungen gesammelt.

Wenn du schon Erfahrung mit der Programmierung hast, wirst du vermutlich über den Titel dieses Artikels schmunzeln – „Hello World“ ist eine Tradition in der Programmierung. Sie geht aus einem Tutorial zum Lernen der Sprache C aus dem Jahr 1974 hervor. Seitdem hat es sich eingebürgert, dass das Lernen einer neuen Programmiersprache immer mit dem Beispiel: „Hello World“ beginnt. In den kommenden Artikeln soll es nicht explizit um das Lernen einer Programmiersprache gehen, sondern um die Besonderheiten von MQL5 und wie du diese bei der Programmierung eigener Experten verwenden kannst.

 Aber warte mal kurz, nochmal einen Schritt zurück, du musst ja erstmal wissen wie du dir einen eigenen Experten anlegst. Dazu öffnest du den MetaEditor. Wenn du in der Windows Programmleiste nicht fündig wirst, kannst du auch einfach den MetaTrader öffnen und in der Symbolleiste auf folgendes Icon drücken:

Der MetaEditor ist eine sogenannte IDE (Integrated Development Environment) – eine integrierte Entwicklungsumgebung, oder etwas verständlicher: ein Programm, was dich beim schreiben von neuem Programmcode unterstützt.

Bevor es jetzt richtig losgeht muss ich noch erklären was du heute programmierst. Am Ende des Artikels sollst du ein Programm haben, dass dir das Datum und die Uhrzeit des Servers von deinem Broker auf den Chart schreibt und diese automatisch mit jedem Tick aktualisiert. Einen praktischen Nutzen wirst du davon nicht haben, aber es ist nicht so langweilig wie „Hello World“ 😉 Am Ende sieht das etwa so aus:

 Im ersten Schritt legst du dir die Code-Datei für den Experten an. Dazu musst du im MetaEditor auf File und dann auf New File klicken, drückst die Tastenkombination Strg+N oder klickst oben Links in der Ecke auf das Symbol welches aussieht wie ein Blatt Papier mit einem grünen Plus dran. Es öffnet sich in allen drei Fällen dieses Fenster:

Auf einige der auswählbaren Dateitypen gehe ich in späteren Artikeln vielleicht ein, was du aber jetzt benötigst ist die oberste Auswahlmöglichkeit Expert Advisor (template). Anschließend klickst du auf Weiter. Im nachfolgenden Fenster gibst du den Namen der Datei an. Hier ein Beispiel wie das aussehen könnte:

Alle anderen Felder sind vorerst uninteressant. Wenn du einen Namen vergeben hast, klickst du unten auf Weiter. Nun wird dir ein Fenster angezeigt in dem du mehrere Optionen mit einem Häkchen auswählen kannst. Auch diese Einstellungen interessieren jetzt noch nicht. Alle Häkchen rausmachen und erneut auf Weiter klicken. Selbige Methode wenden wir im nächsten Fenster an: Alle Häkchen raus und anschließend unten in der Ecke auf Fertigstellen klicken. Der Eingabedialog ist nun beendet und der MetaEditor zeigt dir die erstellte Datei an. Im Navigator auf der linken Seite kannst du sehen wo deine Code-Datei gespeichert ist. Mit einem Rechtsklick auf den Dateinamen im Navigator und dem anschließenden Klick auf Open Folder kannst du dir deine Datei im Windows Explorer anzeigen lassen. Damit weißt du auch wo die Datei auf deiner Festplatte liegt.

Bevor ich jetzt die einzelnen Abschnitte der Code-Datei erkläre, wird diese erst einmal von unnötigem Ballast befreit. Dazu nimmst du dir die ersten 8 Zeilen und löschst sie. Schon besser. Übrig bleiben drei Abschnitte: OnInit(), OnDeinit() und OnTick() und ein paar grüne Zeilen mit einem doppelten // davor. Die grünen Zeilen nennt man Kommentarzeilen. Diese sind für dich als Programmierer nützlich, werden aber vom Computer ignoriert. Möchtest du dir also Notizen an bestimmten Stellen im Code schreiben setzt du einfach // davor. Die drei Abschnitte sind Funktionsdefinitionen. Im Abschnitt OnInit() wird definiert, was bei der Initialisierung des EAs gemacht werden soll. Im Abschnitt OnDeInit() geht es um die De-Initialisierung (hauptsächlich Freigabe von verwendetem Speicher, ist für uns anfänglich nicht so interessant). Spannend ist zu Beginn der dritte Abschnitt: OnTick(). Zwischen den geschweiften Klammern definierst du dir hier, was bei jedem Tick gemacht erneut werden soll. In unserem Beispiel heißt das: Die aktuelle Serverzeit abfragen und auf dem Chart wieder ausgeben. Du fragst dich was genau ein Tick ist? Ein Tick ist vereinfacht gesagt eine Preisänderung. Steht der Dax auf 14606.55 ist die Änderung auf 14607.05 ein Tick. Auf dem Chart wirst du schon häufig beobachtet haben wie die Preislinie springt. Jeder Sprung ist ein Tick.

Ich persönlich sortiere mir die Abschnitte in der Code-Datei immer in der Reihenfolge in der sie abgearbeitet werden. Also als erstes die Initialisierung, dann alles was passiert während der Expert Advisor aktiv ist und zum Schluss die De-Initialisierung.

Die einfachste Möglichkeit etwas auf den Chart zu schreiben ist der Befehl Comment(). Begib dich also mit deinem Mauszeiger zwischen die geschweiften Klammern der OnTick() Funktion und beginne zu schreiben. Der MetaEditor schlägt dir nun mögliche Funktionen vor, die du meinen könntest. Wähle hier Comment mit der Maus aus und bestätige mit der Enter Taste.

Jetzt musst du innerhalb der Klammer noch sagen, was du denn auf dem Chart anzeigen lassen willst. Dazu tippst du direkt weiter Ti… und schon schlägt dir der MetaEditor vor was er im Angebot hat. Wähle nun TimeCurrent(void) aus und setzte am Ende eine geöffnete und eine geschlossene Klammer. Die Programmzeile muss mit einem Semikolon abgeschlossen werden. Dein Code sollte dann ungefähr so aussehen:

Damit du später auch noch weißt was du dir da anzeigen lässt, ergänze innerhalb der Comment-Klammer noch eine Beschreibung, z.B. Servertime, wie im nächsten Bild zu sehen ist.

Ich vermute du hast jetzt schon total viele Fragen und ich habe ehrlich gestanden auch einige Kapitel eines „Wie ich programmieren lerne“ Tutorials übersprungen. Ein bisschen Aufklärungsarbeit werde ich in den einzelnen Artikeln leisten, aber im Großen und Ganzen musst du dich schon selbst mit den Grundlagen der Programmierung auseinandersetzen, denn ich möchte in diesem Blog nur auf die Besonderheiten von MQL5 eingehen. In meinem ersten Artikel hatte ich bereits verlinkt wo du mehr über die Grundlagen der Programmierung lernen kannst. Als Basis empfehle ich diesen kostenfreien Kurs von Microsoft: Erste Schritte mit C#.

Wenn du später deine Code-Datei nochmal bearbeiten möchtest, weißt du vermutlich nicht mehr was der grade geschriebene Code bewirkt. Deshalb ist es ratsam diesen zu kommentieren. Ein Beispiel findest du im folgenden Bild.

Nun ist dein erster Expert Advisor fertig programmiert. Als nächstes muss der Code noch kompiliert werden. Was ist das denn schon wieder? Der Code in deiner Serverinfo_EA.mq5 Datei ist menschenlesbar. Ein Computer arbeitet aber nicht mit Wörtern oder Klammern, sondern mit 1 oder 0. Das Kompilieren sorgt also dafür, dass dein Computer den von dir programmierten Code ausführen kann. Es übersetzt den Code sozusagen in die Sprache des Computers. Dazu drückst du in der Symbolleiste des MetaEditors auf Compile (weißes Blatt mit einem Häkchen dran). In der Toolbox im unteren Bereich des Fensters wird dir angezeigt ob der Kompiliervorgang erfolgreich war.

Hast du beim Programmieren Fehler gemacht, werden dir in diesem Feld Fehlermeldungen und Warnungen angezeigt. Versuch diese zu verstehen. Vergleiche dabei deinen Code, mit der Musterlösung aus den Bildern. Hast du eine Klammer vergessen oder das Komma nicht gesetzt? Wenn du hier gar nicht weiterkommst, schreib dein Problem in die Kommentare! Eines der Community Mitglieder oder ich helfen dir so schnell es geht.

Jetzt ist es an der Zeit den eigenen Expert Advisor zu testen. Dazu wechselst du in den MetaTrader und öffnest dir einen neuen Chart deiner Wahl. Dann gehst du so vor, wie in meinem zweiten Artikel „Verwendung von fertigen Tradingbots“ beschrieben. Deinen EA findest du im Navigator unter Expert Advisors.

Jetzt solltest du beobachten können, wie in der linken oberen Ecke deines Charts das Datum und die Uhrzeit angezeigt werden. Die Uhrzeit wird von der aktuellen Uhrzeit abweichen, denn es handelt sich um die Zeit des Servers von deinem Broker. So bist du auf der sicheren Seite, wenn es um Handelszeiten geht und musst nicht mit Zeitzonen oder Sommer- und Winterzeit hin und her rechnen.

Zum Schluss noch ein kleiner aber sehr nützlicher Tipp: Wenn du einmal nicht weißt, was ein Wort in deinem Programmcode bedeutet, markiere es mit der Maus und drücke anschließend F1 auf der Tastatur. Die MetaEditor Hilfe wird sich nun öffnen und dir Informationen rund um die ausgewählte Funktion anzeigen.

Damit du bis zur Veröffentlichung des nächsten Artikels nicht nur rumsitzt, gibt es hier noch eine kleine Herausforderung. Für die Lösung musst du dich jedoch etwas anstrengen. Wie eine objektorientierte Programmiersprache funktioniert, solltest du dafür auch wissen. Außerdem wirst du neue Funktionen benötigen, aber das bekommst du schon selbst raus, sonst wäre es ja keine Herausforderung 😉. Eine Musterlösung wird zu Beginn des kommenden Artikels gezeigt.

Challange #1:

Ergänze das Programm so, dass du unter der Serverzeit den aktuellen Ask und Bid Preis des Symbols angezeigt bekommst.

Viele Grüße HMPRocky

P.s.: Dir gefällt was du liest? Dann abonniere den Blog! Dann wirst du über neue Artikel automatisch informiert und verpasst nix mehr. Einfach einloggen und unter einem der Artikel auf „Abonnieren“ klicken!

25.03.2021 | 649 Aufrufe