MACD Handelsstrategie: Signale durch Kreuzung der Linien im MQL5 Wizard generieren

Mike 2011.01.14 21:55 14 0 0
Anhang

MQL5 Wizard ermöglicht die automatische Erstellung von Trading-Expert Advisors (EAs), ohne dass Programmierkenntnisse erforderlich sind (siehe MQL5 Wizard: Expert Advisors ohne Programmierung erstellen).

In diesem Beitrag werfen wir einen Blick auf die Handelssignale, die auf der Kreuzung der MACD-Indikatorlinien basieren. Die Strategie heißt „Signale basierend auf der Kreuzung der Haupt- und Signallinien des MACD“, wenn der EA automatisch im MQL5 Wizard erstellt wird.

Die Hauptlinie des MACD-Indikators wird als Differenz zwischen der schnellen und der langsamen EMA berechnet. Die Signallinie des MACD wird als geglättete Hauptlinie mit der PeriodSignal-Periode berechnet.

Handelssignale:

  • Buy: Aufwärtskreuzung der Haupt- und Signallinien des MACD-Indikators.
  • Sell: Abwärtskreuzung der Haupt- und Signallinien des MACD-Indikators.

Diese Strategie ist in der CSignalMACD Klasse der Handelsstrategie-Klassen der MQL5 Standardbibliothek implementiert (zu finden in MQL5\Include\Expert\Signal\SignalMACD.mqh).

Abbildung 1. Handelssignale, basierend auf der Kreuzung der Haupt- und Signallinien des MACD

Abbildung 1. Handelssignale, basierend auf der Kreuzung der Haupt- und Signallinien des MACD


Handelssignale

Die Handelsstrategie ist in der CSignalMACD Klasse implementiert und bietet einige geschützte Methoden, um den Zugriff auf die Indikatorwerte zu vereinfachen:

double  MainMACD(int ind)      // gibt den Wert der Hauptlinie des MACD für die Kerze zurück
double  SignalMACD(int ind)    // gibt den Wert der Signallinie des MACD für die Kerze zurück
double  StateMACD(int ind)     // gibt die Differenz zwischen Haupt- und Signallinie des MACD zurück
int     ExtStateMACD(int ind); // gibt die Anzahl der Vorzeichenwechsel der Differenz zwischen Haupt- und Signallinie zurück 


1. Long-Position eröffnen

Bedingungen für die Eröffnung einer Long-Position:

  • ExtStateMACD(1)==1; das bedeutet, dass die Hauptlinie die Signallinie des MACD aufwärts gekreuzt hat.
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen zum Eröffnen einer Long-Position (Kauf)|
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==1);
  }


2. Long-Position schließen

Bedingungen zum Schließen einer Long-Position:

  • ExtStateMACD(1)==1; das bedeutet, dass die Hauptlinie die Signallinie des MACD abwärts gekreuzt hat.
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen zum Schließen einer Long-Position         |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==-1);
  }


3. Short-Position eröffnen

Die Bedingungen zum Eröffnen einer Short-Position sind dieselben wie die Bedingungen zum Schließen einer Long-Position.

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen zum Eröffnen einer Short-Position (Verkauf)|
//+------------------------------------------------------------------+
bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//---
   return(ExtStateMACD(1)==-1);
  }


4. Short-Position schließen

Die Bedingungen zum Schließen einer Short-Position sind dieselben wie die Bedingungen zum Eröffnen einer Long-Position.

//+------------------------------------------------------------------+
//| Überprüft die Bedingungen zum Schließen einer Short-Position        |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==1);
  }

Expert Advisor mit MQL5 Wizard erstellen

Um einen Handelsroboter basierend auf der Strategie zu erstellen, wählen Sie die Signalparameter als „Signale basierend auf der Kreuzung der Haupt- und Signallinien des MACD“ in der Option „Bereitgestellte Expert Advisors erstellen“ im MQL5 Wizard aus:

Abbildung 2. Wählen Sie

Abbildung 2. Wählen Sie "Signale basierend auf der Kreuzung der Haupt- und Signallinien des MACD" im MQL5 Wizard

Im nächsten Schritt müssen Sie den benötigten Trailing Stop-Algorithmus und das Geld- und Risikomanagement-System angeben. Der Code des Expert Advisors wird automatisch erstellt, den Sie kompilieren und im Strategietester des MetaTrader 5 Client-Terminals testen können.


Testergebnisse

Betrachten wir das Backtesting des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 01.01.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).

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

Abbildung 3. Testergebnisse des Expert Advisors mit Handelssignalen, basierend auf der Kreuzung der MACD-Linien

Abbildung 3. Testergebnisse des Expert Advisors mit Handelssignalen, basierend auf der Kreuzung der MACD-Linien


Anlagen: Die SignalMACD.mqh mit CSignalMACD Klasse (in der MQL5 Standardbibliothek enthalten) befindet sich im MQL5\Include\Expert\Signal-Ordner. Die testmacd.mq5 enthält den Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde.

Liste
Kommentar 0