Handige MQL5 Wizard: Handelsignalen op Basis van Bullish en Bearish Harami + RSI

Mike 2011.03.17 19:46 18 0 0
Bijlage

De MQL5 Wizard biedt een geweldige manier om kant-en-klare Expert Advisors te maken op basis van de Standaard bibliotheek klassen die samen met de client terminal worden geleverd. Hiermee kun je snel je handelsideeën controleren; het enige wat je hoeft te doen is je eigen klasse voor handelsignalen te maken. De structuur van deze klasse en een voorbeeld zijn te vinden in het artikel MQL5 Wizard: Hoe Maak Je Een Module voor Handelsignalen.

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

In het boek "Strategieën van Beste Traders" (in het Russisch) worden veel handelsstrategieën besproken. Wij richten ons op omkeer candlestick patronen, bevestigd door Stochastic, CCI, MFI en RSI oscillators.

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

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


1. Bullish Harami en Bearish Harami Omkeer Candlestick Patronen

1.1. Bullish Harami

De Bullish Harami omkeer patroon vormt zich in een dalende trend wanneer een grote candlestick gevolgd wordt door een kleinere candlestick waarvan het lichaam zich binnen het verticale bereik van het grotere lichaam bevindt. Dit patroon geeft aan dat de dalende trend (downtrend) mogelijk aan het omkeren is, en het signaleert dat het een goed moment is om een long positie in te nemen. De tweede candlestick opent met een gap omhoog.

Hoe kleiner de tweede (witte) candlestick, hoe waarschijnlijker de omkering.

Fig. 1. Bullish Harami Candlestick Patroon

Fig. 1. Bullish Harami Candlestick Patroon

De herkenning van het "Bullish Harami" patroon wordt geïmplementeerd in de CheckPatternBullishHarami() methode van de CCandlePattern klasse:

//+------------------------------------------------------------------+
//| Controleert de vorming van het "Bullish Harami" candlestick patroon |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishHarami()
  {
//--- Bullish Harami
   if((Close(1)>Open(1))              && // de laatste voltooide bar is bullish (witte dag)
     ((Open(2)-Close(2)>AvgBody(1))  && // de vorige candle is bearish, zijn lichaam is groter dan gemiddeld (lange zwarte)
     ((Close(1)<Open(2))              && // sluitprijs van de bullish candle is lager dan openingsprijs van de bearish candle 
      (Open(1)>Close(2)))             && // openingsprijs van de bullish candle is hoger dan sluitprijs van de bearish candle
      (MidPoint(2)<CloseAvg(2)))         // dalende trend
      return(true);
//---
   return(false);
  }

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


1.2. Bearish Harami

Het Bearish Harami omkeer patroon vormt zich in een stijgende trend wanneer een grote candlestick gevolgd wordt door een kleinere candlestick waarvan het lichaam zich binnen het verticale bereik van het grotere lichaam bevindt. Dit patroon geeft aan dat de stijgende trend (uptrend) mogelijk aan het omkeren is, en het signaleert dat het een goed moment is om een short positie in te nemen. De tweede candlestick opent met een gap naar beneden.

Hoe kleiner de tweede (zwarte) candlestick, hoe waarschijnlijker de omkering.

Fig. 2. Bearish Harami Candlestick Patroon

Fig. 2. Bearish Harami Candlestick Patroon

De herkenning van het "Bearish Harami" patroon wordt geïmplementeerd in de CheckPatternBearishHarami() methode van de CCandlePattern klasse:

//+------------------------------------------------------------------+
//| Controleert de vorming van het "Bearish Harami" candlestick patroon |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishHarami()
  {
//--- Bearish Harami
   if((Close(1)<Open(1))              && // laatste voltooide bar is bearish (zwarte dag)
     ((Close(2)-Open(2)>AvgBody(1))  && // de vorige candle is bullish, zijn lichaam is groter dan gemiddeld (lange witte)
     ((Close(1)>Open(2))              && // sluitprijs van de bearish candle is hoger dan openingsprijs van de bullish candle 
      (Open(1)<Close(2)))             && // openingsprijs van de bearish candle is lager dan sluitprijs van de bullish candle
      (MidPoint(2)>CloseAvg(2)))         // stijgende trend
      return(true);
//---
   return(false);
  }

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


2. Handelsignalen, Bevestigd door RSI Indicator

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

Het sluiten van geopende posities hangt af van de waarden van de RSI. Dit kan in 2 gevallen worden gedaan:

  • Als de RSI het tegenovergestelde kritieke niveau heeft bereikt (70 voor long positie en 30 voor short positie)
  • Als het omkeersignaal niet wordt bevestigd (wanneer de RSI de volgende niveaus bereikt: 30 voor long positie en 70 voor short positie)

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

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

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

2.1. Open Long Positie / Sluit Short Positie

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

  2. De short positie moet worden gesloten als de RSI indicator omhoog is gekruist boven de kritieke niveaus 70 of 30.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor toegang en exit van de markt |
//| 1) Markttoegang (open long positie, resultaat=80) |
//| 2) Markt exit (sluit short positie, resultaat=40) |
//+------------------------------------------------------------------+
int CBH_BH_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 long positie te openen
//--- vorming van Bullish Harami patroon en RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_HARAMI) && (RSI(1)<40))
     result=80;
//--- controleren van voorwaarden om short positie te sluiten
//--- signaallijn kruising van overbought/oversold niveaus (omhoog 30, omhoog 70)
  if(((RSI(1)>30) && (RSI(2)<30)) || ((RSI(1)>70) && (RSI(2)<70)))
     result=40;
//--- retourneer resultaat
   return(result);
  }

2.2. Open Short Positie / Sluit Long Positie

  1. De vorming van het "Bearish Harami" 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 long positie moet worden gesloten als de RSI indicator naar beneden is gekruist onder de kritieke niveaus 70 of 30.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor toegang en exit van de markt |
//| 1) Markttoegang (open short positie, resultaat=80) |
//| 2) Markt exit (sluit long positie, resultaat=40) |
//+------------------------------------------------------------------+
int CBH_BH_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 short positie te openen
//--- vorming van Bearish Harami patroon en RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_HARAMI) && (RSI(1)>60))
     result=80;
//--- controleren van voorwaarden om long positie te sluiten
//--- signaallijn kruising van overbought/oversold niveaus (omlaag 70, omlaag 30)
   if(((RSI(1)<70) && (RSI(2)>70)) || ((RSI(1)<30) && (RSI(2)>30)))
     result=40;
//--- retourneer resultaat
   return(result);
  }


