Handelssignalen met MQL5 Wizard: Bullish en Bearish Engulfing + CCI

Mike 2011.03.10 19:54 81 0 0
Bijlage

Met de MQL5 Wizard kun je kant-en-klare Expert Advisors creëren op basis van de Standaard bibliotheek die samen met de client terminal wordt geleverd (voor meer details zie Kant-en-klare Expert Advisors maken in MQL5 Wizard). Dit maakt het mogelijk om je handelsideeën snel te controleren, je hoeft alleen maar je eigen signalen klasse te creëren. De structuur van deze klasse en een voorbeeld vind je in het artikel MQL5 Wizard: Hoe maak je een module van handelsignalen.

Het algemene idee is als volgt: de klasse van handelsignalen is afgeleid van CExpertSignal. Vervolgens is het nodig om de LongCondition() en ShortCondition() virtuele methoden te overschrijven met je eigen methoden.

Er is een boek "Strategieën van de beste traders" (in het Russisch), waarin veel handelsstrategieën worden behandeld. Wij zullen ons richten op omkerende candlestick patronen, bevestigd door Stochastisch, CCI, MFI en RSI oscillatoren.

De beste manier is om een aparte klasse te creëren, afgeleid van CExpertSignal, voor het controleren van de vorming van candlestick patronen. Voor de bevestiging van handelsignalen, gegenereerd door candlestick patronen, is het voldoende om de klasse, afgeleid van CCandlePattern te schrijven en daar de nodige functies aan toe te voegen (bijvoorbeeld, bevestiging door oscillatoren).

Hier zullen we de signalen bekijken, gebaseerd op het "Bullish Engulfing/Bearish Engulfing" omkerend candlestick patroon, bevestigd door de CCI indicator. De module van handelsignalen is gebaseerd op de CCandlePattern klasse, het is een eenvoudig voorbeeld van het gebruik ervan voor het creëren van handelsignalen met candlestick patronen.

1. "Bullish Engulfing" en "Bearish Engulfing" omkerende candlestick patronen

1.1. Bullish Engulfing

Het "Bullish Engulfing" omkerende patroon vormt zich in een downtrend wanneer een kleine zwarte candlestick wordt gevolgd door een grote witte candlestick die volledig de candlestick van de vorige dag eclipsiert ("engulfs"). De schaduwen (staarten) van de kleine candlestick zijn kort, waardoor de body van de grote candlestick de hele candlestick van de vorige dag kan bedekken.

Fig. 1. Bullish Engulfing candlestick patroon

Fig. 1. Bullish Engulfing candlestick patroon

De herkenning van het "Bullish Engulfing" patroon is geïmplementeerd in de CheckPatternBullishEngulfing() methode van de CCandlePattern klasse:

//+------------------------------------------------------------------+
//| Controleert de vorming van het "Bullish Engulfing" candlestick patroon |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishEngulfing()
  {
//--- Bullish Engulfing
   if((Open(2)>Close(2))             &&  // vorige candle is bearish
      (Close(1)-Open(1)>AvgBody(1))  &&  // body van de bullish candle is hoger dan de gemiddelde waarde van de body 
      (Close(1)>Open(2))             &&  // sluitingsprijs van de bullish candle is hoger dan openingsprijs van de bearish candle
      (MidOpenClose(2)<CloseAvg(2))  &&  // downtrend
      (Open(1)<Close(2)))                // openingsprijs van de bullish candle is lager dan sluitingsprijs van de bearish
      return(true);
//---
   return(false);
  }

De CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) methode van de CCandlePattern klasse wordt gebruikt om de vorming van het "Bullish Engulfing" candlestick patroon te controleren.


1.2. Bearish Engulfing

Het "Bearish Engulfing" omkerende patroon vormt zich in een uptrend wanneer een kleine witte candlestick wordt gevolgd door een grote zwarte candlestick die volledig de candlestick van de vorige dag eclipsiert ("engulfs"). De schaduwen (staarten) van de kleine candlestick zijn kort, waardoor de body van de grote candlestick de hele candlestick van de vorige dag kan bedekken.

Fig. 2. Bearish Engulfing candlestick patroon

Fig. 2. Bearish Engulfing candlestick patroon

De herkenning van het "Bearish Engulfing" patroon is geïmplementeerd in de CheckPatternBearishEngulfing() methode van de CCandlePattern klasse:

//+------------------------------------------------------------------+
//| Controleert de vorming van het "Bearish Engulfing" candlestick patroon |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishEngulfing()
  {
//--- Bearish Engulfing
   if((Open(2)<Close(2))            &&  // vorige candle is bullish
      (Open(1)-Close(1)>AvgBody(1)) &&  // body van de bearish candle is hoger dan de gemiddelde waarde van de body
      (Close(1)<Open(2))            &&  // sluitingsprijs van de bearish candle is lager dan openingsprijs van de bullish candle
      (MidOpenClose(2)>CloseAvg(2)) &&  // uptrend
      (Open(1)>Close(2)))               // openingsprijs van de bearish candle is hoger dan sluitingsprijs van de bullish candle
      return(true);
//---
   return(false);
  }

De CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) methode van de CCandlePattern klasse wordt gebruikt om de vorming van het "Bearish Engulfing" candlestick patroon te controleren.


2. Handelsignalen, bevestigd door de CCI indicator

De handelsignalen om een lange of korte positie te openen moeten bevestigd worden door de CCI indicator. De waarde van CCI moet groter/kleiner zijn dan kritieke niveaus (-50 voor een lange positie en 50 voor een korte positie).

Het sluiten van een geopende positie hangt af van de waarden van CCI. Dit kan in twee gevallen gedaan worden:

  • Als de CCI-lijn het tegenovergestelde kritieke niveau heeft bereikt (80 voor een lange positie en -80 voor een korte positie).
  • Als het omgekeerde signaal niet is bevestigd (wanneer CCI de volgende niveaus bereikt: -80 voor een lange positie en 80 voor een korte positie).

Fig. 3. Bullish Engulfing patroon, bevestigd door CCI indicator

Fig. 3. Bullish Engulfing patroon, bevestigd door CCI indicator


  • int CBE_BE_CCI::LongCondition() - controleert voorwaarden om een lange positie te openen (geeft 80 terug) en om de korte positie te sluiten (geeft 40 terug);
  • int CBE_BE_CCI::ShortCondition() - controleert voorwaarden om een korte positie te openen (geeft 80 terug) en om de lange positie te sluiten (geeft 40 terug).

2.1. Lange positie openen/Korte positie sluiten

  1. De vorming van het "Bullish Engulfing" patroon moet bevestigd worden door de CCI indicator: CCI(1)<-50 (de waarde van de CCI van de laatste voltooide balk moet minder zijn dan -50).

  2. De korte positie moet gesloten worden als de CCI indicator omhoog is gekruist het kritieke niveau -80 of omlaag het kritieke niveau 80.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor instap en uitstap uit de markt |
//| 1) Marktinstap (open lange positie, resultaat=80) |
//| 2) Marktuitstap (sluit korte positie, resultaat=40) |
//+------------------------------------------------------------------+
int CBE_BE_CCI::LongCondition()
  {
   int result=0;
//--- idx kan gebruikt worden om de werkmodus van de Expert Advisor te bepalen
//--- idx=0 - in dit geval controleert de EA handelsvoorwaarden bij elke tick
//--- idx=1 - in dit geval controleert de EA handelsvoorwaarden alleen bij nieuws balken
   int idx   =StartIndex();
//--- controle van voorwaarden voor het openen van een lange positie
//--- vorming van Bullish Engulfing patroon en CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (CCI(1)<-50))
     result=80;
//--- controle van voorwaarden om de korte positie te sluiten
//--- signaal lijn crossover van overgekocht/ondergekocht niveaus (omlaag -80, omlaag -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
     result=40;
//--- geef resultaat terug
   return(result);
  }

2.2. Korte positie openen/Lange positie sluiten

  1. De vorming van het "Bearish Engulfing" patroon moet bevestigd worden door de CCI indicator: CCI(1)>50 (de waarde van de CCI indicator van de laatste voltooide balk moet groter zijn dan 50).

  2. De lange positie moet gesloten worden als de CCI indicator omlaag is gekruist de -80 of 80 niveaus.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor instap en uitstap uit de markt |
//| 1) Marktinstap (open korte positie, resultaat=80) |
//| 2) Marktuitstap (sluit lange positie, resultaat=40) |
//+------------------------------------------------------------------+
int CBE_BE_CCI::ShortCondition()
  {
   int result=0;
//--- idx kan gebruikt worden om de werkmodus van de Expert Advisor te bepalen
//--- idx=0 - in dit geval controleert de EA handelsvoorwaarden bij elke tick
//--- idx=1 - in dit geval controleert de EA handelsvoorwaarden alleen bij nieuws balken
   int idx   =StartIndex();
//--- controle van voorwaarden voor het openen van een korte positie
//--- vorming van Bearish Engulfing patroon en CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (CCI(1)>50))
     result=80;
//--- controle van voorwaarden om de lange positie te sluiten
//--- signaal lijn crossover van overgekocht/ondergekocht niveaus (omlaag -80, omhoog 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- geef resultaat terug
   return(result);
  }


2.3. Een Expert Advisor maken met behulp van MQL5 Wizard

De CBE_BE_CCI klasse is niet opgenomen in de Standaard Bibliotheek klassen, om deze te gebruiken, is het nodig om het acbe_be_cci.mqh bestand te downloaden (zie bijlagen) en op te slaan in de client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Hetzelfde moet gedaan worden met het candlepatterns.mqh bestand. Je kunt het gebruiken in MQL5 Wizard na het herstarten van de MetaEditor.

Om een Expert Advisor te creëren, start je de MQL5 Wizard:

Fig. 4. Een Expert Advisor maken met MQL5 Wizard

Fig. 4. Een Expert Advisor maken met MQL5 Wizard

Laten we de naam van de Expert Advisor specificeren:

Fig. 5. Algemene eigenschappen van de Expert Advisor

