Einführung in MQL- MetaQuotes Language 

MQL, oder MetaQuotes Language, ist eine Programmiersprache, die speziell für den Handel auf MetaTrader-Plattformen entwickelt wurde. In diesem ausführlichen Blogartikel erfährst du alles, was du über die MQL Programmiersprache wissen musst. Wir werden die Grundlagen der Sprache abdecken, wie du eigene Indikatoren und Expert Advisors erstellen kannst, und wir werden dir einige nützliche Codebeispiele geben. Was ist MQL? MQL steht für MetaQuotes Language und ist eine Programmiersprache, die speziell für die Entwicklung von Handelsstrategien, Indikatoren und automatisierten Handelssystemen auf der MetaTrader-Plattform entwickelt wurde. MetaTrader ist eine der bekanntesten und am häufigsten verwendeten Handelsplattformen in der Welt des Tradings. Die MQL Programmiersprache ermöglicht es Tradern und Entwicklern, benutzerdefinierte Indikatoren, Skripte und Expert Advisors (EAs) zu erstellen, die ihre Handelsstrategien automatisieren und optimieren können. MQL-Versionen: MQL4 und MQL5 Es gibt zwei Versionen von MQL: MQL4 und MQL5. MQL4 wurde für die MetaTrader 4-Plattform entwickelt, während MQL5 für den MT5 entwickelt wurde. Obwohl die beiden Sprachversionen ähnlich sind, gibt es einige Unterschiede in Bezug auf Syntax, Funktionen und Leistungsfähigkeit. MQL5 bietet erweiterte Funktionen, eine verbesserte Leistung und eine bessere Integration mit anderen Programmiersprachen wie C++. Allerdings ist MQL4 immer noch weit verbreitet, da viele Händler und Entwickler ihre bestehenden Indikatoren und EAs in dieser Version der Sprache entwickelt haben. In diesem Blogartikel konzentrieren wir uns hauptsächlich auf MQL4, da die meisten Konzepte und Codebeispiele auch auf MQL5 anwendbar sind, mit nur geringfügigen Änderungen. Die MQL-Entwicklungsumgebung Um mit MQL zu programmieren, benötigst du eine Entwicklungsumgebung. Die MetaTrader-Plattform bietet eine integrierte Entwicklungsumgebung namens MetaEditor. Der MetaEditor ermöglicht es dir, MQL-Code zu schreiben, zu debuggen und zu kompilieren. Um den MetaEditor zu öffnen, starte MetaTrader und klicke auf das MetaEditor-Symbol in der Symbolleiste oder drücke die Tastenkombination Strg+E. Der MetaEditor vom MetaTrader 4. Hier wird ausschließlich in der Programmiersprache MQL programmiert. Im MetaEditor kannst du neue MQL-Projekte erstellen oder bestehende Projekte bearbeiten (wenn der Quellcode vorhanden ist). Du kannst auch auf eine umfangreiche Dokumentation und Codebeispiele zugreifen, um dir den Einstieg in die Programmierung etwas zu erleichtern. MQL-Grundlagen In diesem Abschnitt werden wir die grundlegenden Konzepte und die Syntax der MQL-Programmiersprache behandeln. Syntax Die Syntax von MQL ähnelt der von C++, was den Einstieg für Programmierer erleichtert, die bereits mit C++ oder ähnlichen Programmiersprachen vertraut sind. Kommentare in MQL können entweder einzeilig oder mehrzeilig sein und werden mit // oder /* */ gekennzeichnet. // Das ist ein einzeiliger Kommentar /* Das ist ein mehrzeiliger Kommentar */ Variablen und Datentypen MQL bietet eine Vielzahl von Datentypen, darunter Ganzzahlen, Gleitkommazahlen und Zeichenketten. Variablen müssen deklariert werden, bevor sie verwendet werden können, und ihre Datentypen müssen angegeben werden. Hier sind einige Beispiele für die Deklaration von Variablen: int ganzzahl = 10; // Ganzzahl (integer) double gleitkomma = 10.5; // Gleitkommazahl (double) string text = "Hallo, Welt!"; // Zeichenkette (string) Kontrollstrukturen MQL unterstützt verschiedene Kontrollstrukturen, wie Bedingungen (if, else) und Schleifen (for, while). Hier sind einige Beispiele: int x = 5; int y = 10; if (x < y) { // Wenn x kleiner ist als y, führe diesen Codeblock aus Print("x ist kleiner als y"); } else { // Andernfalls führe diesen Codeblock aus Print("x ist größer oder gleich y"); } // Eine for-Schleife, die von 0 bis 9 läuft und die Zahlen ausgibt for (int i = 0; i < 10; i++) { Print("Zahl: ", i); } int i = 0; // Eine while-Schleife, die so lange läuft, bis i größer oder gleich 10 ist while (i < 10) { Print("Zahl: ", i); i++; } Funktionen Funktionen sind wiederverwendbare Codeblöcke, die eine bestimmte Aufgabe ausführen. In MQL gibt es vordefinierte Funktionen sowie die Möglichkeit, benutzerdefinierte Funktionen zu erstellen. Hier ist ein Beispiel für eine benutzerdefinierte Funktion, die die Summe von zwei Zahlen berechnet: // Benutzerdefinierte Funktion zur Berechnung der Summe von zwei Zahlen double summe(double a, double b) { return a + b; } // Verwendung der Funktion double ergebnis = summe(5, 10); Print("Ergebnis: ", ergebnis); // Ausgabe: Ergebnis: 15 Indikatoren und Expert Advisors In MQL kannst du Indikatoren und Expert Advisors erstellen, um deine Handelsstrategien zu automatisieren und durch Backtest zu optimieren. Indikatoren Indikatoren sind Werkzeuge, die Tradern helfen, Markttrends und Handelssignale zu erkennen. In MQL kannst du benutzerdefinierte Indikatoren erstellen, die auf deinen eigenen Handelsstrategien und Kriterien basieren. Indikatoren werden durch die Funktionen OnInit, OnDeinit und OnCalculate definiert. OnInit: Diese Funktion wird aufgerufen, wenn der Indikator zum ersten Mal initialisiert wird. OnDeinit: Diese Funktion wird aufgerufen, wenn der Indikator entfernt oder das Chart geschlossen wird. OnCalculate: Diese Funktion wird aufgerufen, wenn neue Daten verfügbar sind, und berechnet den Wert des Indikators basierend auf den Eingabedaten. Expert Advisors Expert Advisors (EAs) sind automatisierte Handelssysteme, die Handelsentscheidungen basierend auf vordefinierten Handelsstrategien und Algorithmen treffen. EAs sind in der Lage, Handelsaufträge automatisch zu öffnen, zu schließen und zu verwalten. Dies wird als Algo-Trading bezeichnet. EAs werden durch die Funktionen OnInit, OnDeinit und OnTick definiert. OnInit: Diese Funktion wird aufgerufen, wenn der EA zum ersten Mal initialisiert wird. OnDeinit: Diese Funktion wird aufgerufen, wenn der EA entfernt oder das Chart geschlossen wird. OnTick: Diese Funktion wird aufgerufen, wenn ein neuer Tick (Preisänderung) eintrifft, und führt den Handelsalgorithmus aus. MQL Code-Beispiele In diesem Abschnitt findest du einige grundlegende Codebeispiele für die Erstellung eines Indikators und eines Expert Advisors. Ein einfacher Indikator Hier ist ein Beispiel für einen einfachen Indikator, der den gleitenden Durchschnitt der letzten X Perioden berechnet: // Einfacher gleitender Durchschnitt (Simple Moving Average, SMA) #property indicator_chart_window #property indicator_buffers 1 #property indicator_color1 Blue input int period = 14; // Anzahl der Perioden für den gleitenden Durchschnitt double smaBuffer]; int OnInit() { SetIndexBuffer(0, smaBuffer); SetIndexLabel(0, "SMA(" + IntegerToString(period) + ")"); return (0); } int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time], const double& open], const double& high], const double& low], const double& close]) { int start = 0; if (prev_calculated > 0) { start = prev_calculated - 1; } else { start = period - 1; } for (int i = start; i < rates_total; i++) { smaBufferi] = 0; for (int j = 0; j < period; j++) { smaBufferi] += closei - j]; } smaBufferi] /= period; } return (rates_total); } Dieser Indikator berechnet den gleitenden Durchschnitt der Schlusskurse der letzten X Perioden und zeichnet ihn im Chartfenster. Ein einfacher Expert Advisor Hier ist ein Beispiel für einen einfachen Expert Advisor, der einen Long-Trade öffnet, wenn der aktuelle Preis über dem gleitenden Durchschnitt liegt, und einen Short-Trade öffnet, wenn der Preis unter dem gleitenden Durchschnitt liegt: // Einfacher Moving Average Crossover EA input int period = 14; // Anzahl der Perioden für den gleitenden Durchschnitt double sma]; int OnInit() { return (0); } void OnDeinit(const int reason) { } void OnTick() { int rates_total = Bars(Symbol(), PERIOD_CURRENT); ArrayResize(sma, rates_total); SimpleMovingAverage(Symbol(), PERIOD_CURRENT, period, PRICE_CLOSE, sma); double currentPrice = Close0]; double previousSma = sma1]; double currentSma = sma0]; if (currentPrice > currentSma && currentPrice < previousSma) { // Kaufsignal if (OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0) > 0) { Print("Kaufauftrag erfolgreich geöffnet"); } else { Print("Fehler beim Öffnen des Kaufauftrags: ", GetLastError()); } } else if (currentPrice < currentSma && currentPrice > previousSma) { // Verkaufsignal if (OrderSend(Symbol(), OP_SELL, 0.01, Bid, 3, 0, 0) > 0) { Print("Verkaufsauftrag erfolgreich geöffnet"); } else { Print("Fehler beim Öffnen des Verkaufsauftrags: ", GetLastError()); } } } // Funktion zum Berechnen des einfachen gleitenden Durchschnitts void SimpleMovingAverage(string symbol, ENUM_TIMEFRAMES timeframe, int period, int price_type, double& result]) { int rates_total = Bars(symbol, timeframe); double prices]; ArrayResize(prices, rates_total); CopyClose(symbol, timeframe, 0, rates_total, prices); for (int i = 0; i < rates_total - period + 1; i++) { double sum = 0; for (int j = 0; j < period; j++) { sum += pricesi + j]; } resulti] = sum / period; } } Alternative: Programmierer beauftragen Wenn du keine Lust darauf hast, die MQL-Programmierung zu erlernen, dann kannst du natürlich auch die Aufgabe an einen Programmierer abgeben. Hierbei übernimmt der Programmierer alle technischen Schritte für dich: Die eigentliche Programmierung, das Testen der technischen Funktionen, die Fehlersuche und natürlich auch das Beheben der Fehler. Somit teilst du deine genauen Anforderungen dem Programmierer mit und bekommst dann das gewünschte Handelssystem bzw. den gewünschten Indikator. Fragebogen für die individuelle MQL-Programmierung. Wenn du einen erfahrenen MetaTrader-Programmierer suchst, dann bist du bei uns genau an der richtigen Stelle. In unserem Team sind erfahrene Programmierer, die jeden Wunsch für den MetaTrader 4 oder MT5 programmieren können. Kontaktiere dafür einfach unverbindlich unser Team, teil uns deinen Wunsch mit und du bekommst von uns ein kostenloses Angebot für die Programmierung.

