MACD Handelsignalen: Gebruik MQL5 Wizard voor Automatische Expert Advisors

Mike 2011.01.14 21:55 17 0 0
Bijlage

MQL5 Wizard maakt het mogelijk om automatisch Expert Advisors (EA's) te creëren zonder dat je hoeft te programmeren (zie MQL5 Wizard: Creëren van Expert Advisors zonder programmeren).

In dit artikel bespreken we handelsignalen die zijn gebaseerd op de crossover van de MACD-indicatorlijnen. Deze strategie staat bekend als "Handelsignalen op basis van crossover van de hoofd- en signaallijnen van de MACD", en kan automatisch worden aangemaakt in de MQL5 Wizard.

De hoofd MACD-lijn wordt berekend als het verschil tussen de snelle en langzame EMA. De signaallijn van de MACD is de hoofd MACD-lijn, gladgestreken met de PeriodSignal-periode.

Handelsignalen:

  • Koop: opwaartse crossover van de hoofd- en signaallijnen van de MACD-indicator.
  • Verkoop: neerwaartse crossover van de hoofd- en signaallijnen van de MACD-indicator.

Deze strategie is geïmplementeerd in de CSignalMACD klasse van de Trading Strategie klassen in de MQL5 Standaardbibliotheek (te vinden in MQL5\Include\Expert\Signal\SignalMACD.mqh).

Figuur 1. Handelsignalen op basis van crossover van hoofd- en signaallijnen van MACD

Figuur 1. Handelsignalen op basis van crossover van hoofd- en signaallijnen van MACD


Handelsignalen

De handelsstrategie is geïmplementeerd in de CSignalMACD klasse, die enkele beschermde methoden bevat om toegang te krijgen tot de indicatorwaarden:

double  MainMACD(int ind)      // retourneert de waarde van de hoofd MACD-lijn van de bar
double  SignalMACD(int ind)    // retourneert de waarde van de signaallijn van de MACD
double  StateMACD(int ind)     // retourneert het verschil tussen de hoofd- en signaallijnen van de MACD
int     ExtStateMACD(int ind); // retourneert het aantal signaalveranderingen van het verschil tussen hoofd- en signaallijnen 


1. Open een long positie

Voorwaarden om een long positie te openen:

  • ExtStateMACD(1)==1; dit betekent dat de hoofd MACD-lijn omhoog heeft gekruist met de signaallijn
//+------------------------------------------------------------------+
//| Controleert de voorwaarden om een long positie (koop) te openen     |
//+------------------------------------------------------------------+
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. Sluit long positie

Voorwaarden om een long positie te sluiten:

  • ExtStateMACD(1)==1; dit betekent dat de hoofd MACD-lijn naar beneden is gekruist met de signaallijn
//+------------------------------------------------------------------+
//| Controleert de voorwaarden om een long positie te sluiten           |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==-1);
  }


3. Open een short positie

De voorwaarden om een short positie te openen zijn hetzelfde als die voor het sluiten van een long positie.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden om een short positie (verkoop) te openen |
//+------------------------------------------------------------------+
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. Sluit short positie

De voorwaarden om een short positie te sluiten zijn dezelfde als die voor het openen van een long positie.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden om een short positie te sluiten          |
//+------------------------------------------------------------------+
bool CSignalMACD::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(ExtStateMACD(1)==1);
  }

Een Expert Advisor maken met MQL5 Wizard

Om een handelsrobot te creëren op basis van deze strategie, selecteer je de signaalinstellingen als "Handelsignalen op basis van crossover van hoofd- en signaallijnen van de MACD" in de optie "Klaar om gemaakte Expert Advisors" van de MQL5 Wizard:

Figuur 2. Selecteer

Figuur 2. Selecteer "Handelsignalen op basis van crossover van hoofd- en signaallijnen van MACD" in MQL5 Wizard

Vervolgens moet je het nodige trailing stop algoritme en het geld- en risicobeheersysteem specificeren. De code van de Expert Advisor wordt automatisch aangemaakt, die je kunt compileren en testen in de Strategy Tester van de MetaTrader 5-clientterminal.


Testresultaten

Laten we de backtesting van de Expert Advisor op historische gegevens bekijken (EURUSD H1, testperiode: 1.1.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).

Bij het maken van de Expert Advisor hebben we gebruik gemaakt van een vast volume (Trading Fixed Lot, 0.1). De Trailing Stop-algoritme is niet gebruikt (Trailing niet gebruikt).

Figuur 3. Testresultaten van de Expert Advisor met handelsignalen op basis van crossover MACD-lijnen

Figuur 3. Testresultaten van de Expert Advisor met handelsignalen op basis van crossover MACD-lijnen


Bijlagen: De SignalMACD.mqh met de CSignalMACD klasse (inbegrepen in de MQL5 Standaardbibliotheek) is te vinden in de MQL5\Include\Expert\Signal map. Het testmacd.mq5 bevat de code van de Expert Advisor, aangemaakt met de MQL5 Wizard.

Lijst
Reactie 0