Home Systeemhandel Bericht

Gebruik de MQL5 Wizard voor Handelsignalen op Basis van Candlestick Patronen en RSI

Bijlage
300.zip (6.5 KB, Downloaden 0 keer)

De MQL5 Wizard is een krachtige tool die je helpt om kant-en-klare Expert Advisors te maken op basis van de Standaard bibliotheek klassen die bij de client terminal worden geleverd. Dit stelt je in staat om je handelsideeën snel te testen. Het enige wat je hoeft te doen is je eigen handelsignalenklasse te creëren. De structuur van deze klasse en een voorbeeld zijn te vinden in het artikel MQL5 Wizard: Hoe Maak je een Module van Handelsignalen.

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

Er is een boek "Strategieën van de Beste Traders" (in het Russisch), waarin veel handelsstrategieën worden besproken. Wij zullen ons richten op omkerende 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 de bevestiging van handelsignalen, gegenereerd door candlestick patronen, is het voldoende om de klasse, afgeleid van CCandlePattern, te schrijven en de nodige functies toe te voegen (bijvoorbeeld bevestiging door oscillators).

Hier zullen we de signalen bekijken die zijn gebaseerd op het "Dark Cloud Cover/Piercing Line" omkerende candlestick patroon, bevestigd door de RSI indicator. De module van handelsignalen is gebaseerd op de CCandlePattern klasse, het is een eenvoudig voorbeeld van het gebruik voor het creëren van handelsignalen met candlestick patronen.


1. "Dark Cloud Cover" en "Piercing Line" omkerende candlestick patronen

1.1. Dark Cloud Cover

Dit is een bearish candlestick omkering die zich aan het einde van een opwaartse trend voordoet. Een lange witte candlestick wordt op de eerste dag gevormd en een gap omhoog wordt op de tweede dag gecreëerd. Echter, de tweede dag sluit onder het midden van de eerste dag.

Fig. 1. Dark Cloud Cover candlestick patroon

Figuur 1. Dark Cloud Cover candlestick patroon

De herkenning van het "Dark Cloud Cover" patroon is geïmplementeerd in de CheckPatternDarkCloudCover() methode van de CCandlePattern klasse:

//+------------------------------------------------------------------+
//| Controleert de vorming van "Dark Cloud Cover" candlestick patroon |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternDarkCloudCover()
  {
//--- Dark Cloud Cover 
   if((Close(2)-Open(2)>AvgBody(1))  && // (lange witte)
      (Close(1)<Close(2))            && // 
      (Close(1)>Open(2))             && // (sluit binnen vorige body)
      (MidOpenClose(2)>CloseAvg(1))  && // (opwaartse trend)
      (Open(1)>High(2)))                // (open op nieuwe high)
      return(true);
//---
   return(false);
  }

De CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) methode van de CCandlePattern klasse wordt gebruikt om de vorming van het "Dark Cloud Cover" candlestick patroon te controleren.


1.2. Piercing Line

De gap naar beneden op de tweede dag versterkt de neerwaartse trend. Echter, de sluiting van de tweede dag is boven het midden van de body van de eerste dag. Dit suggereert aan de beren dat er een bodem kan ontstaan. Deze prijsactie is niet zo gemakkelijk te zien met staafdiagrammen als met candlestick diagrammen. Hoe dieper de sluiting van de tweede dag in de body van de eerste dag, hoe waarschijnlijker het omkeersignaal zal slagen.

Fig. 2. Piercing Line candlestick patroon

Figuur 2. Piercing Line candlestick patroon

De herkenning van het "Piercing Line" patroon is geïmplementeerd in de CheckPatternPiercingLine() methode van de CCandlePattern klasse:

//+------------------------------------------------------------------+
//| Controleert de vorming van "Piercing Line" candlestick patroon |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternPiercingLine()
  {
//--- Piercing Line
   if((Close(1)-Open(1)>AvgBody(1)) && // (lange witte)
      (Open(2)-Close(2)>AvgBody(1)) && // (lange zwarte)
      (Close(1)>Close(2))           && //  
      (Close(1)<Open(2))            && // (sluit binnen vorige body) 
      (MidOpenClose(2)<CloseAvg(2)) && // (neerwaartse trend)
      (Open(1)<Low(2)))                // (open lager dan vorige Low) 
      return(true);
//---
   return(false);
  }

De CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) methode van de CCandlePattern klasse wordt gebruikt om de vorming van het "Piercing Line" candlestick patroon te controleren.


2. Handelsignalen, bevestigd door RSI indicator

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

Het sluiten van geopende posities hangt af van de waarden van de RSI. Dit kan op twee manieren gebeuren:

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

Fig. 3. Dark Cloud Cover patroon, bevestigd door RSI indicator

Figuur 3. Dark Cloud Cover patroon, bevestigd door RSI indicator


  • int CDC_PL_RSI::LongCondition() - controleert de voorwaarden voor het openen van een lange positie (retourneert 80) en het sluiten van de korte positie (retourneert 40);
  • int CDC_PL_RSI::ShortCondition() - controleert de voorwaarden voor het openen van een korte positie (retourneert 80) en het sluiten van de lange positie (retourneert 40).

