Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Ansichten:
1180
Rating:
(26)
Veröffentlicht:
2016.09.02 10:47
Aktualisiert:
2016.11.22 07:34
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance

Der Artikel Der MQL5-Assistent: Erstellen von Expert-Systemen ohne Programmierung beschreibt Schritte der automatischen Erstellung des Codes eines Expert Advisors mithilfe von MQL5 Wizard.

Hier erzählen wir über eine Trendstrategie, die auf der gegenseitigen Lage drei gleitender Durchschnitte beruht.

Der Trend wird durch die Analyse der gemeinsamen Lage des schnellen (FastEMA), mittleren (MediumEMA) und langsamen (Slow EMA) exponentiell geglätteten gleitenden Durchschnitten ermittelt:

  • Kauf: FastEMA>MediumEMA>SlowEMA (Aufwärtstrend).
  • Verkauf: FastEMA<MediumEMA<SlowEMA (Abwärtstrend).

Die Handelsstrategie wird in der Klasse CSignal3EMA implementiert.

Abbildung 1. Handelssignale der Strategie, die auf drei gleitenden Durchschnitten beruht

Abbildung 1. Handelssignale der Strategie, die auf drei gleitenden Durchschnitten beruht

Handelssignale

Das Modul der Handelssignale nach dieser Strategie wird in der Klasse CSignal3EMA implementiert. Diese Klasse enthält mehrere geschützte (protected) Methoden, die für den Zugang zu Werten von drei EMA (schnellen, mittleren und langsamen) verwendet werden:

double  FastEMA(int ind)      // gibt den Wert des schnellen EMA auf dem Balken zurück
double  MediumEMA(int ind)    // gibt den Wert des mittleren EMA auf dem Balken zurück
double  SlowEMA(int ind)      // gibt den Wert des langsamen EMA auf dem Balken zurück
Die Überprüfung der Handelsbedingungen auf dem Nullbalken (nicht vollständigen Balken) kann häufig zu falschen Signalen führen, denn der Preis (und Indikatorwerte) können sich ändern.

1. Eröffnen einer Long-Position

Ein Aufwärtstrend wird anhand der gegenseitigen Lage von drei EMA (FastEMA>MediumEMA>SlowEMA) ermittelt:

  • FastEMA(1)>MediumEMA(1): der schnelle EMA liegt über dem mittleren EMA (auf dem letzten vollständigen Balken);
  • MediumEMA(2)>SlowEMA(1): der mittlere EMA liegt über dem langsamen EMA (auf dem letzten vollständigen Balken);
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Eröffnen einer Long-Position   |
//+------------------------------------------------------------------+
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üft ob es einen Aufwärtstrend gibt (auf dem letzten vollständigen Balken): FastEMA(1)>MediumEMA(1)>SlowEMA(1)
    return(FastEMA(1)>medium && medium>SlowEMA(1));
  }


2. Schließen einer Long-Position

Ein Abwärtstrend wird anhand der gegenseitigen Lage der drei gleitenden Durchschnitte (FastEMA<MediumEMA<SlowEMA) ermittelt:

  • FastEMA(1)<MediumEMA(1): der schnelle EMA liegt unter dem mittleren EMA (auf dem letzten vollständigen Balken);
  • MediumEMA(2)<SlowEMA(1): der mittlere EMA liegt unter dem langsamen EMA (auf dem letzten vollständigen Balken);
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Schließen einer Long-Position  |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseLong(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- Abwärtstrend überprüfen (auf dem letzten vollständigen Balken): FastEMA(1)<MediumEMA(1)<SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));
  }
Die Bedingung für das Schließen einer Long-Position kann verbessert werden: statt auf einen Abwärtstrend zu warten, kann man Long-Positionen beim Auftreten der Stagnation schließen, die man anhand folgender Ungleichung ermitteln kann: FastEMA<MediumEMA>SlowEMA.


