Algorithmisches Trading: MetaTrader4 | MQL4
Von Andrey Bulezyuk
()
Über dieses E-Book
Ähnlich wie Algorithmisches Trading
Ähnliche E-Books
Strategie, Planung und Organisation von Testprozessen: Basis für erfolgreiche Projektabwicklung im Softwaretest Bewertung: 0 von 5 Sternen0 BewertungenDie IT-Fabrik: Der Weg zum automatisierten IT-Betrieb Bewertung: 0 von 5 Sternen0 BewertungenZukunftssichere Architektur: So bauen Sie monolithische Anwendungen zu komponentenorientierten um Bewertung: 0 von 5 Sternen0 BewertungenApple Numbers Formeln und Funktionen: Grundlagen Bewertung: 0 von 5 Sternen0 BewertungenDer interne Logistikprozess eines Produktionsbetriebes: Modellieren und Beschreiben des Prozesses am praktischen Beispiel Bewertung: 0 von 5 Sternen0 BewertungenGrundlagen Word 2010 Befehlsübersicht Bewertung: 0 von 5 Sternen0 BewertungenDie optimale Organisationsform: Grundlagen und Handlungsanleitung Bewertung: 0 von 5 Sternen0 BewertungenWebGIS und WebMapping für Anfänger: Anforderungen an ein anwendungsfreundliches WebGIS-System Bewertung: 0 von 5 Sternen0 BewertungenAls Anne Senft berühmt zu werden drohte: Die Geschichte einer wundersamen Entdeckung Bewertung: 0 von 5 Sternen0 BewertungenDas LEGO®-Technic-Ideenbuch: Clevere Konstruktionen ohne Elektronik Bewertung: 0 von 5 Sternen0 BewertungenIT-Lösungen auf Basis von SysML und UML: Anwendungsentwicklung mit Eclipse UML Designer und Eclipse Papyrus Bewertung: 0 von 5 Sternen0 BewertungenTestmanagement und Softwaretest: Theoretische Grundlagen und praktische Umsetzung Bewertung: 0 von 5 Sternen0 BewertungenKochen mit Patrick: Kochen und Programmieren - Hand in Hand Bewertung: 0 von 5 Sternen0 BewertungenK8s Applications mit MicroK8S auf Raspberry PI Bewertung: 0 von 5 Sternen0 BewertungenAufbau einer automatisierten Einkommens Maschine Bewertung: 0 von 5 Sternen0 BewertungenSoftware-Architektur kompakt: - angemessen und zielorientiert Bewertung: 0 von 5 Sternen0 BewertungenKodi 17.6 Komplett Installation & Konfiguration: No Limits Magic Build Bewertung: 0 von 5 Sternen0 BewertungenDas Praxisbuch Google Pixel 6a - Anleitung für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenKostenoptimierte Anwendungsentwicklung: Reduzierung der Entwicklungskosten durch Trennung der Datenverwaltungs- und Fachfunktionen Bewertung: 0 von 5 Sternen0 BewertungenMensch-Computer-Interaktion: Basiswissen für Entwickler und Gestalter Bewertung: 0 von 5 Sternen0 BewertungenGit – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenDigital Cybernetic Education Standard: Globaler Masterplan digitale Bildung Bewertung: 0 von 5 Sternen0 BewertungenVon A++ nach ARS++: A++ mit einer Schnittstelle zu anderen Programmiersprachen Bewertung: 0 von 5 Sternen0 BewertungenRPA-Robotics Process Automation verstehen und richtig einführen: Ein Management Ratgeber Bewertung: 0 von 5 Sternen0 BewertungenDie Geschichte des Computers: Wie es bis zur Form des heutigen 'PC' kam. Bewertung: 0 von 5 Sternen0 BewertungenFunktionalität und Standardunterstützung von IoT-Software-Plattformen: HMD Best Paper Award 2019 Bewertung: 0 von 5 Sternen0 BewertungenExcel 2010 Schnelleinstieg: Eingeben · Berechnen · Auswerten Bewertung: 0 von 5 Sternen0 BewertungenReinforcement Learning: Aktuelle Ansätze verstehen - mit Beispielen in Java und Greenfoot Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für Algorithmisches Trading
0 Bewertungen0 Rezensionen
Buchvorschau
Algorithmisches Trading - Andrey Bulezyuk
Kapitel 1
Einleitung in die Programmierung
1.1 MetaTrader4 und Installation
Sie sind mit Sicherheit mit unterschiedlichen Trading Plattformen vertraut. Dieses Buch basiert auf der MetaTrader 4 Trading Plattform. Diese Software ist sehr bekannt unter privaten Börsenhändlern im europäischem und asiatischem Raum. Mit MetaTrader 4 (auch „MT4") kann man prinzipiell alle möglichen Instrumente handeln – CFDs, Aktien, Forex, Metalle und so weiter. MetaTrader4 ist kostenlos und kann problemlos im Internet heruntergeladen werden. Bekannt wurde MT4 vor allem durch die einfache Möglichkeit
• Expert Advisors (vollautomatisierte Handelssysteme),
• angepasste Indikatoren (Linien, Objekte, Signale und Texte)
und
• Skripte (einmalige Ausführung eines Befehls) zu entwickeln.
Die beiden Wörter „Expert Advisor werden wir öfter mit „EA
abkürzen. Dieses Kapitel dient als Grundlage für die nächsten Kapitel. Im zweitem Kapitel wird detailliert beschrieben, wie Sie als privater Börsenhändler, ein vollautomatisiertes Handelssystem programmieren können. Im drittem Kapitel wird das Programmieren eines angepassten Indikator erläutert. Zudem besitzt MetaTrader4 über ein ausgeprägtes Backtesting-System, welches wir uns abschließend (Kapitel 4) anschauen werden.
Download
Gehen Sie auf http://www.metatrader4.com/de/ und klicken Sie auf „Herunterladen". Je nach Browser wird ein Fenster mit der heruntergeladenen Datei erscheinen. Falls dieses Fenster nicht erscheint, müssen Sie ihre Browser- bzw. Firewall-Einstellungen überprüfen.³
Installation unter Windows
Öffnen Sie die Datei und klicken Sie auf „Fortfahren", bis Sie den Zielordner für die Installation bestimmten können. Im 4. Kapitel werden wir zum Unterschied zwischen der Plattform für das Handeln und der Plattform für das Backtesten kommen. Für das manuelle Trading und algorithmische Trading, reicht relativ wenig Speicherplatz aus. Für ausgeprägte Backtests brauchen Sie viel Speicherplatz (mehrere Gigabytes) auf ihrer Festplatte.
Installation unter Linux
Auch ist es möglich MetaTrader 4 unter dem kostenlosem Betriebssystem Linux zu verwenden. Dafür braucht man eine zusätzliche Software: „Wine". Wine ist ein kostenloses Programm für Linux, welches Windows-Programme ausführen kann. Dabei wird die Funktionalität der Handelsplattform nicht eingeschränkt.⁴ Die Abbildungen bzw. Screenshots in diesem Buch wurden übrigens sowohl unter Windows 7 als auch unter Ubuntu 14.04 LTS erstellt. Es gab weder Schwierigkeiten mit der MetaTrader4 Station, noch mit dem MetaEditor.
Erstellen eines Handelskontos
Erstellen Sie ein kostenloses Demokonto bei einem Broker ihrer Wahl oder auf dem „MetaQuotes Demo"-Server.⁵ Klicken Sie dafür in der MetaTrader 4 Station auf Datei → Konto Eröffnen. Die nachfolgende Abbildung zeigt das Login Fenster an. Sie müssen sich bei irgendeinem Broker anmelden, um Kursverläufe zu laden. Allgemein ist es empfehlenswert ein Demokonto bei dem Broker zu eröffnen, bei welchem Sie bereits ein Echtgeldkonto haben. Sollten Sie kein Echtgeldkonto haben, können Sie trotzdem alle Funktionen verwenden.
Abbildung 1 - Im Handelskonto einloggen
Ich rate dringend davon ab, sich mit einem kapitalisierten Echtgeldkonto einzuloggen. Nur ein einziger Tippfehler in einem Expert Advisor kann gravierende Folgen für ein Konto(stand) haben. Mit einem Demo Konto ist man auf der sicheren Seite.
MetaTrader4 Plattform ist nun installiert und bezieht kostenlose Kursdaten von einem Server. Trader und Investoren die sehr fasziniert von Charts und Kursen sind, muss ich leider enttäuschen, denn ein großer Teil unseres Buches bzw. der Entwicklung eines EAs wird außerhalb des Charts stattfinden.
Zusammen mit MT4 Handelsplattform wird ebenfalls eine Programmierumgebung für die MQL4 Programmiersprache geliefert. Sie sind so verknüpft, dass man vom Terminal (Handelsplattform) in den MetaEditor
übergehen kann und vom MetaEditor in die MetaTrader4 Station.⁶ Dies erspart uns Zeit beim Wechsel zwischen Terminal und MetaEditor und beim Aktualisieren des Expert Advisors.
Die Programmierumgebung findet man entweder im Installationsordner von MT4 oder im Startmenü von Windows im Ordner „Meta Trader 4".⁷
Abbildung 2 - MetaTrader4 Ordner
Auch kann man die Programmierumgebung MetaEditor von der MetaTrader4 Station aus aufrufen. Dazu muss man oben im MT4 das kleine Icon links neben der „AutoTrading"-Schaltfläche anklicken.
Abbildung 3: MetaEditor Aufrufen
Da zwei Drittel dieses Buches sich im MetaEditor abspielen, möchten wir uns jede wichtige Funktion und jedes Fenster der Entwicklungsumgebung genau anschauen.
Abbildung 4: MetaEditor Fenster
Navigator
Navigator finden Sie in der linken oberen Ecke. In diesem Fenster werden Ordner dargestellt, in welchen sich Indikatoren, EAs, Scripts usw. befinden. All dies lässt sich meistens in die Handelsplattform einbinden. Dabei muss man das jeweilige Objekte mit der Maus auf ein Chart ziehen. Es gibt jedoch Komponente, die sich nicht direkt in die MT4 Plattform einbinden lassen, sondern in die EAs oder Indikatoren. Eine .dll-Datei wäre ein gutes Beispiel dafür. Diese Dateien werden von EAs und Indikatoren verwendet, um extra Funktionen und Zugriffe zu erhalten. Eine .dll-Datei ermöglicht es bspw. einem EA, eine Verbindung mit einer Webseite, einer lokalen oder externen Datenbank oder sonstigen Endpunkten herzustellen. Dieses wird in diesem Buch nicht behandelt, da man dafür höhere Programmierkenntnisse in anderen Programmiersprachen bräuchte.
Toolbox
Die Toolbox ist meistens ganz unten im MetaEditor positioniert. In der Toolbox sind weitere Fenster in Tabs zu finden. Suche, Artikel, Bibliothek und Journal sind für uns weniger von Bedeutung. Sollte Sie jedoch an verschiedenen (Blog-)Artikeln interessiert sein, so können Sie diese unter Suche oder Bibliothek finden. Das Fenster mit dem Namen „Fehler" müssen wir immer im Vordergrund haben. Wir werden im Laufe des Programmierens eines EAs oder eines Indikators immer beten müssen, dass dieses Fenster leer bleibt. Denn, wie der Name schon verraten mag, werden in diesem Fenster alle Fehler in unserem Code angezeigt. Es lässt sich meistens nicht vermeiden, dass man nach dem ersten⁸ Kompilieren keine Fehler ausgegeben bekommt. Dieses Ausgabefenster stellt den Compiler (engl. = Übersetzer) dar.
Quelltext
In diesem Fenster wird der eigentliche Quelltext eines EAs oder eines Indikators geschrieben. Hier entstehen Algorithmen, die darüber entscheiden, ob Sie im nächsten Jahr nach Mallorca fliegen oder eine Bewerbung bei der Deutschen Bank abgeben…als Reinigungskraft. Für das ungeschulte Auge sind die langen Quelltexte sehr irritierend. Das liegt ganz einfach daran, dass die meisten Leser nicht wissen welche Bedeutung diese Wörter, Buchstaben und Kombinationen haben. Beim Anschauen eines unbekannten und langen Textausschnitts auf deutsch, kommen wir automatisch zurecht. Weiß man also wie eine Programmiersprache aufgebaut ist, wird man auch mit diesen langen Quelltexten gut zurechtkommen – das garantieren ich Ihnen. Wenn Sie dieses Buch zu Ende gelesen haben, blättern Sie zurück zur Abbildung 4. Sie werden merken, dass die Wörter, Zeichen und Kombinationen aus der Abbildung plötzlich einen Sinn ergeben.
Menüleiste
• MQL4-Assistent kann man unter „Neu" aufrufen. Der MQL4 Assistent erstellt für uns das Gerüst eines jeden EAs und erspart uns somit an Zeit und Tipparbeit.⁹
• Das Kompilieren verwandelt unseren Quelltext in einen Code, den die MT4 Plattform lesen und ausführen kann. Sollte es Fehler im Quelltext geben, wird die Kompilierung fehlschlagen. Die Fehler bei einer fehlgeschlagenen Kompilierung werden in der Toolbox angezeigt
• Im Suchfeld können Begriffe, Funktionen und Fragen eingetippt werden. Die Suchanfrage wird auf die offizielle Webseite von MetaTrader4 weitergeleitet.
Abbildung 5 - Menüleiste
Die Entwickler von MT4 haben bei einem bestimmten Update, die Ordnerstruktur der Plattform verändert. Somit hat sich auch der Ort auf der Festplatte verändert, an welchem sich alle Dateien der Plattform befinden. Als Anwender und Entwickler von Indikatoren und EAs braucht man diesen Ordner nicht. Sollte man jedoch das Bedürfnis haben, eine Quelldatei (.mq4) oder die kompilierte Datei (.ex4) zu kopieren, braucht man den Zielordner. Diesen Ordner finden Sie in dem Sie auf File / Datei → Open Data Folder / Öffne Datei Ordner klicken.
Unter Linux/Ubuntu kann man den MQL4 Ordner etwas leichter mit dem Dateibrowser/ „Explorer" finden als unter Windows. Die nachfolgende Abbildung zeigt den Pfad zum MQL4-Ordner unter Ubuntu auf.
Abbildung 6: Linux MQL4 Pfad
1.2 Einleitung in die MQL4-Programmierung
Bevor wir damit anfangen, für den Menschen unverständliche, Hieroglyphen zu programmieren, müssen wir zuerst eine neue Datei erstellen. Das Erstellen eines neuen EAs oder Indikators erfolgt durch das Klicken auf Neu → Expert Advisor oder Benutzerdefinierter Indikator im MetaEditor.¹⁰ Im vorherigen Absatz wurde beschrieben, wie man den Zielordner der MT4 Plattform öffnen kann. In diesem Ordner findet man Quelldateien mit der Dateiendung *.mq4 und kompilierte Dateien mit der Endung *ex4. Eine Quelldatei kann man mit dem MetaEditor öffnen und bearbeiten. Eine kompilierte Datei dagegen kann man nicht mehr bearbeiten sondern nur noch in der MetaTrader4 Plattform aufrufen. Die Quelldatei sollte man immer sorgfältig aufbewahren und bestenfalls Kopien auf anderen Speicherträgern erstellen.¹¹ Es ist unglaublich ärgerlich wenn die Quelldatei von einem 3000-Codezeilen Expert Advisor verloren geht. Zwar ist dann noch die kompilierte Datei (ex4) vorhanden, dennoch kann man keine Anpassungen an dem EA oder Indikator mehr vornehmen. Auch wird man nicht beweisen können, dass man der Entwickler ist, weil man die Quelldatei nicht mehr besitzt.
Abbildung 7: MOL Wizard
1.2.1 Datentypen und Variablen
Variablen sind Platzhalter und werden dazu genutzt bestimmte Zahlen, Werte bzw. Textausschnitte zu speichern. Eine Variable muss man einmalig deklarieren und kann sie im Nachhinein beliebig oft definieren. Alle Variablen müssen einen individuellen Namen besitzen. Als Deklaration verstehen wir die Reservierung im EA o. Indikator, welche den angegebenen Variablennamen belegt. Unter Definition ist das Festlegen eines Wertes einer Variable zu verstehen. Es gibt verschiedene Arten von Variablen: externe, globale und interne¹².
So ziemlich jede Programmiersprache, bis auf PHP und wenig andere, besitzt verschiedene Datentypen. Ein Datentyp gibt die Art des Inhalts einer Variable an. Nicht nur Variablen besitzen einen Datentyp. Auch Funktionen müssen einen Datentyp besitzen¹³. Die unterschiedlichen Arten des Inhalts und der dazugehörige Datentyp wird in der nachfolgenden Tabelle aufgelistet.
Tabelle 1 – Datentypen
Die Definition erfolgt bei externen, internen und globalen Variablen gleich. Zuerst wird der Präfix bzw. der Datentyp der Variable zugewiesen. Nachfolgend muss man einen Namen für die Variable festlegen, welcher nur aus Buchstaben und Zahlen aufgebaut sein darf. Nach dem „=" Zeichen, welcher nach dem Namen stehen muss, folgt der eigentliche Inhalt der Variable. Die Definition wird mit einem „; " abgeschlossen. Wir schauen uns für je einen Datentyp eine Beispieldefinition an.
Tabelle 2 – Beispieldefinitionen von Variablen
Eine Veränderung des Inhalts der Variable erfolgt ähnlich der Deklaration. Der einzige Unterschied ist: den Präfix bzw. den Datentyp muss man auslassen. Die Präfixe sind also nur dann anzugeben, wenn eine Variable deklariert wird; nicht bei Veränderung des Inhalts der Variable.
Um auf den Inhalt einer Variable zugreifen zu können, muss man den Namen der Variable aufrufen. Man sollte immer auf die richtigen Datentypen achten. Es kann zu einem Informationsverlust kommen, wenn der Präfix der Variable und der tatsächliche Datentyp des Inhalts nicht übereinstimmen. Würden wir bspw. den Inhalt der Variable „kurs in der Variable „zahl
speichern wollen, würden wir einen Informationsverlust erleiden.¹⁵
int zahl = 1.37241;
Da „int zahl nur natürliche Zahlen speichert, würden die Nachkommastellen von „double kurs
verloren gehen. Da die meisten Kurse der Währungen, Indizien und Aktien aus Dezimalzahlen bestehen, kann so ein Informationsverlust zu großen Schwierigkeiten führen.
Sie sollten als Trader und Entwickler wissen, ob ihr Broker Preise mit 4 oder 5 Nachkommastellen liefert. Dies hängt meisten damit zusammen, ob Sie Micro-Lots oder Mini-Lots kaufen können. Können Sie Micro-Lots (0.01 Lot) kaufen, dann haben Sie höchstwahrscheinlich 5 Nachkommastellen. Ist die kleinste handelbare Positionsgröße 0.1 (Mini-Lot), so werden ihre Preise vermutlich 4 Nachkommastellen besitzen. In MetaTrader4 spricht man nicht von Pips, sondern von Basispunkten (BP). Diese Basispunkte müssen in einem Integer Datentyp angeben werden. Für Broker mit 4 Nachkommastellen ist ein Basispunkt äquivalent einem Pip. Bei Brokern mit 5 Nachkommastellen ist ein Basispunkt gleich einem Zehntel von einem Pip (0,1 Pip). In diesem Buch gehen wir von einem Broker mit 5 Nachkommastellen aus. Wir werden also alle Pip-Angaben mal zehn nehmen müssen. 5,4 Pips würden 54 BP entsprechen und 120 Pips 1200 BP usw.
Wichtig: Da die Variablen vom Datentyp string ziemlich lange werden können, ist es von wichtiger Bedeutung zu beachten, dass man keinen Zeilenumbruch im Quellcode einbaut. Möchte man jedoch aus Übersichtsgründen einen Zeilenumbruch im Quellcode einbauen, so muss man beachten, dass die MQL4-Programmiersprache die Zusammensetzung des Textfeldes nicht auf mehrere Zeilen mitverfolgt. Teilt man also die Zusammensetzung des Textfeldes in mehrere Zeilen auf, so muss man jede Zeile so behandeln als wäre sie der Anfang. Diese Problemstellung lässt sich mit einer Differenzierung besser darstellen¹⁶.