2.1. Open lange positie/Sluit korte positie

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

  2. De korte positie moet gesloten worden als de RSI indicator de kritieke niveaus 70 of 30 naar boven heeft gekruist.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden voor toegang en uitgang van de markt |
//| 1) Markttoegang (open lange positie, resultaat=80) |
//| 2) Marktafgang (sluit korte positie, resultaat=40) |
//+------------------------------------------------------------------+
int CDC_PL_RSI::LongCondition()
  {
   int result=0;
   //--- idx kan gebruikt worden om de werkwijze 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 bars
   int idx   =StartIndex();
   //--- controle van voorwaarden om een lange positie te openen
   //--- vorming van Piercing Line patroon en RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_PIERCING_LINE) && (RSI(1)<40))
     result=80;
   //--- controle van voorwaarden om de korte positie te sluiten
   //--- signaallijn crossover 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 korte positie/Sluit lange positie

  1. De vorming van het "Dark Cloud Cover" patroon moet bevestigd worden 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 lange positie moet gesloten worden als de RSI indicator de kritieke niveaus 70 of 30 naar beneden heeft gekruist.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden voor toegang en uitgang van de markt |
//| 1) Markttoegang (open korte positie, resultaat=80) |
//| 2) Marktafgang (sluit lange positie, resultaat=40) |
//+------------------------------------------------------------------+
int CDC_PL_RSI::ShortCondition()
  {
   int result=0;
   //--- idx kan gebruikt worden om de werkwijze 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 bars
   int idx   =StartIndex();
   //--- controle van voorwaarden om een korte positie te openen
   //--- vorming van Dark Cloud Cover patroon en RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_DARK_CLOUD_COVER) && (RSI(1)>60))
     result=80;
   //--- controle van voorwaarden om de lange positie te sluiten
   //--- signaallijn crossover 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. Het creëren van een Expert Advisor met behulp van de MQL5 Wizard

De CDC_PL_RSI klasse is niet opgenomen in de standaard bibliotheek klassen. Om deze te gebruiken, is het noodzakelijk om het adc_pl_rsi.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 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. Het creëren van een Expert Advisor met de MQL5 Wizard

Figuur 4. Het creëren van een Expert Advisor met de MQL5 Wizard

Laten we de naam van de Expert Advisor specificeren:

Fig. 5. Algemene eigenschappen van de Expert Advisor

Figuur 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

Figuur 6. Signaal eigenschappen van de Expert Advisor

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

Voeg de "Signalen op basis van Dark Cloud Cover/Piercing Line bevestigd door RSI" module van handelsignalen toe:

Fig. 7. Signaal eigenschappen van de Expert Advisor

Figuur 7. Signaal eigenschappen van de Expert Advisor

Module van handelsignalen toegevoegd:

Fig. 8. Signaal eigenschappen van de Expert Advisor

Figuur 8. Signaal eigenschappen van de Expert Advisor

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

Fig. 9. Money management eigenschappen van de Expert Advisor

Figuur 9. Money management eigenschappen van de Expert Advisor

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

Fig. 10. Money management eigenschappen van de Expert Advisor

Figuur 10. Money management eigenschappen van de Expert Advisor

Door op de knop "Voltooien" te drukken, krijgen we de code van de gegenereerde Expert Advisor, gelegen in Expert_ADC_PL_RSI.mq5, dit wordt opgeslagen in terminal_data_folder\MQL5\Experts\.

De standaard invoerparameters van de gegenereerde Expert Advisor:

//--- invoer voor hoofdsignaal
input int            Signal_ThresholdOpen   =10;     // Signaaldrempelwaarde om te openen [0...100]
input int            Signal_ThresholdClose  =10;     // Signaaldrempelwaarde 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 hoofdsignaal
input int            Signal_ThresholdOpen   =40;     // Signaaldrempelwaarde om te openen [0...100]
input int            Signal_ThresholdClose  =20;     // Signaaldrempelwaarde 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 handelsignalenklasse hebben we de vaste waarden van de drempel gedefinieerd:

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

De Expert Advisor, gegenereerd door de 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 retourneren altijd 0.

De stemresultaten van de hoofdmodule worden ook gebruikt bij het "stemmen" gemiddeld. 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 ingesteld worden 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 op historische gegevens bekijken (EURUSD H1, testperiode: 2010.01.01-2011.02.23, PeriodRSI=20, MA_period=14).

Bij het creëren van de Expert Advisor gebruikten we een vast volume (Vast Lot Handelen, 0.1), Trailing Stop algoritme wordt niet gebruikt (Trailing niet gebruikt).

Fig. 11. Testresultaten van de Expert Advisor, gebaseerd op Dark Cloud Cover/Piercing Line + RSI

Figuur 11. Testresultaten van de Expert Advisor, gebaseerd op Dark Cloud Cover/Piercing Line + RSI


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 de MQL5 Wizard is bijgevoegd in expert_ad_pl_rsi.mq5.


Gerelateerde berichten

Reactie (0)