und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5

MQL5 Wizard - Handelssignale basierend auf der Kreuzung von zwei exponentiell geglätteten gleitenden Durchschnitten - Experte für den MetaTrader 5
- Ansichten:
- 2019
- Rating:
- Veröffentlicht:
- 2016.09.02 10:51
- 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 Kreuzung zweier EMAs (schnellen und langsamen) beruht. Diese Strategie ist im Standardpaket des Terminals enthalten und heißt "Signals based on crossover of two EMA".
Handelssignale:
- Kauf: wenn der schnelle EMA den langsamen von unten nach oben kreuzt
- Verkauf: wenn der schnelle EMA den langsamen von oben nach unten kreuzt.
Die Handelsstrategie wird in der Klasse CSignalCrossEMA implementiert.
Abbildung 1. Handelssignale der Strategie basierend auf der Kreuzung zweier EMAs
Handelssignale
Das Modul mit Handelssignalen dieser Strategie ist in der Klasse CSignalCrossEMA implementiert, sie enthält mehrere geschützte (protected) Methoden, die für den Zugang zu Werten von Kursen und Indikatoren verwendet werden:
double FastEMA(int ind) // gibt den Wert des schnellen gleitenden Durchschnitts auf dem Balken zurück double SlowEMA(int ind) // gibt den Wert des langsamen gleitenden Durchschnitts auf dem Balken zurück double StateEMA(int ind) // gibt die Differenz zwischen den Werten des langsamen und des schnellen gleitenden Durchschnitts auf dem Balken zurück
1. Eröffnen einer Long-Position
Bedingungen für das Eröffnen einer Long-Position:
- StateEMA(1)>0 und StateEMA(2)<0: der schnelle gleitende Durchschnitt kreuzt den langsamen von unten nach oben auf dem letzten vollständigen Balken.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für das Eröffnen einer Long-Position | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
2. Schließen einer Long-Position
Bedingungen für das Schließen einer Long-Position:
- StateEMA(1)<0 und StateEMA(2)>0: der schnelle gleitende Durchschnitt kreuzt den langsamen von oben nach unten auf dem letzten vollständigen Balken.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für das Schließen einer Long-Position | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseLong(double& price) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; //--- return(true); }
3. Eröffnen einer Short-Position
Die Bedingungen für das Eröffnen einer Short-Position und das Schließen einer Long-Position sind gleich.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für das Eröffnen einer Short-Position | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
4. Schließen einer Short-Position
Die Bedingungen für das Schließen einer Short-Position und Eröffnen einer Long-Position sind gleich.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für das Schließen einer Short-Position | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseShort(double& price) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; //--- return(true); }
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 crossover of two EMA" im zweiten Schritt aus:
Abbildung 2. Auswahl des Moduls der Handelssignale basierend auf der Kreuzung zweier EMAs mithilfe von 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.
Neben diesem Modul enthält die Standardbibliothek das Modul der Handelssignale, die auf der Kreuzung zweier gleitenden Durchschnitte beruhen "Signals based on crossover of two MA". Das Modul wird in der Klasse CSignalCrossMA implementiert. Es bietet viele zusätzliche Funktionen, welche das System noch flexibler machen (neben Perioden gleitender Durchschnitte können Typen und Methoden der Mittelung, Verschiebung der MAs sowie Stop Loss und Take Profit Levels verwendet werden).
Abbildung 3. Das Modul der Handelssignale basierend auf der Kreuzung zweier MAs in MQL5 Wizard
Testergebnisse
Die Ergebnisse des Expert Advisors bei einem Test unter Verwendung von historischen Daten (EURUSD H1, Testperiode: 1.1.2010-05.01.2011, FastPeriod=12, SlowPeriod=24).
Dieser Expert Advisor benutzt das Modul für den Handel mit einer festgelegten Lotgröße von 0.1 Lot (Trading Fixed Lot), ein Trailing Stop wurde nicht verwendet (Trailing not used).
Abb. 4. Ergebnisse des Testens für den EA, der auf der Kreuzung zweier EMA beruht
Die Datei SignalCrossEMA.mqh, die die Klasse von Handelssignalen CSignalCrossEMA enthält, muss nach client_terminal_data\folder\MQL5\Include\Expert\Signal kopiert werden.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/261

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".

Handelssignale auf der Basis der gegenseitigen Lage drei exponentiell geglätteter gleitender Durchschnitte "Signals based on three EMA".

Handelsignale auf der Basis der Kreuzung der Hauptlinie und der Signallinie des MACD Indikators "Signals based on crossover of main and signal MACD lines" (die Klasse CSignalMACD ist in der Standardbibliothek enthalten).

Handelssignale auf der Basis der Kreuzung zweier EMA mit einem Filter nach zeitlichen Parametern "Signals based on crossover of two EMA with intraday time filter".