Fig. 5. Algemene eigenschappen van de Expert Advisor

Daarna moeten we de modules van handelsignalen selecteren die we gaan gebruiken.

Fig. 6. Signaal eigenschappen van de Expert Advisor

Fig. 6. Signaal eigenschappen van de Expert Advisor

In ons geval gebruiken we slechts één module van handelsignalen.

Het toevoegen van de "Signalen gebaseerd op Bullish Engulfing/Bearish Engulfing bevestigd door CCI" module van handelsignalen:

Fig. 7. Signaal eigenschappen van de Expert Advisor

Fig. 7. Signaal eigenschappen van de Expert Advisor

Module van handelsignalen toegevoegd:

Fig. 8. Signaal eigenschappen van de Expert Advisor

Fig. 8. Signaal eigenschappen van de Expert Advisor

Je kunt alle trailing eigenschappen selecteren, maar we zullen "Trailing Stop niet gebruikt" gebruiken:

Fig. 9. Trailing eigenschappen van de Expert Advisor

Fig. 9. Trailing eigenschappen van de Expert Advisor

Wat betreft de geldbeheer eigenschappen, zullen we "Handelen met vaste handelsvolume" gebruiken:

Fig. 10. Geldbeheer eigenschappen van de Expert Advisor

Fig. 10. Geldbeheer eigenschappen van de Expert Advisor

Door op de "Voltooien" knop te drukken, krijgen we de code van de gegenereerde Expert Advisor, die te vinden is in Expert_ABE_BE_CCI.mq5 en opgeslagen zal worden in terminal_data_folder\MQL5\Experts\.

De standaard invoerparameters van de gegenereerde Expert Advisor:

//--- invoerparameters voor het hoofd signaal
input int            Signal_ThresholdOpen   =10;     // Signaal drempelwaarde om te openen [0...100]
input int            Signal_ThresholdClose  =10     // Signaal drempelwaarde om te sluiten [0...100]
input double         Signal_PriceLevel      =0.0    // Prijsniveau om een deal uit te voeren
input double         Signal_StopLevel       =50.0   // Stop Loss niveau (in punten)
input double         Signal_TakeLevel       =50.0    // Take Profit niveau (in punten)

moet vervangen worden door:

//--- invoerparameters voor het hoofd signaal
input int            Signal_ThresholdOpen   =40;     // Signaal drempelwaarde om te openen [0...100]
input int            Signal_ThresholdClose  =20     // Signaal drempelwaarde om te sluiten [0...100]
input double         Signal_PriceLevel      =0.0    // Prijsniveau om een deal uit te voeren
input double         Signal_StopLevel       =0.0    // Stop Loss niveau (in punten)
input double         Signal_TakeLevel       =0.0    // Take Profit niveau (in punten)

De Signal_ThresholdOpen/Signal_ThresholdClose invoerparameters stellen de drempelniveaus in voor het openen en sluiten van posities.

In de code van de LongCondition() en ShortCondition() methoden van de handelsignalen klasse hebben we de vaste waarden van de drempel gespecificeerd:

  • Open positie: 80;
  • Sluit positie: 40.

De Expert Advisor, gegenereerd door MQL5 Wizard opent en sluit posities met behulp van de "stemmen" van de modules van handelsignalen. De stem van de hoofdmodule (als container, deze bestaat uit alle toegevoegde modules) wordt ook gebruikt, maar zijn LongCondition() en ShortCondition() methoden geven altijd 0 terug.

De stemresultaten van de hoofdmodule worden ook gebruikt in de "stemmen" gemiddelde. In ons geval hebben we: hoofdmodule + 1 module van handelsignalen, dus we moeten dit feit in overweging nemen bij het instellen van de drempelwaarden. Vanwege dit feit moeten de ThresholdOpen en ThresholdClose ingesteld worden als 40=(0+80)/2 en 20=(0+40)/2.

De waarden van Signal_StopLevel en Signal_TakeLevel invoerparameters zijn ingesteld op 0, wat betekent dat het sluiten van de posities alleen zal gebeuren wanneer sluitvoorwaarden waar zijn.


2.4. Geschiedenis backtesting resultaten

Laten we de backtesting van de Expert Advisor beschouwen op historische gegevens (EURUSD H1, testperiode: 2010.01.01-2011.03.16, PeriodCCI=49, MA_period=11).

Bij de creatie van de Expert Advisor gebruikten we het vaste volume (Vast lot verhandelen, 0.1), de Trailing Stop algoritme wordt niet gebruikt (Trailing niet gebruikt).

Fig. 11. Testresultaten van de Expert Advisor, gebaseerd op Bullish Engulfing/Bearish Engulfing + CCI

Fig. 11. Testresultaten van de Expert Advisor, gebaseerd op Bullish Engulfing/Bearish Engulfing + CCI


De beste set van invoerparameters kan gevonden worden met behulp van de Strategietester van de MetaTrader 5 client terminal.

De code van de Expert Advisor, gemaakt door MQL5 Wizard is bijgevoegd in expert_abe_be_cci.mq5.


Lijst
Reactie 0