Wie erstelle ich einen Expert Advisor für MetaTrader5?

mql-hochsprache

MQL5 (MetaQuotes Language 5) ist eine Hochsprache, die speziell für die Entwicklung von Handelsrobotern (Expert Advisors), technischen Indikatoren und Skripten für die MetaTrader 5-Plattform entwickelt wurde. MQL5 ist objektorientiert und bietet eine umfangreiche Bibliothek von Funktionen und Klassen, die den Handel und die Analyse von Finanzmärkten erleichtern.


  • MQL5 unterstützt Klassen, Vererbung und Polymorphismus, was die Entwicklung modularer und wiederverwendbarer Code ermöglicht.
  • MQL5 bietet vordefinierte Funktionen für den Zugriff auf Marktdaten, die Ausführung von Trades und die Verwaltung von Positionen.
  • Die Sprache enthält eine Vielzahl von technischen Indikatoren, die direkt in den Code integriert werden können.
  • MQL5 verwendet Ereignishandler wie OnTick(), OnInit() und OnDeinit(), um auf Marktveränderungen zu reagieren.


  • Starten Sie MetaTrader 5 und öffnen Sie den MetaEditor über das Menü:
    Tools > MetaQuotes Language Editor oder drücken Sie F4.

  • Gehen Sie im MetaEditor zu:
    File > New > Expert Advisor (template) und klicken Sie auf Weiter.
  • Geben Sie dem EA einen Namen (z. B. MyFirstEA) und klicken Sie auf Fertig stellen.

  • OnInit(): Wird beim Start des EAs ausgeführt (z. B. zur Initialisierung von Variablen).
  • OnDeinit(): Wird beim Beenden des EAs ausgeführt (z. B. zur Freigabe von Ressourcen).
  • OnTick(): Wird bei jedem neuen Tick (Preisänderung) ausgeführt.
int OnInit()
  {
   // Initialisierungscode
   Print("Expert Advisor gestartet");
   return(INIT_SUCCEEDED);
  }

void OnDeinit(const int reason)
  {
   // Aufräumcode
   Print("Expert Advisor beendet");
  }

void OnTick()
  {
   // Hauptlogik des EAs
   double bid = SymbolInfoDouble(_Symbol, SYMBOL_BID); // Aktueller Bid-Preis
   double ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK); // Aktueller Ask-Preis

   // Beispiel: Kaufe, wenn der Preis unter einem bestimmten Wert liegt
   if(bid < 1.2000)
     {
      int ticket = OrderSend(_Symbol, OP_BUY, 0.1, ask, 3, 0, 0, "MyFirstEA", 12345, 0, clrGreen);
      if(ticket < 0)
        {
         Print("Fehler beim Öffnen der Order: ", GetLastError());
        }
     }
  }

  • Speichern Sie den Code und klicken Sie auf Compile (F7), um den EA zu kompilieren.
  • Wenn keine Fehler vorhanden sind, wird der EA in der Datei Experts Ihres MetaTrader 5-Installationsverzeichnisses gespeichert.


Backtesting:

  • Gehen Sie zu View > Strategy Tester (Strg+R).
  • Wählen Sie Ihren EA, das Symbol und den Zeitraum aus.
  • Klicken Sie auf Start, um den EA an historischen Daten zu testen.

Optimierung:

  • Verwenden Sie die Optimierung, um die besten Parameter für Ihren EA zu finden.

  1. Marktdaten abrufen:
  • SymbolInfoDouble(_Symbol, SYMBOL_BID) – Aktueller Bid-Preis.
  • SymbolInfoDouble(_Symbol, SYMBOL_ASK) – Aktueller Ask-Preis.
  1. Orders platzieren:
  • OrderSend() – Sendet eine Handelsorder.
  1. Positionsverwaltung:
  • PositionSelect() – Überprüft, ob eine Position geöffnet ist.
  • PositionClose() – Schließt eine Position.
  1. Technische Indikatoren:
  • iMA() – Gleitender Durchschnitt.
  • iRSI() – Relative Strength Index.

  • Verwenden Sie den Strategy Tester, um Ihren EA an historischen Daten zu testen.
  • Verwenden Sie Print() und GetLastError(), um Fehler zu protokollieren und zu beheben.
  • Teilen Sie Ihren Code in Funktionen und Klassen auf, um ihn wiederverwendbar und wartbar zu machen.