MQL5 Wizard ermöglicht es dir, den Code für Expert Advisors automatisch zu erstellen. Weitere Details findest du hier: Fertige Expert Advisors im MQL5 Wizard erstellen.
In diesem Beitrag betrachten wir eine Strategie, die auf dem Preis-Crossover mit dem gleitenden Durchschnitt basiert. Diese Strategie nennt sich „Signale basierend auf Preis-Crossover mit MA“ (bei der automatischen Erstellung von EAs im MQL5 Wizard).
Die Handelssignale:
- Buy: Aufwärtscrossover des Preises mit dem gleitenden Durchschnitt.
- Sell: Abwärtscrossover des Preises mit dem gleitenden Durchschnitt.
- Die Überprüfung des Anstiegs/Abfalls des gleitenden Durchschnitts dient zur Filterung falscher Signale.
Diese Strategie ist in der CSignalMA-Klasse der Handelsstrategie-Klassen der MQL5 Standardbibliothek implementiert (zu finden unter MQL5\Include\Expert\Signal\SignalMA.mqh).

Abbildung 1. Handelssignale basierend auf Preis-Crossover mit gleitendem Durchschnitt
Handelssignale
Die Handelsstrategie ist in der CSignalMA-Klasse implementiert und verfügt über einige geschützte Methoden, um den Zugriff auf Indikatoren und Preiswerte zu vereinfachen:
double MA(int ind) // Gibt den Wert des gleitenden Durchschnitts der Kerze zurück double Open(int ind) // Gibt den Eröffnungspreis der Kerze zurück double Close(int ind) // Gibt den Schlusskurs der Kerze zurück double StateMA(int ind) // Gibt positiven Wert zurück, wenn der Durchschnitt steigt, und negativ, wenn er fällt double StateOpen(int ind) // Gibt die Differenz zwischen Eröffnungspreis und gleitendem Durchschnitt zurück double StateClose(int ind) // Gibt die Differenz zwischen Schlusskurs und gleitendem Durchschnitt zurück
1. Long-Position eröffnen
Die Bedingungen zum Öffnen einer Long-Position (Preis-Crossover mit MA und Überprüfung des Anstiegs des gleitenden Durchschnitts):
- Open(1) < MA(1): Eröffnungspreis ist niedriger als der gleitende Durchschnitt;
- Close(1) > MA(1): Schlusskurs ist höher als der gleitende Durchschnitt;
- MA(1) > MA(2): Überprüfung des Anstiegs des gleitenden Durchschnitts (um falsche Signale zu filtern).
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen zum Öffnen einer Long-Position (Kauf) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- Preis hat den gleitenden Durchschnitt nach oben überschritten und der MA steigt return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); }
2. Long-Position schließen
Die Bedingungen zum Schließen einer Long-Position (Preis-Crossover mit MA und Überprüfung des Abfalls des gleitenden Durchschnitts):
- Open(1) > MA(1): Eröffnungspreis ist höher als der gleitende Durchschnitt;
- Close(1) < MA(1): Schlusskurs ist niedriger als der gleitende Durchschnitt;
- MA(1) < MA(2): Überprüfung des Abfalls des gleitenden Durchschnitts (um falsche Signale zu filtern).
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen zum Schließen einer Long-Position | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseLong(double& price) { price=0.0; //--- Preis hat den gleitenden Durchschnitt nach unten überschritten und der MA fällt return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
3. Short-Position öffnen
Die Bedingungen für das Öffnen einer Short-Position sind die gleichen wie die Bedingungen für das Schließen einer Long-Position.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen zum Öffnen einer Short-Position (Verkauf) | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- Preis hat den gleitenden Durchschnitt nach oben überschritten und der MA fällt return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
4. Short-Position schließen
Die Bedingungen zum Schließen einer Short-Position sind die gleichen wie die Bedingungen für das Öffnen einer Long-Position.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen zum Schließen einer Short-Position | //+------------------------------------------------------------------+ bool CSignalMA::CheckCloseShort(double& price) { price=0.0; //--- Preis hat den gleitenden Durchschnitt nach unten überschritten und der MA steigt return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); } //+------------------------------------------------------------------+
Erstellung 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 Preis-Crossover mit MA“ in der Option „Fertige Expert Advisors erstellen“ im MQL5 Wizard auswählen:

Abbildung 2. Wähle „Signale basierend auf Preis-Crossover mit MA“ 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 dann kompilieren und im Strategietester des MetaTrader 5-Client-Terminals testen.
Testergebnisse
Schauen wir uns das Backtesting des Expert Advisors an historischen Daten an (EURUSD H1, benutzerdefinierter Zeitraum: 1.1.2010-05.01.2011, MA_Period=12, MA_Shift=0).

Abbildung 3. Historische Backtesting-Ergebnisse des Expert Advisors, basierend auf Preis-Crossover mit MA
Anlagen: Die SignalMA.mqh mit der CSignalMA-Klasse (enthalten in der MQL5 Standardbibliothek) befindet sich im MQL5\Include\Expert\Signal-Ordner. Die Datei crossoverma.mq5 enthält den Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde.
Kommentar 0