Handelssignalen op Basis van Drie Voortschrijdende Gemiddelden - MQL5 Wizard

Mike 2011.01.10 19:41 26 0 0
Bijlage

MQL5 Wizard maakt het mogelijk om automatisch de code van Expert Advisors te creëren. Voor meer details, zie Klaar-Made Expert Advisors Creëren in MQL5 Wizard.

In dit artikel bespreken we een trendstrategie die gebaseerd is op drie voortschrijdende gemiddelden, ook wel "Signalen op Basis van Drie EMA" genoemd. Deze strategie maakt gebruik van drie exponentieel gladgestreken voortschrijdende gemiddelden: FastEMA, MediumEMA en SlowEMA.

Handelssignalen:

  • Koopsignaal: FastEMA > MediumEMA > SlowEMA (opwaartse trend).
  • Verkopsignaal: FastEMA < MediumEMA < SlowEMA (afwaartse trend).

Deze strategie is geïmplementeerd in de CSignal3EMA klasse (de signal3ema.mqh moet worden geplaatst in terminal_data_folder\MQL5\Include\Expert\Signal\Signal3EMA.mqh).

Afbeelding 1. Handelssignalen, gebaseerd op drie voortschrijdende gemiddelden

Afbeelding 1. Handelssignalen, gebaseerd op drie voortschrijdende gemiddelden

Handelssignalen

De handelsstrategie is geïmplementeerd in de CSignal3EMA klasse, en heeft enkele beschermde methoden om de toegang tot de waarden van de drie voortschrijdende gemiddelden (Fast, Medium, Slow) te vereenvoudigen:

double  FastEMA(int ind)      // retourneert de waarde van Fast EMA van de bar
double  MediumEMA(int ind)      // retourneert de waarde van Medium EMA van de bar
double  SlowEMA(int ind)      // retourneert de waarde van Slow EMA van de bar
De indicatorwaarden van de 0e (onvoltooide) bar kunnen veranderen, dus het is noodzakelijk om de handelsvoorwaarden te controleren met behulp van de gegevens van voltooide (gevormde) bars.

1. Open een lange positie

De opwaartse trend wordt bepaald door de volgende voorwaarden: FastEMA > MediumEMA > SlowEMA:

  • FastEMA(1) > MediumEMA(1): Fast EMA is hoger dan Medium EMA (laatste voltooide bar);
  • MediumEMA(2) > SlowEMA(1): Medium EMA is hoger dan Slow EMA (laatste voltooide bar);
//+------------------------------------------------------------------+
//| Controleert voorwaarden om een lange positie (buy) te openen       |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Ask()-m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Ask()+m_take_profit*m_adjusted_point;
//--- controleert op opwaartse trend (op de laatste voltooide bar): FastEMA(1) > MediumEMA(1) > SlowEMA(1)
    return(FastEMA(1)>medium && medium>SlowEMA(1));
  }


2. Sluit lange positie

De afwaartse trend wordt bepaald door de volgende voorwaarden: FastEMA < MediumEMA < SlowEMA:

  • FastEMA(1) < MediumEMA(1): Fast EMA is lager dan Medium EMA (laatste voltooide bar);
  • MediumEMA(2) < SlowEMA(1): Medium EMA is lager dan Slow EMA (laatste voltooide bar);
//+------------------------------------------------------------------+
//| Controleert voorwaarden om een lange positie te sluiten            |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseLong(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- controleert op afwaartse trend (op de laatste voltooide bar): FastEMA(1) < MediumEMA(1) < SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));
  }
Je kunt het sluiten van een lange positie verbeteren: het is niet noodzakelijk om te wachten op de afwaartse trend, je kunt lange posities sluiten wanneer er een zijwaartse beweging is, wat kan worden bepaald door de volgende voorwaarden: FastEMA < MediumEMA > SlowEMA.


3. Open een korte positie

//+------------------------------------------------------------------+
//| Controleert voorwaarden om een korte positie (sell) te openen      |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
   sl   =m_symbol.Bid()+m_stop_loss*m_adjusted_point;
   tp   =m_symbol.Bid()-m_take_profit*m_adjusted_point;
//--- controleert op afwaartse trend (op de laatste voltooide bar): FastEMA(1) < MediumEMA(1) < SlowEMA(1)
   return(FastEMA(1)<medium && medium<SlowEMA(1));

  }

4. Sluit korte positie

//+------------------------------------------------------------------+
//| Controleert voorwaarden om een korte positie te sluiten           |
//+------------------------------------------------------------------+
bool CSignal3EMA::CheckCloseShort(double& price)
  {
   double medium=MediumEMA(1);
//---
   price=0.0;
//--- controleert op opwaartse trend (op de laatste voltooide bar): FastEMA(1) > MediumEMA(1) > SlowEMA(1)
   return(FastEMA(1)>medium && medium>SlowEMA(1));
  }

Je kunt het sluiten van een korte positie verbeteren: het is niet noodzakelijk om te wachten op de opwaartse trend, je kunt korte posities sluiten wanneer er een zijwaartse beweging is, wat kan worden bepaald door de volgende voorwaarden: FastEMA > MediumEMA < SlowEMA.


Een Expert Advisor creëren met MQL5 Wizard

Om een handelsrobot te creëren op basis van deze strategie, moet je de signaalinstellingen kiezen als "Signalen op Basis van Drie EMA" in de optie "Klaar-Made Expert Advisors Creëren" van MQL5 Wizard:

Afbeelding 2. Kies

Afbeelding 2. Kies "Signalen op Basis van Drie EMA" in MQL5 Wizard

Daarna 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 client terminal.


Testresultaten

Laten we de backtesting van de Expert Advisor op historische gegevens bekijken (EURUSD H1, testperiode: 1.1.2010-05.01.2011, FastPeriod=5, MediumPeriod=12, SlowPeriod=24, StopLoss=400, TakeProfit=900).

Bij het creëren van de Expert Advisor hebben we een vast volume gebruikt (Trading Fixed Lot, 0.1), het Trailing Stop algoritme is niet gebruikt (Trailing niet gebruikt).

Afbeelding 3. Historische backtestingresultaten van de Expert Advisor, gebaseerd op drie EMA

Afbeelding 3. Historische backtestingresultaten van de Expert Advisor, gebaseerd op drie EMA

Bijlagen: De Signal3EMA.mqh met de CSignal3EMA klasse moet worden geplaatst in terminal_data_folder\MQL5\Include\Expert\Signal.

Het drieema.mq5 bestand bevat de code van de Expert Advisor, aangemaakt met behulp van MQL5 Wizard.


Lijst
Reactie 0