Handelssignalen met MQL5 Wizard: Gebruik de MA Crossover Strategie

Mike 2011.01.08 00:03 16 0 0
Bijlage

MQL5 Wizard maakt het mogelijk om automatisch de code voor Expert Advisors te genereren. Voor meer informatie, zie Klaar om te gebruiken Expert Advisors in MQL5 Wizard.

In dit artikel bespreken we een strategie die gebaseerd is op prijsoverschrijvingen met de Moving Average indicator. Deze strategie wordt aangeduid als "Signalen gebaseerd op prijsoverschrijvingen met MA" wanneer je een EA automatisch aanmaakt met de MQL5 Wizard.

De handelssignalen:

  • Kopen: prijs kruist omhoog met de Moving Average.
  • Verkopen: prijs kruist omlaag met de Moving Average.
  • De controle op stijging/daling van de MA wordt gebruikt om valse signalen te filteren.

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

Figuur 1. Handelssignalen op basis van prijsoverschrijvingen met de Moving Average

Figuur 1. Handelssignalen op basis van prijsoverschrijvingen met de Moving Average

Handelssignalen

De handelsstrategie is geïmplementeerd in de CSignalMA klasse. Deze klasse bevat enkele beschermde methoden om de toegang tot indicatoren en prijswaarden te vereenvoudigen:

double  MA(int ind)          // retourneert de waarde van de moving average van de bar
double  Open(int ind)        // retourneert de openingsprijs van de bar
double  Close(int ind)        // retourneert de sluitprijs van de bar
double  StateMA(int ind)     // retourneert positieve waarde als het gemiddelde stijgt en negatief als het daalt
double  StateOpen(int ind)   // retourneert het verschil tussen de openingsprijs en de moving average 
double  StateClose(int ind)   // retourneert het verschil tussen de sluitprijs en de moving average
De prijs- en indicatorwaarden van de 0e (onvoltooide) bar kunnen veranderen, dus het is noodzakelijk om de handelsvoorwaarden te controleren met behulp van de gegevens van de voltooide (gevormde) bars.

1. Open een lange positie

Voorwaarden om een lange positie te openen (prijsoverschrijding met MA en controleren van MA-stijging):

  • Open(1)<MA(1): openingsprijs is lager dan de moving average;
  • Close(1)>MA(1): sluitprijs is hoger dan de moving average;
  • MA(1)>MA(2): controleer stijging van de moving average (om valse signalen te filteren).
//+------------------------------------------------------------------+
//| Controleert voorwaarden om een lange positie te openen (kopen)                    |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- prijs heeft de MA omhoog gekruist en MA stijgt
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }

2. Sluit lange positie

Voorwaarden om een lange positie te sluiten (prijsoverschrijding met MA en controleren van MA-daling):

  • Open(1)>MA(1): openingsprijs is hoger dan de moving average;
  • Close(1)<MA(1): sluitprijs is lager dan de moving average;
  • MA(1)<MA(2): controleer daling van de moving average (om valse signalen te filteren).
//+------------------------------------------------------------------+
//| Controleert voorwaarden om een lange positie te sluiten            |
//+------------------------------------------------------------------+
bool CSignalMA::CheckCloseLong(double& price)
  {
   price=0.0;
//--- prijs heeft de moving average omlaag gekruist en moving average daalt
  return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


3. Open een 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 (verkopen)                  |
//+------------------------------------------------------------------+
bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//--- prijs heeft de moving average omhoog gekruist en moving average daalt 
   return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0);
  }


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 CSignalMA::CheckCloseShort(double& price)
  {
   price=0.0;
//--- prijs heeft de moving average omhoog gekruist en moving average stijgt
   return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0);
  }
//+------------------------------------------------------------------+

Een Expert Advisor maken met MQL5 Wizard

Om een handelsrobot te creëren op basis van de strategie moet je de signaalparameters kiezen als "Signalen gebaseerd op prijsoverschrijvingen met MA" in de optie "Klaar om te gebruiken Expert Advisors" van MQL5 Wizard:

Figuur 2. Kies

Figuur 2. Kies "Signalen gebaseerd op prijsoverschrijvingen met MA" in MQL5 Wizard

Vervolgens moet je het benodigde trailing stop algoritme en het geld- en risicomanagement systeem specificeren. De code van de Expert Advisor wordt automatisch aangemaakt, je kunt deze compileren en testen in de Strategietester van de MetaTrader 5 client terminal.


Testresultaten

Laten we de backtesting van de Expert Advisor op historische data bekijken (EURUSD H1, aangepaste periode: 1.1.2010-05.01.2011, MA_period=12, MA_Shift=0).

Bij het creëren van de Expert Advisor hebben we het vaste volume gebruikt (Handel met Vaste Lot, 0.1), het Trailing Stop algoritme is niet gebruikt (Trailing niet gebruikt).

Crossover met Moving Average

Figuur 3. Historische backtestingresultaten van de Expert Advisor, gebaseerd op prijsoverschrijvingen met MA

Bijlagen: De SignalMA.mqh met CSignalMA klasse (inbegrepen in MQL5 Standaardbibliotheek) is te vinden in de MQL5\Include\Expert\Signal map. Het bestand crossoverma.mq5 bevat de code van de Expert Advisor, gemaakt met behulp van MQL5 Wizard.

Lijst
Reactie 0