Handelsstrategie mit dem MQL5 Wizard: Signale basierend auf drei gleitenden Durchschnitten

Mike 2011.01.10 19:41 11 0 0
Anhang

Der MQL5 Wizard ermöglicht es, den Code für Expert Advisors automatisch zu erstellen. Für weitere Details siehe Fertige Expert Advisors im MQL5 Wizard erstellen.

In diesem Artikel werfen wir einen Blick auf eine Trendstrategie, die auf drei gleitenden Durchschnitten basiert. Diese Strategie nennt sich „Signale basierend auf drei EMA“. Um den Trend zu bestimmen, verwendet sie drei exponentiell geglättete gleitende Durchschnitte: FastEMA, MediumEMA und SlowEMA.

Handelsignale:

  • Kaufsignal: FastEMA > MediumEMA > SlowEMA (aufwärtstrend).
  • Verkaufssignal: FastEMA < MediumEMA < SlowEMA (abwärtstrend).

Diese Strategie wird in der Klasse CSignal3EMA implementiert (die Datei signal3ema.mqh muss im Verzeichnis terminal_data_folder\MQL5\Include\Expert\Signal\ abgelegt werden).

Abbildung 1. Handelssignale, basierend auf drei gleitenden Durchschnitten

Abbildung 1. Handelssignale, basierend auf drei gleitenden Durchschnitten

Handelssignale

Die Handelsstrategie ist in der Klasse CSignal3EMA implementiert und verfügt über geschützte Methoden, um den Zugriff auf die Werte der drei gleitenden Durchschnitte (Fast, Medium, Slow) zu erleichtern:

double  FastEMA(int ind)      // gibt den Wert des Fast EMA der Kerze zurück
double  MediumEMA(int ind)    // gibt den Wert des Medium EMA der Kerze zurück
double  SlowEMA(int ind)      // gibt den Wert des Slow EMA der Kerze zurück
Die Werte des Indikators der 0. (unvollendeten) Kerze können sich ändern, daher ist es notwendig, die Handelsbedingungen anhand der Daten der abgeschlossenen (gebildeten) Kerzen zu überprüfen.

1. Long-Position eröffnen

Der Aufwärtstrend wird durch folgende Bedingung bestimmt: FastEMA > MediumEMA > SlowEMA:

  • FastEMA(1) > MediumEMA(1): Fast EMA liegt über dem Medium EMA (letzte abgeschlossene Kerze);
  • MediumEMA(2) > SlowEMA(1): Medium EMA liegt über dem Slow EMA (letzte abgeschlossene Kerze);
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen zum Eröffnen einer Long-Position (Kauf)  |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//--- Überprüfung auf Aufwärtstrend (in der letzten abgeschlossenen Kerze): FastEMA(1) > MediumEMA(1) > SlowEMA(1)
    return(FastEMA(1)>medium && medium>SlowEMA(1));
  }


2. Long-Position schließen

Der Abwärtstrend wird durch folgende Bedingung bestimmt: FastEMA < MediumEMA < SlowEMA:

  • FastEMA(1) < MediumEMA(1): Fast EMA liegt unter dem Medium EMA (letzte abgeschlossene Kerze);
  • MediumEMA(2) < SlowEMA(1): Medium EMA liegt unter dem Slow EMA (letzte abgeschlossene Kerze);
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen zum Schließen einer Long-Position      |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseLong(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- Überprüfung auf Abwärtstrend (in der letzten abgeschlossenen Kerze): FastEMA(1) < MediumEMA(1) < SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));
  }
Du kannst das Schließen einer Long-Position verbessern: Es ist nicht notwendig, auf den Abwärtstrend zu warten. Du kannst Long-Positionen auch schließen, wenn der Markt seitwärts läuft, was durch folgende Bedingungen bestimmt werden kann: FastEMA < MediumEMA > SlowEMA.


3. Short-Position eröffnen

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen zum Eröffnen einer Short-Position (Verkauf) |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//--- Überprüfung auf Abwärtstrend (in der letzten abgeschlossenen Kerze): FastEMA(1) < MediumEMA(1) < SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));
  }

4. Short-Position schließen

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen zum Schließen einer Short-Position      |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseShort(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- Überprüfung auf Aufwärtstrend (in der letzten abgeschlossenen Kerze): FastEMA(1) > MediumEMA(1) > SlowEMA(1)
   return(FastEMA(1)>medium && medium>SlowEMA(1));
  }

Du kannst das Schließen einer Short-Position verbessern: Es ist nicht notwendig, auf den Aufwärtstrend zu warten. Du kannst Short-Positionen auch schließen, wenn der Markt seitwärts läuft, was durch folgende Bedingungen bestimmt werden kann: FastEMA > MediumEMA < SlowEMA.


Erstellen eines Expert Advisors mit dem MQL5 Wizard

Um einen Handelsroboter basierend auf der Strategie zu erstellen, musst du die Signal-Eigenschaften als „Signale basierend auf drei EMA“ in der Option „Fertige Expert Advisors erstellen“ im MQL5 Wizard auswählen:

Abbildung 2. Wähle

Abbildung 2. Wähle „Signale basierend auf drei EMA“ im MQL5 Wizard

Anschließend musst du den benötigten Trailing Stop-Algorithmus und das Geld- und Risikomanagement-System angeben. Der Code des Expert Advisors wird automatisch erstellt, du kannst ihn kompilieren und im Strategietester des MetaTrader 5 Client-Terminals testen.


Testergebnisse

Werfen wir einen Blick auf die Rücktests des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010 - 05.01.2011, FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900).

Bei der Erstellung des Expert Advisors verwendeten wir das feste Volumen (Trading Fixed Lot, 0.1). Der Trailing Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet).

Abbildung 3. Historische Rücktestergebnisse des Expert Advisors, basierend auf drei EMA

Abbildung 3. Historische Rücktestergebnisse des Expert Advisors, basierend auf drei EMA

Anlagen: Die Datei Signal3EMA.mqh mit der Klasse CSignal3EMA muss im Verzeichnis terminal_data_folder\MQL5\Include\Expert\Signal abgelegt werden.

Die Datei threeema.mq5 enthält den Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde.


Liste
Kommentar 0