Discover millions of ebooks, audiobooks, and so much more with a free trial

Only $11.99/month after trial. Cancel anytime.

Algorithmisches Trading: MetaTrader4 | MQL4
Algorithmisches Trading: MetaTrader4 | MQL4
Algorithmisches Trading: MetaTrader4 | MQL4
Ebook348 pages2 hours

Algorithmisches Trading: MetaTrader4 | MQL4

Rating: 0 out of 5 stars

()

Read preview

About this ebook

Die Automatisierung übernimmt immer mehr und mehr Aufgaben. Die Reichweite der Algorithmen reicht von automatischen Gesichtserkennungsprogrammen bis hin zu selbst-lenkenden Kraftfahrzeugen. Der Gedanke den Börsenhandel bzw. eine Handelsstrategie zu automatisieren ist sehr verlockend. Diese verlockende Idee ist der Schwerpunkt dieses Buches. Es werden Programmierkenntnisse der Programmiersprache "MQL4" für MetaTrader4 vermittelt . Damit kann man eine Handelsstrategie in verschachtelte Algorithmen umwandeln. Der Alltag eines Traders mit Programmierkenntnissen gestaltet sich viel entspannter und effizienter.
LanguageDeutsch
Publishertredition
Release dateJun 28, 2021
ISBN9783734565076
Algorithmisches Trading: MetaTrader4 | MQL4

Related to Algorithmisches Trading

Related ebooks

Finance & Money Management For You

View More

Related articles

Reviews for Algorithmisches Trading

Rating: 0 out of 5 stars
0 ratings

0 ratings0 reviews

What did you think?

Tap to rate

Review must be at least 10 words

    Book preview

    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¹⁶.

    Abbildung 8 - Diskontinuierliche Definition von Variablen über mehrere Zeilen

    Enjoying the preview?
    Page 1 of 1