3. Eröffnen einer Short-Position

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Eröffnen einer Short-Position  |
//+------------------------------------------------------------------+
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;
//--- Abwärtstrend überprüfen (auf dem letzten vollständigen Balken): FastEMA(1)<MediumEMA(1)<SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));

  }

4. Schließen einer Short-Position

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Schließen einer Short-Position |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseShort(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- überprüft ob es einen Aufwärtstrend gibt (auf dem letzten vollständigen Balken): FastEMA(1)>MediumEMA(1)>SlowEMA(1)
   return(FastEMA(1)>medium && medium>SlowEMA(1));
  }

Die Bedingung für das Schließen einer Short-Position kann verbessert werden: statt auf einen Aufwärtstrend zu warten, kann man Short-Positionen beim Auftreten der Stagnation schließen, die man anhand der folgenden Ungleichung ermitteln kann: FastEMA>MediumEMA<SlowEMA.


Erstellung eines Expert Advisors mithilfe von MQL5 Wizard

Um einen Handelsroboter nach dieser Strategie mithilfe von MQL5 Wizard zu erstellen, wählen Sie "Signals based on three EMA" im zweiten Schritt aus:

Abbildung 2. Auswahl des Moduls von Handelssignalen auf der Basis drei gleitender Durchschnitte im MQL5 Wizard

Abbildung 2. Auswahl des Moduls von Handelssignalen auf der Basis drei gleitender Durchschnitte im MQL5 Wizard

Geben Sie den gewünschten Typ von Trailing Stop und Kapitalmanagement in den nächsten Schritten an. Der Code des Expert Advisors wird automatisch generiert, er muss kompiliert werden und dann können Sie mit dem Testen anfangen.


Testergebnisse

Die Testergebnisse des EAs bei einem Test unter Verwendung von historischen Daten (EURUSD H1, Zeitraum: 1.1.2010-05.01.2011, FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900).

Dieser Expert Advisor benutzt das Modul für den Handel mit einer festgelegten Lotgröße von 0.1 Lot (Trading Fixed Lot, Stop Los), ein Trailing Stop wurde nicht verwendet (Trailing not used).

Abbildung 3. Ergebnisse des Testens für den EA, der die Strategie auf der Basis von drei gleitenden Durchschnitten verwendet

Abbildung 3. Ergebnisse des Testens für den EA, der die Strategie auf der Basis von drei gleitenden Durchschnitten verwendet

Die Datei Signal3EMA.mqh, die die Klasse CSignal3EMA enthält, sollte in client_terminal_data\folder\MQL5\Include\Expert\Signal gespeichert werden.

Der von dem MQL5 Wizard generierte Code für den Expert Advisor ist angefügt als Datei: threeema.mq5.

Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/250

Exp5-VirtualTradePad for MetaTrader 5 v.4 Exp5-VirtualTradePad for MetaTrader 5 v.4

Ein System für die Ausführung einiger Routineaufgaben im manuellen Handel mit MT5. Ein-Klick-Handel.

i_Trend_HTF i_Trend_HTF

Der Indikator i_Trend mit der Veränderungsmöglichkeit des Timeframes des Indikators in den Eingangsparametern.

MQL5 Wizard - Handelssignale basierend auf der Kreuzung des Preises und gleitenden Durchschnittes mit der Bestätigung durch den ADX-Indikator MQL5 Wizard - Handelssignale basierend auf der Kreuzung des Preises und gleitenden Durchschnittes mit der Bestätigung durch den ADX-Indikator

Handelssignale basierend auf der Kreuzung des Preises und des EMAs mit der Bestätigung durch den ADX Indikator "Signals based on price crossover with MA confirmed by ADX".

MQL5 Wizard - Handelssignale basierend auf der Kreuzung von zwei exponentiell geglätteten gleitenden Durchschnitten MQL5 Wizard - Handelssignale basierend auf der Kreuzung von zwei exponentiell geglätteten gleitenden Durchschnitten

Handelssignale basierend auf der Kreuzung von zwei exponentiellen gleitenden Durchschnitten "Signals based on crossover of two EMA".