zum Artikel gehen

Forth 0.4.2

For every Atari. FORTH language with interpreter, compiler Assembler can be included

zum Artikel gehen

Carnival Corporation hat die flottenweite Einführung von Starlink Internet abgeschlossen

Die Carnival Corporation, der weltweit größte Kreuzfahrtkonzern, hat die flottenweite Verbreitung von Starlink Internet abgeschlossen. Somit bieten nun allen Schiffen der neun Kreuzfahrtmarken AIDA Cruises, Carnival Cruise Line, Costa Crociere, Cunard Lin

zum Artikel gehen

BodyCam-Anhörung im Thüringer Landtag

Am 24. Juni fand im Innenausschuss des Thüringer Landtags eine Anhörung zu einem Gesetzentwurf statt, der die Einführung von sogenannten BodyCams bei der Polizei in Thüringen vorsieht. Hierzu war auch unser Sprecher Philipp Krüger als Experte geladen. Anl

zum Artikel gehen

Unser Angebot für Sie

Hier finden Sie eine kleine Übersicht über unser Angebot für Sie, vereinbaren Sie gerne einen unverbindlichen Termin bei uns um mehr zu erfahren! Fitness Test Einführung Gerätetraining (Praktische Geräteeinführung und Personal Training) Einführung Kurs

zum Artikel gehen

Using Shiboken2 to create Python bindings for a Qt library

With the release of Qt 5.12, Qt for Python is officially supported and can be used to write full-fledged Qt applications using Python as the main programming language. This prompted us to also take a closer look at the bindings (the Python module is calle

zum Artikel gehen