Einführung in MQL5 (Teil 1): Ein Leitfaden für Einsteiger in den algorithmischen Handel
Einführung
Ohne vorherige Programmiererfahrung kann das Erlernen von MQL5 schwierig, aber nicht unmöglich sein. Für das Verständnis von MQL5, einer speziellen Sprache für den algorithmischen Handel, sind sowohl Programmier- als auch Finanzmarktkenntnisse erforderlich. In meinen kommenden Artikeln möchte ich die Lücke für Personen ohne Programmierkenntnisse schließen, die daran interessiert sind, MQL5 zu lernen. Der Inhalt wird darauf zugeschnitten sein, Programmierkonzepte aufzuschlüsseln und MQL5 für Anfänger zugänglich zu machen.
Ich biete eine solide Grundlage in den Grundlagen der Programmierung, indem ich Konzepte wie Variablen, Datentypen, Schleifen und bedingte Anweisungen auf eine einsteigerfreundliche Art und Weise aufschlüssle. Die Artikel führen den Leser Schritt für Schritt in die Grundlagen von MQL5 ein. Ich beginne mit einfachen Skripten und führe nach und nach komplexere Themen ein, um eine reibungslose Lernkurve zu gewährleisten.
Das Lernen ist oft effektiver, wenn es von praktischen Beispielen begleitet wird. Ich werde anhand von Beispielen und Szenarien aus der Praxis zeigen, wie MQL5 im algorithmischen Handel eingesetzt wird. Um das Verständnis zu verbessern, werden die Artikel zum interaktiven Lernen anregen. Die Leser werden ermutigt, das Schreiben von Code zu üben, mit Beispielen zu experimentieren und ihr Wissen praktisch anzuwenden. Im Wesentlichen sollen diese Artikel Personen ohne Programmierkenntnisse in die Lage versetzen, sich selbstbewusst in der Welt von MQL5 zurechtzufinden und eine allmähliche und angenehme Lernerfahrung im Bereich des algorithmischen Handels zu fördern.
In diesem Artikel werden wir die folgenden Themen behandeln:
- Einführung in die Programmierung
- Arten von MQL5-Programmen
- MetaEditor IDE
- Grundlagen der MQL5-Sprache
- Vordefinierte Variable
- Gemeinsame Funktionen
- Kontrollfluss-Anweisungen
- Arrays und Schleifen
- Erstellen von Expert Advisors
- Strategietester
1. Einführung in die Programmierung
Haben Sie sich jemals gefragt, wie Ihre Lieblingsspiele und -software entwickelt wurden? Wie folgen Ihre Lieblingsspielfiguren Ihren Befehlen? All dies ist dank der Programmierung möglich. Betrachten Sie die Programmierung als eine Reihe von Codes, die geschrieben wurden, um die Kommunikation zwischen Mensch und Computer zu ermöglichen.
Was ist eine Programmiersprache? Das Wort „Programmierung“ bezeichnet einen Prozess, bei dem Regeln oder Anweisungen festgelegt werden, die zu befolgen sind, um ein bestimmtes Ziel zu erreichen. Andererseits bezeichnet das Wort „Sprache“ ein Kommunikationssystem, das es dem Einzelnen ermöglicht, Ideen, Gefühle und Gedanken gegenüber einem Computer auszudrücken. Computer verstehen keine menschliche Sprache. Wie kommunizieren wir unsere Anweisungen, um unsere Ziele zu erreichen? Die Programmiersprache dient als Vermittler zwischen Mensch und Computer, indem sie dem Menschen hilft, mit dem Computer zu kommunizieren.
1.1. Arten von Programmiersprachen
So wie es verschiedene menschliche Sprachen gibt, gibt es auch verschiedene Programmiersprachen, die in zwei Kategorien eingeteilt werden:
- Hochrangige Programmiersprache: Diese sind näher an der menschlichen Sprache und lassen sich leicht nachvollziehen. Beispiele sind MQL4, MQL5, Pythons und JavaScript
- Low-Level-Programmiersprache: Näher am Maschinencode und schwieriger für Menschen zu schreiben und zu verstehen. Dazu gehört die Assemblersprache, die enger mit der Hardware des Computers verbunden ist.
Klassifizierung nach dem Zweck
- Programmiersprachen für allgemeine Zwecke: Diese sind für eine breite Palette von Funktionen ausgelegt. Beispiele sind Pythons, Java und C++
- Bereichsspezifische Sprachen: Das sind Programmiersprachen, die eine bestimmte Aufgabe erfüllen. MQL5 wird zum Beispiel für die Entwicklung von Handelsrobotern verwendet.
1.3. Wichtige Terminologien in der Programmierung
- IDE (Integrated Development Environment bzw. Integrierte Entwicklungsumgebung): Eine Softwareanwendung, die Programmierern umfassende Möglichkeiten zur Softwareentwicklung bietet. Es ist eine zentrale Plattform, auf der Entwickler ihre Software schreiben, testen, debuggen und bereitstellen können. Beispiele sind Visual Studio Code, Code Blocks und Meta Editor 5. Im weiteren Verlauf dieses Artikels werden wir uns mehr auf den Meta Editor 5 konzentrieren, der die in MQL5 verwendete IDE ist.
- Debugger: Dieses Tool hilft dabei, Fehler im Code zu finden und zu beheben, indem es Entwicklern ermöglicht, den Code schrittweise zu überprüfen, Haltepunkte zu setzen und Variablen während der Laufzeit zu untersuchen.
- Compiler/Interpreter: Viele IDEs verfügen über integrierte Werkzeuge zum Kompilieren und Ausführen von Code direkt in der Umgebung. Sie können den Code ausführen, auf Fehler prüfen und die Ausgabe anzeigen.
- Datenarten: Verschiedene Kategorien von Daten, die eine Programmiersprache verarbeiten kann. Beispiele sind Ganzzahlen, Gleitkommazahlen, Zeichenketten und Boolesche Werte. Im weiteren Verlauf dieses Artikels wird ein Abschnitt dieser Frage gewidmet sein.
- Syntax: Der Satz von Regeln, der die Kombinationen von Symbolen und Wörtern in einer Programmiersprache definiert. Jede Programmiersprache hat ihre eigene, einzigartige Syntax, die bei der Ausführung von Codes hilft.
- Algorithmus: Eine Reihe von genau definierten Anweisungen, die ein bestimmtes Problem lösen oder eine Aufgabe erfüllen sollen.
- Funktion: Ein Codeblock, der eine bestimmte Aufgabe ausführt. Sie ist wiederverwendbar und kann innerhalb eines Programms mehrfach aufgerufen werden.
- Bibliothek: Eine Sammlung von vorgefertigtem Code, Funktionen und Routinen, die zur Ausführung bestimmter Aufgaben verwendet werden können, damit der Programmierer das Rad nicht neu erfinden muss.
- Bedingte Anweisungen: Konstruktionen wie if-else oder switch-case, die es dem Programm ermöglichen, Entscheidungen auf der Grundlage bestimmter Bedingungen zu treffen. Das bedeutet, dass der Computer einen Code ausführen soll, wenn eine Bedingung erfüllt ist.
- Schleife: Eine Kontrollstruktur, die einen Codeblock wiederholt, bis eine bestimmte Bedingung erfüllt ist. Übliche Typen sind for-Schleifen, while-Schleifen und do-while-Schleifen. Die while-Schleife führt beispielsweise einen Codeblock so lange aus, bis eine bestimmte Bedingung erfüllt ist.
- Variabel: Ein Container, der zum Speichern von Daten verwendet wird. Sie hat einen Namen und kann verschiedene Werte enthalten, die sich während der Ausführung des Programms ändern können.
Anmerkung: Im weiteren Verlauf dieses Artikels werde ich auf einige dieser wichtigen Terminologien näher eingehen.
MQL5 (MetaQuotes Language 5) ist eine hochentwickelte und domänenspezifische Programmiersprache. MQL5 ist eine domänenspezifische Programmiersprache, da sie nur Aufgaben im Zusammenhang mit dem Handel ausführt. Beispiele sind die Automatisierung von Handelsstrategien, die Entwicklung von Handelsrobotern und technischen Indikatoren.
In der Programmiersprache MQL5 können verschiedene Arten von Programmen entwickelt werden, um den Handel zu automatisieren, die Märkte zu analysieren und die allgemeine Handelserfahrung zu verbessern. Hier sind einige gängige Typen von MQL5-Programmen:
- Expert Advisors (EAs): EAs sind die Arten von MQL5-Programmen, die zur Automatisierung von Handelsstrategien verwendet werden. Es hilft bei der Ausführung von Geschäften auf der Grundlage von vordefinierten Regeln. EAs sind an den Chart gebunden und warten auf das Eintreten eines vordefinierten Ereignisses, egal wie lange es dauert, bevor sie einen Befehl ausführen.
- Skripte: Skripte haben Ähnlichkeiten mit EAs, aber sie sind unterschiedlich. Skripte sind wie einmalige OTPs, die sofort nach ihrer Aktivierung ein Programm ausführen. Wenn die vordefinierten Bedingungen erfüllt sind, wird das Programm ausgeführt, wenn nicht, wird es nicht ausgeführt.
- Nutzerdefinierte Indikatoren: Im Gegensatz zu EAs können nutzerdefinierte Indikatoren keinen Handel durchführen. Sie sind Programme, die auf der Grundlage Ihrer vordefinierten Regeln anzeigen, dass ein bestimmtes Ereignis auf dem Markt eingetreten ist.
- Bibliothek: Eine Sammlung von vorgefertigtem Code, Funktionen und Routinen, die zur Ausführung bestimmter Aufgaben verwendet werden können, damit der Programmierer das Rad nicht neu erfinden muss.
- Datei einbinden: In der Programmierung ist eine Include-Datei eine separate Datei, die Code oder Deklarationen enthält, die Sie in mehreren Teilen Ihres Programms wiederverwenden möchten. Die Direktive „#include“ wird verwendet, um den Inhalt einer anderen Datei in Ihre Hauptprogrammdatei einzubinden. Include-Dateien werden häufig verwendet, um Code zu organisieren und zu modularisieren, was die Wiederverwendung von Code und die Wartungsfreundlichkeit fördert.
3. MetaEditor IDE
MetaEditor 5 ist die für die Programmiersprache MQL5 konzipierte IDE. Eine IDE ist eine Art Umgebung oder Seite, in der Sie Ihren Code schreiben, debuggen, kompilieren und testen können. Der MetaEditor 5 wird beim Herunterladen immer mit dem MetaTrader 5 geliefert.
- Um den Meta Editor aufzurufen, klicken Sie auf die Schaltfläche IDE in Ihrem MetaTrader 5.
- Im Fenster „Navigator“ (Strg+D) werden alle Typen von MQL5-Programmen angezeigt. Wenn Sie auf eines der Programme klicken, werden alle Codes angezeigt, die Sie geschrieben haben.
- Um die Seite zum Schreiben Ihrer Codes zu öffnen, klicken Sie auf die Schaltfläche New (Strg+N), wählen Sie die Art des MQL5-Programms, das Sie entwickeln möchten, und klicken Sie auf die Schaltfläche Weiter > im Abschnitt MQL-Assistent, nachdem Sie die Art des Programms, das Sie entwickeln möchten, ausgewählt haben.
- Die Seite zur Eingabe Ihrer Daten wird angezeigt. Klicken Sie auf die Schaltfläche Fertig stellen im Abschnitt des MMS-Assistenten, wenn Sie fertig sind.
- Herzlichen Glückwunsch! Sie haben nun einen voll funktionsfähigen Meta-Editor, mit dem Sie Ihren Code schreiben können.
- In diesem Abschnitt werden die zuvor eingegebenen Details angezeigt.
-
OnStart() ist eine Funktion, die in Skriptprogrammen aufgerufen wird. Sie sorgt dafür, dass die Codes in der geschweiften Klammer {} einmalig und unmittelbar nach Aktivierung des Skriptprogramms ausgeführt werden.
-
Schreiben wir unseren ersten Code. Wir erstellen ein Skript, das bei der Aktivierung „Hello MQL5“ meldet.
void OnStart() { Alert("Hello MQL5"); }
Anmerkung: Weitere Erklärungen werden im Laufe dieses Artikels hinzugefügt.
- Der Compiler prüft, ob der Code korrekt ist oder nicht, und macht Vorschläge, wie der Code korrigiert werden kann. Wenn Sie mit dem Schreiben Ihres Codes fertig sind, klicken Sie auf die Schaltfläche Kompilieren und überprüfen Sie den Abschnitt Beschreibung auf Fehler und Warnungen.
Anmerkung: Wenn der Code Fehler enthält, wird er nicht ausgeführt, bis Sie sie korrigiert haben. Der Code kann ausgeführt werden, ohne dass die Warnungen korrigiert werden, aber es ist besser, sich darum zu kümmern, um Probleme mit Ihrem Programm zu vermeiden.
- Um das Programm zu testen, klicken Sie auf die Schaltfläche Abspielen.
-
Das Programm läuft dann in Ihrem MetaTrader 5.
Bis jetzt haben wir eine kurze, aber entscheidende Reise in die Grundlagen der Programmierung und der MetaEditor-Umgebung unternommen. Wir haben die Grundlagen für das Verständnis der Sprache der Algorithmen, MQL5, gelegt und den kreativen Spielraum von MetaEditor erkundet. Der MetaEditor ist nicht nur ein Werkzeug, sondern ein Tor zur Umwandlung von Ideen in ausführbare Strategien. Bleiben Sie dran für die Zukunft, wo wir den Reichtum von MQL5 enträtseln und Sie zur Beherrschung der Programmierung für Finanzmärkte führen werden. Ihr Abenteuer im algorithmischen Handel hat gerade erst begonnen.
4. Grundlagen der MQL5-Sprache
Bevor wir mit der Entwicklung von MQL5-Programmen beginnen, ist es wichtig, einige grundlegende Dinge zu verstehen, die ein Programm ausmachen. Beispiele sind Datentyp, Funktionen, Variablen, Kommentare und MQL5-Syntax.
4.1. Syntax
Unter Syntax versteht man eine Reihe von Regeln, die vorschreiben, wie Programme, die in einer bestimmten Sprache geschrieben wurden, aufgebaut sein sollten. Es ist wie die Grammatik einer Programmiersprache. Genauso wie menschliche Sprachen Regeln für die Bildung von Sätzen haben, haben Programmiersprachen Regeln für die Erstellung von gültigem und verständlichem Code.
Hier sind einige wichtige Aspekte der Syntax:
4.1.1. Erklärung Beendigung
Jede Anweisung in MQL5 wird normalerweise mit einem Semikolon ‚;‘ abgeschlossen. Damit wird dem Compiler mitgeteilt, dass eine Anweisung beendet ist und die nächste beginnt.
Beispiel:
void OnStart() { Alert("Hello MQL5"); // the semicolon means the end of the code line }
4.1.2. Kommentare
Kommentare in MQL5 sind wichtig, um Erklärungen und Dokumentationen in Ihrem Code bereitzustellen. Stellen Sie sich Kommentare wie eine Markierung vor, die Sie einer Codezeile hinzufügen, um später darauf zu verweisen oder den Zweck eines Codes zu erklären. Hier finden Sie ausführliche Beispiele für die Verwendung von Kommentaren in verschiedenen Szenarien:
Einzeilige Kommentare: Einzeiligen Kommentaren wird ein ‚//' vorangestellt. Sie werden für kurze Erklärungen verwendet.
Beispiele:
void OnStart() { Print("Hello MQL5"); // This line of code will print “Hello MQL5” when run }
Anmerkung: Der Compiler ignoriert vollständig alles, was nach // geschrieben wird.
Mehrzeilige Kommentare
Mehrzeilige Kommentare werden in ‚/* */‘ eingeschlossen. Sie sind für ausführlichere Erklärungen geeignet. Dies kann nützlich sein, um Ihre Pläne aufzuschreiben oder eine Schritt-für-Schritt-Anleitung für die Entwicklung eines Programms zu erstellen.
Beispiel:
void OnStart() { /* In many programming languages, including MQL5 a semicolon “;” is used to indicate the end of a statement. It is a crucial element for the compiler to understand the structure of the program. */ }
Der Compiler ignoriert alles zwischen /* und */ vollständig.
Kommentare spielen eine entscheidende Rolle dabei, Ihren Code lesbar und verständlich zu machen. Sie helfen nicht nur Ihrem eigenen Verständnis, sondern auch allen anderen, die Ihren Code lesen oder daran mitarbeiten. Verwenden Sie Kommentare großzügig, um die Klarheit Ihrer MQL5-Programme zu verbessern.
4.1.3. Identifikatoren
In der Programmierung ist ein Bezeichner ein Name, der einer Variablen, einer Funktion oder einem anderen nutzerdefinierten Element im Code gegeben wird. Bezeichner spielen eine entscheidende Rolle dabei, Code lesbar und verständlich zu machen. Hier sind einige wichtige Punkte über Bezeichner in MQL5:
Regeln für die Namensgebung
Bezeichner müssen bestimmten Benennungsregeln folgen. Sie sollten mit einem Buchstaben (A-Z oder a-z) beginnen und können von Buchstaben, Ziffern (0-9) oder Unterstrichen (_) gefolgt werden.
Sensibilität für Groß- und Kleinschreibung
MQL5 unterscheidet zwischen Groß- und Kleinschreibung, d. h. Groß- und Kleinbuchstaben werden unterschieden. Daher werden „myVariable“ und „MyVariable“ als unterschiedliche Bezeichner betrachtet.
Beispiel:
int myage = 25; int MyAge = 25; // myage is a different identifier from MyAge.
Bedeutungsvolle Namen
Wählen Sie aussagekräftige und sprechende Namen für Identifikatoren. Dies verbessert die Lesbarkeit des Codes und macht es für andere (oder Ihr zukünftiges Ich) einfacher, den Zweck von Variablen oder Funktionen zu verstehen.
Reservierte Wörter
Vermeiden Sie die Verwendung reservierter Wörter als Bezeichner. Reservierte Wörter sind Wörter, die in der Programmiersprache eine besondere Bedeutung haben und nicht für andere Zwecke verwendet werden können. Beispiele sind Warnung, Druck und Kommentar. Erfahren Sie mehr über reservierte Wörter.
Beispiel:
int Age = 25; Print(Age); /* Int is the data type is an integer because 25 is a whole number. Age is the identifier Print is a reserved word in MQL5 and it serves a special function. This means it can't be used as an identifier */
4.2. Grundlegende Datentypen
In der Programmierung sind Datentypen wie Container, die verschiedene Arten von Informationen enthalten. Stellen Sie sich vor, Sie haben Kisten, in denen Sie Dinge aufbewahren: Einige Kisten können Zahlen, einige können Wörter und einige können komplexere Dinge enthalten. Beispiele hierfür sind:
Integer (int)
Stellen Sie sich dies als eine Kiste vor, die nur ganze Zahlen enthält. Er kann Zahlen wie 1, 5 oder 10 speichern, aber keine Zahlen mit Dezimalpunkten.
Beispiel:
int myInteger = 10;
Double
Dieser Typ stellt Zahlen mit Dezimalpunkten dar.
Beispiel:
double myDouble = 3.14;
Character
In MQL5 ist ein Zeichen ein Datentyp, der zur Darstellung eines einzelnen Zeichens, z. B. eines Buchstabens, einer Ziffer oder eines Symbols, verwendet wird. Es wird durch das Schlüsselwort „char“ bezeichnet.
Beispiel:
// Declaring a character variable char myChar = 'A'; // Printing the character to the console Print(myChar);
String Type
Strings sind Zeichenketten, die in der Regel für Text verwendet werden.
Beispiel:
string myString = "Hello, MQL5!"; Alert(myString);
Boolean Type
Boolesche Werte stehen für wahr oder falsch.
Beispiel:
bool iam25 = true;
Arrays
Mit Arrays in MQL5 können Sie mehrere Werte desselben Datentyps unter einem einzigen Variablennamen speichern. Sie bieten eine bequeme Möglichkeit, mit Datensammlungen zu arbeiten. Hier sind die wichtigsten Aspekte von Arrays in MQL5:
1. Deklaration von Arrays: Sie deklarieren ein Array, indem Sie dessen Datentyp und Namen angeben, gefolgt von eckigen Klammern ‚[]‘, die das Array bezeichnen.Beispiel:
Integer array declaration int numbers[5];
2. Initialisierung: Sie können ein Array zum Zeitpunkt der Deklaration initialisieren, indem Sie eine Liste von Werten angeben, die in geschweifte Klammern „{}“ eingeschlossen sind.
Beispiel:
// Initializing an integer array int numbers[] = {1, 2, 3, 4, 5};
3. Zugriff auf Elemente: Der Zugriff auf Array-Elemente erfolgt über ihren Index, beginnend bei 0. Im Array „numbers“ ist zum Beispiel „numbers[0]“ das erste Element. Array in MQL5 kann verwendet werden, um Schluss- oder Eröffnungspreise von Kerzen zu erhalten.
Beispiel:
// Accessing elements of an array int firstNumber = numbers[0]; // Accesses the first element
Hinweis: Dies sind nur einige wenige Datentypen und wir haben nur einige Grundlagen behandelt. So werden Sie anhand von klaren Beispielen durch die einzelnen Konzepte geführt, ohne sich in Details zu verlieren, damit das Lernen Spaß macht und einfach ist.
Schlussfolgerung
Abschließend haben wir uns auf eine Reise begeben, um die Grundlagen der Programmierung und die spezifische Welt von MQL5 zu erkunden. Wir begannen mit einer Einführung in die Programmierung, vertieften uns in die Arten von MQL5-Programmen und verstanden die Bedeutung von MetaEditor IDE bei der Erstellung unserer Handelsalgorithmen. Unsere Erkundung der Grundlagen der MQL5-Sprache hat den Grundstein für die Erstellung anspruchsvollerer Programme gelegt. Denken Sie daran, dass dies erst der Anfang ist. Im Laufe der Zeit wird sich die Leistungsfähigkeit der Programmierung mit MQL5 entfalten und Sie in die Lage versetzen, robuste und effiziente Handelsstrategien zu erstellen. Bleiben Sie dran für weitere Einblicke und Artikel in das spannende Gebiet des algorithmischen Handels und der MQL5-Programmierung!
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/13738
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Toller Artikel (Serie von Artikeln)!
Zu viele Autoren tauchen tief in schwere, clevere Themen, aber es gibt kein Material für Anfänger, um die Grundlagen zu erklären. Die wenigen Informationen gibt es über die Grundlagen, ist für MQL4 veraltet.
Ich freue mich schon auf den nächsten Artikel in Ihrer Serie, vielen Dank noch einmal.
Lieber Lou1973,
vielen Dank für Ihre freundlichen Worte! Es freut mich sehr zu hören, dass Ihnen der Artikel gefallen hat. Ihr Zuspruch bedeutet mir sehr viel, und ich freue mich darauf, in der kommenden Serie weitere Erkenntnisse mit Ihnen zu teilen. Bleiben Sie dran, um weitere wertvolle Inhalte zu erhalten, und zögern Sie nicht, sich zu melden, wenn Sie bestimmte Themen haben, die ich behandeln soll.
Mit freundlichen Grüßen,
Abioye Israel Pelumi
Bravo! Das ist ein sehr nützlicher Artikel für Anfänger. Ich brenne darauf, die nächsten Teile zu lesen, und ich bin sicher, ich bin nicht der Einzige!
Vielen Dank, JMB! Es freut mich sehr zu hören, dass Sie den Artikel nützlich fanden. Ihr Zuspruch bedeutet mir sehr viel, und ich freue mich darauf, in den kommenden Teilen weitere Einblicke zu geben. Bleiben Sie dran, und wenn Sie spezielle Themen haben, die Sie gerne behandelt sehen möchten, lassen Sie es mich einfach wissen!
Mit freundlichen Grüßen,
Abioye Israel Pelumi
Ich liebe deine Arbeit, Kumpel, vielen Dank für die Mühe, die du dir mit diesen Artikeln machst. Sie klären wirklich die Grundlagen, wenn man nicht findet, wonach man sucht, oder wenn man Kontext braucht!