Handelssignalen met MQL5 Wizard: EMA Crossover Strategie

Mike 2011.01.12 05:30 32 0 0
Bijlage

MQL5 Wizard stelt je in staat om automatisch de code voor Expert Advisors te genereren. Wil je meer weten? Bekijk dan Het maken van kant-en-klare Expert Advisors in MQL5 Wizard.

In dit artikel bespreken we een strategie die gebaseerd is op het crossover van twee exponentieel gladgestreken voortschrijdende gemiddelden (snelle EMA en langzame EMA). Deze strategie wordt aangeduid als "Signalen gebaseerd op crossover van twee EMA" wanneer je een EA automatisch in MQL5 Wizard aanmaakt.

Handelssignalen:

  • Koop: de snelle EMA kruist omhoog de langzame EMA
  • Verkoop: de snelle EMA kruist omlaag de langzame EMA

Deze strategie is geïmplementeerd in de CSignalCrossEMA klasse.

Figuur 1. Handelssignalen, gebaseerd op crossover van twee exponentieel gladgestreken voortschrijdende gemiddelden

Figuur 1. Handelssignalen, gebaseerd op crossover van twee exponentieel gladgestreken voortschrijdende gemiddelden


Handelssignalen

De handelsstrategie is geïmplementeerd in de CSignalCrossEMA klasse en bevat enkele beschermde methoden om de toegang tot indicatorwaarden te vereenvoudigen:

double   FastEMA(int ind)      // retourneert de waarde van het snelle voortschrijdend gemiddelde van de bar
double   SlowEMA(int ind)      // retourneert de waarde van het langzame voortschrijdend gemiddelde van de bar
double   StateEMA(int ind)     // retourneert het verschil tussen de snelle en langzame voortschrijdende gemiddelden van de bar


1. Open lange positie

Voorwaarden om een lange positie te openen:

  • StateEMA(1)>0 en StateEMA(2)<0: de snelle EMA heeft omhoog gekruist over de langzame EMA op de laatst voltooide bar.
//+------------------------------------------------------------------+
//| Controleert voorwaarden om een lange positie te openen (buy)                     |
//+------------------------------------------------------------------+
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. Sluit lange positie

Voorwaarden om een lange positie te sluiten:

  • StateEMA(1)<0 en StateEMA(2)>0: de snelle EMA heeft omlaag gekruist onder de langzame EMA op de laatst voltooide bar.
//+------------------------------------------------------------------+
//| Controleert voorwaarden om een lange positie te sluiten                        |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseLong(double& price)
  {
   if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }


3. Open korte positie

De voorwaarden om een korte positie te openen zijn dezelfde als de voorwaarden voor het sluiten van een lange positie.

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

De voorwaarden om een korte positie te sluiten zijn dezelfde als de voorwaarden voor het openen van een lange positie.

//+------------------------------------------------------------------+
//| Controleert voorwaarden om een korte positie te sluiten                        |
//+------------------------------------------------------------------+
bool CSignalCrossEMA::CheckCloseShort(double& price)
  {
   if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false);
//---
   price=0.0;
//---
   return(true);
  }

Een Expert Advisor maken met MQL5 Wizard

Om een handelsrobot te creëren op basis van deze strategie, kies je de signaleigenschappen als "Signalen gebaseerd op crossover van twee EMA" in de optie "Kant-en-klare Expert Advisors maken" van MQL5 Wizard:

Figuur 2. Kies 'signalen, gebaseerd op crossover van twee EMA' in MQL5 Wizard

Figuur 2. Kies 'Signalen, gebaseerd op crossover van twee EMA' in MQL5 Wizard

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

Bovendien bevat de standaard bibliotheek de klasse "Signalen gebaseerd op crossover van twee MA", geïmplementeerd in de CSignalCrossMA klasse. Het handelsidee is vergelijkbaar, maar biedt veel extra functies (specificeer types, verschuivingen en gemiddelde methoden en gebruik Take Profit en Stop Loss niveaus).

Figuur 3. 'Signalen, gebaseerd op crossover van twee MA' in MQL5 Wizard

Figuur 3. 'Signalen, gebaseerd op crossover van twee MA' in MQL5 Wizard


Testresultaten

Laten we de backtesting van de Expert Advisor op historische data beschouwen (EURUSD H1, testperiode: 1.1.2010-05.01.2011, FastPeriod=12, SlowPeriod=24).

Bij het maken van de Expert Advisor gebruiken we een vaste volume (Trading Fixed Lot, 0.1), en het Trailing Stop algoritme wordt niet gebruikt (Trailing niet gebruikt).

Figuur 4. Historische backtestingresultaten van de Expert Advisor, gebaseerd op crossover van twee EMA

Figuur 4. Historische backtestingresultaten van de Expert Advisor, gebaseerd op crossover van twee EMA


Bijlagen: De SignalCrossEMA.mqh met de CSignalCrossEMA klasse moet worden geplaatst in de terminal_data_folder\MQL5\Include\Expert\Signal map.

Het crossover_2ema.mq5 bestand bevat de code van de Expert Advisor, gemaakt met behulp van MQL5 Wizard.

Lijst
Reactie 0