MQL5 Wizard: Creëer Handelsstrategieën met Bullish en Bearish Engulfing Candlestick Patronen en Stochastic

Mike 2011.03.10 19:54 145 0 0
Bijlage

De MQL5 Wizard maakt het mogelijk om kant-en-klare Expert Advisors (EAs) te creëren op basis van de standaard bibliotheek klassen die samen met de client terminal worden geleverd. Dit stelt je in staat om je handelsideeën snel te controleren; alles wat je nodig hebt, is om je eigen handelsignalenklasse te maken. De structuur van deze klasse en een voorbeeld zijn te vinden in het artikel MQL5 Wizard: Hoe een Module van Handelsignalen te Creëren.

Het algemene idee is als volgt: de klasse van handelsignalen is afgeleid van CExpertSignal. Vervolgens is het noodzakelijk 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), waar verschillende handelsstrategieën worden besproken. Wij zullen ons focussen op omkeercandlestickpatronen, bevestigd door de Stochastic, CCI, MFI en RSI oscillators.

De beste manier is om een aparte klasse te maken, afgeleid van CExpertSignal voor de controle 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 de nodige functies (bijvoorbeeld bevestiging door oscillators) daar toe te voegen.

Hier zullen we de signalen overwegen die zijn gebaseerd op het "Bullish Engulfing/Bearish Engulfing" omkeercandlestick patroon, bevestigd door de Stochastic indicator. De module van handelsignalen is gebaseerd op de CCandlePattern klasse; dit is een eenvoudig voorbeeld van het gebruik ervan voor het creëren van handelsignalen met candlestick patronen.


1. "Bullish Engulfing" en "Bearish Engulfing" omkeercandlestick patronen

1.1. Bullish Engulfing

Het "Bullish Engulfing" omkeerpunt wordt gevormd in een neerwaartse trend wanneer een kleine zwarte candlestick wordt gevolgd door een grote witte candlestick die volledig de candlestick van de vorige dag omhult. 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 "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 het gemiddelde van de body
      (Close(1)>Open(2))             &&  // sluitprijs van de bullish candle is hoger dan openingsprijs van de bearish candle
      (MidOpenClose(2)<CloseAvg(2))  &&  // neerwaartse trend
      (Open(1)<Close(2)))                // openingsprijs van de bullish candle is lager dan sluitprijs 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" omkeerpunt wordt gevormd in een opwaartse trend wanneer een kleine witte candlestick wordt gevolgd door een grote zwarte candlestick die volledig de candlestick van de vorige dag omhult. 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 "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 het gemiddelde van de body
      (Close(1)<Open(2))            &&  // sluitprijs van de bearish candle is lager dan openingsprijs van de bullish candle
      (MidOpenClose(2)>CloseAvg(2)) &&  // opwaartse trend
      (Open(1)>Close(2)))                // openprijs van de bearish candle is hoger dan sluitprijs 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 Stochastic indicator

De handelsignalen voor het openen van een long of short positie moeten worden bevestigd door de Stochastic oscillator. De %D lijn moet groter of kleiner zijn dan het overeenkomstige kritische niveau (30 of 70).

De sluiting van een geopende positie hangt af van de waarden van de %D indicator. Dit kan op twee manieren gebeuren:

  1. Als de %D lijn het tegenovergestelde kritische niveau heeft bereikt (80 voor long positie en 20 voor short positie)
  2. Als het omgekeerde signaal niet wordt bevestigd (wanneer de %D lijn de volgende niveaus bereikt: 20 voor long positie en 80 voor short positie)

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

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


Het controleren van de handelsvoorwaarden voor instap en uitstap wordt geïmplementeerd in twee methoden:

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

2.1. Open long positie/Sluit short positie

  1. De vorming van het "Bullish Engulfing" patroon moet worden bevestigd door de Stochastic indicator: StochSignal(1)<30 (de waarde van de signaallijn van de Stochastic indicator van de laatste voltooide bar moet minder zijn dan 30).

  2. De short positie moet worden gesloten als de signaallijn van de Stochastic indicator boven de 20 of 80 niveaus is gekruist.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden voor instap en uitstap uit de markt |