2.3. Een Expert Advisor maken met de MQL5 Wizard

De CBH_BH_RSI klasse is niet opgenomen in de klassen van de Standaard Bibliotheek. Om deze te gebruiken, is het noodzakelijk om het acml_rsi.mqh bestand te downloaden (zie bijlagen) en op te slaan 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 de 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 de MQL5 Wizard

Fig. 4. Een Expert Advisor maken met de 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 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.

We voegen de module "Signalen op Basis van Bullish Harami/Bearish Harami Bevestigd door RSI" van de handelsignalen toe:

Fig. 7. Signaal eigenschappen van de Expert Advisor

Fig. 7. Signaal eigenschappen van de Expert Advisor

De module van handelsignalen is toegevoegd:

Fig. 8. Signaal eigenschappen van de Expert Advisor

Fig. 8. Signaal eigenschappen van de Expert Advisor

Je kunt verschillende 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 geldbeheer eigenschappen, zullen we "Handelen met een vast handelsvolume" gebruiken:

Fig. 10. Geldbeheer eigenschappen van de Expert Advisor

Fig. 10. Geldbeheer eigenschappen van de Expert Advisor

Door op de knop "Finish" te drukken, krijgen we de code van de gegenereerde Expert Advisor, die is opgeslagen in terminal_data_folder\MQL5\Experts\.

De standaard invoerparameters van de gegenereerde Expert Advisor:

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

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

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 op basis 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" gemiddelden. In ons geval hebben we: hoofdmodule + 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 als 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 Terugtestresultaten

Laten we de terugtest van de Expert Advisor op historische data bekijken (EURUSD H1, testperiode: 2010.01.01-2011.03.11, PeriodRSI=37, MA_period=7).

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

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

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


De beste set invoerparameters kan worden gevonden met de Strategie Tester van de MetaTrader 5 client terminal.

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


Lijst
Reactie 0