Handel met MQL5 Wizard: Signalen op basis van Bullish en Bearish Engulfing + RSI

Mike 2011.03.10 19:55 24 0 0
Bijlage

Met de MQL5 Wizard kun je eenvoudig kant-en-klare Expert Advisors (EAs) creëren, gebaseerd op de Standaard bibliotheek die wordt geleverd met de client terminal. Dit biedt je de mogelijkheid om je handelsideeën snel te controleren; alles wat je hoeft te doen is je eigen klasse voor handelsignalen te maken. De structuur van deze klasse en een voorbeeld kunnen worden gevonden in het artikel MQL5 Wizard: Hoe maak je een module voor Handelsignalen.

Het basisidee is als volgt: de klasse voor 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 beste traders" (in het Russisch), waar verschillende handelsstrategieën worden besproken. Wij zullen ons richten op omkeer candlestick patronen, bevestigd door Stochastic, CCI, MFI en RSI oscillators.

De beste aanpak 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 de benodigde functies (bijvoorbeeld bevestiging door oscillators) daar toe te voegen.

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


1. "Bullish Engulfing" en "Bearish Engulfing"

1.1. Bullish Engulfing

Het "Bullish Engulfing" omkeer patroon vormt zich in een downtrend wanneer een kleine zwarte candlestick wordt gevolgd door een grote witte candlestick die de candlestick van de vorige dag volledig eclipsen. De schaduwen (tails) van de kleine candlestick zijn kort, waardoor de body van de grote candlestick de hele candlestick van de vorige dag bedekt.

Fig. 1. Bullish Engulfing candlestick patroon

Fig. 1. Bullish Engulfing candlestick patroon

De herkenning van het "Bullish Engulfing" patroon wordt 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 candlestick is bearish
      (Close(1)-Open(1)>AvgBody(1))  &&  // body van de bullish candlestick is hoger dan gemiddelde waarde van de body 
      (Close(1)>Open(2))             &&  // slotprijs van de bullish candlestick is hoger dan de openingsprijs van de bearish candlestick
      (MidOpenClose(2)<CloseAvg(2))  &&  // downtrend
      (Open(1)<Close(2)))                // openingsprijs van de bullish candlestick is lager dan slotprijs 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" omkeer patroon vormt zich in een uptrend wanneer een kleine witte candlestick wordt gevolgd door een grote zwarte candlestick die de candlestick van de vorige dag volledig eclipsen. De schaduwen (tails) van de kleine candlestick zijn kort, waardoor de body van de grote candlestick de hele candlestick van de vorige dag bedekt.

Fig. 2. Bearish Engulfing candlestick patroon

Fig. 2. Bearish Engulfing candlestick patroon

De herkenning van het "Bearish Engulfing" patroon wordt 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 candlestick is bullish
      (Open(1)-Close(1)>AvgBody(1)) &&  // body van de candlestick is hoger dan gemiddelde waarde van de body
      (Close(1)<Open(2))            &&  // slotprijs van de bearish candlestick is lager dan de openingsprijs van de bullish candlestick
      (MidOpenClose(2)>CloseAvg(2)) &&  // uptrend
      (Open(1)>Close(2)))               // Openingsprijs van de bearish candlestick is hoger dan slotprijs van de bullish candlestick
      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 RSI indicator

De handelsignalen om een long- of shortpositie te openen moeten worden bevestigd door de RSI indicator. De waarde van RSI moet lager/hoger zijn dan kritieke niveaus (40 voor longpositie en 60 voor shortpositie).

Het sluiten van een geopende positie hangt af van de waarden van RSI. Dit kan op 2 manieren gebeuren:

  1. als RSI het tegenovergestelde kritieke niveau heeft bereikt (70 voor longpositie en 30 voor shortpositie)
  2. als het omgekeerde signaal niet wordt bevestigd (wanneer RSI de volgende niveaus bereikt: 30 voor longpositie en 70 voor shortpositie)

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

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


  • int CBE_BE_RSI::LongCondition() - controleert voorwaarden om longpositie te openen (geeft 80 terug) en om shortpositie te sluiten (geeft 40 terug);
  • int CBE_BE_RSI::ShortCondition() - controleert voorwaarden om shortpositie te openen (geeft 80 terug) en om longpositie te sluiten (geeft 40 terug).

2.1. Open longpositie/Sluit shortpositie

  1. De vorming van het "Bullish Engulfing" patroon moet worden bevestigd door de RSI indicator: RSI(1)<40 (de waarde van de RSI van de laatste voltooide bar moet lager zijn dan 40).

  2. De shortpositie moet worden gesloten als de RSI indicator omhoog is gekruist over de kritieke niveaus 70 of 30.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor instap en uitstap uit de markt                 |