//| 1) Markt instap (open long positie, resultaat=80) |
//| 2) Markt uitstap (sluit short positie, resultaat=40) |
//+------------------------------------------------------------------+
int CBE_BE_Stoch::LongCondition()
  {
   int result=0;
//--- idx kan worden gebruikt 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 nieuwsbar
  int idx   =StartIndex();
//--- controle van de voorwaarden om een long positie te openen
//--- vorming van Bullish Engulfing patroon en signaallijn<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (StochSignal(1)<30))
     result=80;
//--- controle van de voorwaarden om short positie te sluiten
//--- signaallijn kruis van overbought/oversold niveaus (omlaag 20, omhoog 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- teruggeven resultaat
   return(result);
  }

2.2. Open short positie/Sluit long positie

  1. De vorming van het "Bearish Engulfing" patroon moet worden bevestigd door de Stochastic indicator: StochSignal(1)>70 (de waarde van de signaallijn van de Stochastic indicator van de laatste voltooide bar moet groter zijn dan 70).

  2. De long positie moet worden gesloten als de signaallijn van de Stochastic indicator onder de 80 of 20 niveaus is gekruist.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden voor instap en uitstap uit de markt |
//| 1) Markt instap (open short positie, resultaat=80) |
//| 2) Markt uitstap (sluit long positie, resultaat=40) |
//+------------------------------------------------------------------+
int CBE_BE_Stoch::ShortCondition()
  {
   int result=0;
//--- idx kan worden gebruikt 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 nieuwsbar
  int idx   =StartIndex();
//--- controle van de voorwaarden om short positie te openen
//--- vorming van Bearish Engulfing patroon en signaallijn>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (StochSignal(1)>70))
     result=80;
//--- controle van de voorwaarden om long positie te sluiten
//--- signaallijn kruis van overbought/oversold niveaus (omlaag 80, omhoog 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- teruggeven resultaat
   return(result);
  }


2.3. Creëren van een Expert Advisor met behulp van MQL5 Wizard

De CBE_BE_Stoch klasse is niet opgenomen in de standaard bibliotheek klassen. Om deze te gebruiken, is het nodig om het acbe_be_stoch.mqh bestand te downloaden (zie bijlagen) en op te slaan in de client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Hetzelfde geldt voor 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. Creëren van Expert Advisor met MQL5 Wizard

Fig. 4. Creëren van Expert Advisor 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 worden gebruikt.

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.

Toevoegen van de "Signalen gebaseerd op Bullish Engulfing/Bearish Engulfing bevestigd door Stochastic" 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 verschillende 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 handelsomvang" 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_Stoch.mq5, opgeslagen in terminal_data_folder\MQL5\Experts\.

De standaard invoerparameters van de gegenereerde Expert Advisor:

//--- invoer voor het hoofd signaal
input int            Signal_ThresholdOpen   =10;     // Drempelwaarde voor signaal om te openen [0...100]
input int            Signal_ThresholdClose  =10     // Drempelwaarde voor signaal 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 worden vervangen door:

//--- invoer voor het hoofd signaal
input int            Signal_ThresholdOpen   =40;     // Drempelwaarde voor signaal om te openen [0...100]
input int            Signal_ThresholdClose  =20     // Drempelwaarde voor signaal 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 voor het openen en sluiten van posities in.

In de code van de LongCondition() en ShortCondition() methoden van de handelsignalenklasse 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 de LongCondition() en ShortCondition() methoden geven altijd 0 terug.

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

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


2.4. Geschiedenis terugtestresultaten

Laten we de terugtest van de Expert Advisor op historische data (EURUSD H1, testperiode: 2010.01.01-2011.03.04, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5) overwegen.

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


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

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


De beste set van invoerparameters kan worden gevonden 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_stoch.mq5.

Lijst
Reactie 0