//| 1) Instap in de markt (open longpositie, resultaat=80)                  |
//| 2) Uitstap uit de markt (sluit shortpositie, resultaat=40)                 |
//+------------------------------------------------------------------+
int CBE_BE_RSI::LongCondition()
  {
   int result=0;
//--- idx kan worden gebruikt om de werkmodus van de Expert Advisor te bepalen
//--- idx=0 - in dit geval controleert EA handelsvoorwaarden bij elke tick
//--- idx=1 - in dit geval controleert EA handelsvoorwaarden alleen bij nieuws bars
   int idx   =StartIndex();
//--- controleren van voorwaarden om longpositie te openen
//--- vorming van Bullish Engulfing patroon en RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_ENGULFING) && (RSI(1)<40))
     result=80;
//--- controleren van voorwaarden om shortpositie te sluiten
//--- signaallijn kruis van overbought/oversold niveaus (omhoog 30, omhoog 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- teruggeven resultaat
   return(result);
  }

2.2. Open shortpositie/Sluit longpositie

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

  2. De longpositie moet worden gesloten als de RSI indicator naar beneden is gekruist over de kritieke niveaus 70 of 30.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor instap en uitstap uit de markt                 |
//| 1) Instap in de markt (open shortpositie, resultaat=80)                 |
//| 2) Uitstap uit de markt (sluit longpositie, resultaat=40)                  |
//+------------------------------------------------------------------+
int CBE_BE_RSI::ShortCondition()
  {
   int result=0;
//--- idx kan worden gebruikt om de werkmodus van de Expert Advisor te bepalen
//--- idx=0 - in dit geval controleert EA handelsvoorwaarden bij elke tick
//--- idx=1 - in dit geval controleert EA handelsvoorwaarden alleen bij nieuws bars
   int idx   =StartIndex();
//--- controleren van voorwaarden om shortpositie te openen
//--- vorming van Bearish Engulfing patroon en RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_ENGULFING) && (RSI(1)>60))
     result=80;
//--- controleren van voorwaarden om longpositie te sluiten
//--- signaallijn kruis van overbought/oversold niveaus (omlaag 70, omhoog 30)
   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- teruggeven resultaat
   return(result);
  }


2.3. Een Expert Advisor maken met MQL5 Wizard

De CBE_BE_RSI klasse is niet opgenomen in de Standaard Bibliotheek klassen. Om deze te gebruiken, moet je het acml_rsi.mqh bestand downloaden (zie bijlagen) en opslaan in de client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Hetzelfde moet worden gedaan met het acandlepatterns.mqh bestand. Je kunt het gebruiken in MQL5 Wizard na het opnieuw opstarten van de MetaEditor.

Om een Expert Advisor te maken, start 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 specifieker maken:

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. Signalen eigenschappen van de Expert Advisor

Fig. 6. Signalen eigenschappen van de Expert Advisor

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

We voegen de module "Signalen gebaseerd op Bullish Engulfing/Bearish Engulfing bevestigd door RSI" van handelsignalen toe:

Fig. 7. Signalen eigenschappen van de Expert Advisor

Fig. 7. Signalen eigenschappen van de Expert Advisor

Module van handelsignalen toegevoegd:

Fig. 8. Signalen eigenschappen van de Expert Advisor

Fig. 8. Signalen eigenschappen van de Expert Advisor

Je kunt elke trailing eigenschappen selecteren, maar wij 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 money management eigenschappen, zullen we "Handelen met vaste handelsomvang" gebruiken:

Fig. 10. Money management eigenschappen van de Expert Advisor

Fig. 10. Money management 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_RSI.mq5, en deze zal worden opgeslagen in terminal_data_folder\MQL5\Experts\.

De standaard invoerparameters van de gegenereerde Expert Advisor:

//--- invoerparameters voor 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:

//--- invoerparameters voor 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 je in staat om drempelniveaus voor het openen en sluiten van posities in te stellen.

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 hoofmodule (als container, die bestaat uit alle toegevoegde modules) wordt ook gebruikt, maar zijn LongCondition() en ShortCondition() methoden geven altijd 0 terug.

De stemresultaten van de hoofmodule worden ook gebruikt in de "stemmen"-gemiddelding. In ons geval hebben we: hoofmodule + 1 module van handelsignalen, dus we moeten deze factor in overweging nemen 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 plaatsvinden wanneer de sluitvoorwaarden waar zijn.


2.4. Geschiedenis backtesting resultaten

Laten we de backtesting van de Expert Advisor bekijken op historische gegevens (EURUSD H1, testperiode: 2010.01.01-2011.03.04, PeriodRSI=11, MA_period=5).

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

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

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


De beste set 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_rsi.mq5.


Lijst
Reactie 0