Home Systeemhandel Bericht

MQL5 Wizard: Handelssignalen met 3 Zwarte Kraaien/3 Witte Soldaten + CCI voor MetaTrader 5

Bijlage
286.zip (6.48 KB, Downloaden 4 keer)

Met de MQL5 Wizard kun je kant-en-klare Expert Advisors (EAs) creëren op basis van de Standaardbibliotheek die samen met de clientterminal wordt geleverd. Dit maakt het mogelijk om je handelsideeën snel te toetsen; alles wat je nodig hebt is het creëren van je eigen handelsignalenklasse. De structuur van deze klasse en een voorbeeld vind je in het artikel MQL5 Wizard: Hoe een module van Handelsignalen te maken.

Het 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. Hier richten we ons op omkeercandlestickpatronen, bevestigd door de Stochastische, 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 candlestickpatronen. Voor de bevestiging van handelsignalen die worden gegenereerd door candlestickpatronen, is het voldoende om de klasse, afgeleid van CCandlePattern, te schrijven en de nodige functies (bijvoorbeeld bevestiging door oscillatoren) daar toe te voegen.

Hier zullen we de signalen bekijken, gebaseerd op het omkeercandlestickpatroon "3 Zwarte Kraai/3 Witte Soldaten", bevestigd door de Commodity Channel Index indicator. De module van handelsignalen is gebaseerd op de CCandlePattern klasse, een eenvoudig voorbeeld van het gebruik ervan voor het creëren van handelsignalen met candlestickpatronen.


1. "3 Zwarte Kraai" en 3 "Witte Soldaten" omkeercandlestickpatronen

1.1. 3 Zwarte Kraai

Een bearish candlestickpatroon dat wordt gebruikt om de omkering van de huidige stijgende trend te voorspellen. Dit patroon bestaat uit drie opeenvolgende candlesticks met een lange body die lager sluit dan de vorige dag, waarbij elke sessie opent binnen de body van de vorige candle.

Fig. 1.

Fig. 1. "3 Zwarte Kraai" candlestick patroon

De herkenning van het "3 Zwarte Kraai" patroon is geïmplementeerd in de CheckPatternThreeBlackCrows methode van de CCandlePattern klasse:

//+------------------------------------------------------------------+
//| Controleert de vorming van het "3 Zwarte Kraai" candlestick patroon |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Zwarte Kraai 
   if((Open(3)-Close(3)>AvgBody(1)) && // (lange zwarte)
      (Open(2)-Close(2)>AvgBody(1)) &&
      (Open(1)-Close(1)>AvgBody(1)) &&
      (MidPoint(2)<MidPoint(3))     && // (lagere midpunten)
      (MidPoint(1)<MidPoint(2)))       
      return(true);
//---
   return(false);
  }

De CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) methode van de CCandlePattern klasse wordt gebruikt om de vorming van het "3 Zwarte Kraai" candlestick patroon te controleren.


1.2. 3 Witte Soldaten candlestick patroon

Een bullish candlestickpatroon dat wordt gebruikt om de omkering van de huidige dalende trend te voorspellen. Dit patroon bestaat uit drie opeenvolgende candlesticks met een lange body die hoger sluit dan de vorige dag, waarbij elke sessie opent binnen de body van de vorige candle.

Het patroon is geldig zolang de candle van dag twee opent in de bovenste helft van het bereik van dag één. Tegen het einde van dag twee moet deze dicht bij de hoogste prijs sluiten, waardoor er een zeer kleine of niet-bestaande bovenste schaduw ontstaat. Hetzelfde patroon wordt op dag drie herhaald.

Fig. 2.

Fig. 2. "3 Witte Soldaten" candlestick patroon

Hier is de methode voor de herkenning van het "3 Witte Soldaten" patroon:

//+------------------------------------------------------------------+
//| Controleert de vorming van het "3 Witte Soldaten" candlestick patroon |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeWhiteSoldiers()
  {
   //--- 3 Witte Soldaten
   if((Close(3)-Open(3)>AvgBody(1)) && // lange witte
      (Close(2)-Open(2)>AvgBody(1)) &&
      (Close(1)-Open(1)>AvgBody(1)) &&
      (MidPoint(2)>MidPoint(3))     && // hogere midpunten
      (MidPoint(1)>MidPoint(2)))
      return(true);
//---
   return(false);
  }

De CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) methode van de CCandlePattern klasse wordt gebruikt om de vorming van het "3 Witte Soldaten" candlestick patroon te controleren.


2. Handelsignalen, bevestigd door CCI indicator

De handelsignalen om een lange of korte positie te openen moeten worden bevestigd door de CCI indicator. De waarde van CCI moet groter/kleiner zijn dan de kritische 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 op 2 manieren gebeuren:

  1. als de CCI-lijn het tegenovergestelde kritische niveau heeft bereikt (80 voor een lange positie en -80 voor een korte positie)
  2. als het omgekeerde signaal niet wordt bevestigd (wanneer CCI de volgende niveaus bereikt: -80 voor lange positie en 80 voor korte positie)

Fig. 3.

Fig. 3. "3 Zwarte Kraai" patroon, bevestigd door CCI indicator


  • int CBC_WS_CCI::LongCondition() - controleert de voorwaarden om een lange positie te openen (geef 80 terug) en de sluiting van de korte positie (geef 40 terug);
  • int CBC_WS_CCI::ShortCondition() - controleert de voorwaarden om een korte positie te openen (geef 80 terug) en de sluiting van de lange positie (geef 40 terug).

2.1. Lange positie openen/Korte positie sluiten

  1. De vorming van het "3 Zwarte Kraai" patroon moet worden bevestigd 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 worden gesloten als de CCI indicator het kritische niveau -80 omhoog of het kritische niveau 80 omlaag heeft gekruist.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden voor toegang tot de markt                 |
//| 1) Toegang tot de markt (open lange positie, resultaat=80)                  |
//| 2) Verlaat de markt (sluit korte positie, resultaat=40)                 |
//+------------------------------------------------------------------+
int CBC_WS_CCI::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 lange positie te openen
//--- vorming van het 3 Witte Soldaten patroon en CCI<-50
   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (CCI(1)<-50))
     result=80;
//--- controle van de voorwaarden om de korte positie te sluiten
//--- signaallijn kruising van overbought/oversold niveaus (omlaag -80, omlaag -80)
   if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80)))
     result=40;
//--- retourneer resultaat
   return(result);
  }

2.2. Korte positie openen/Lange positie sluiten

  1. De vorming van het "3 Witte Soldaten" patroon moet worden bevestigd 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 worden gesloten als de CCI indicator het niveau -80 of 80 naar beneden heeft gekruist.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden voor toegang tot de markt                 |
//| 1) Toegang tot de markt (open korte positie, resultaat=80)                 |
//| 2) Verlaat de markt (sluit lange positie, resultaat=40)                  |
//+------------------------------------------------------------------+
int CBC_WS_CCI::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 een korte positie te openen
//--- vorming van het 3 Zwarte Kraai patroon en CCI>50
   if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (CCI(1)>50))
     result=80;
//--- controle van de voorwaarden om de lange positie te sluiten
//--- signaallijn kruising van overbought/oversold niveaus (omlaag -80, omlaag 80)
   if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
     result=40;
//--- retourneer resultaat
   return(result);
  }


2.3. Een Expert Advisor maken met behulp van MQL5 Wizard

De CBC_WS_CCI klasse is niet opgenomen in de Standaardbibliotheek klassen; om deze te gebruiken is het noodzakelijk om het acbc_ws_cci.mqh bestand te downloaden (zie bijlagen) en het op te slaan in de client_terminal_data older\MQL5\Include\Expert\Signal\MySignals. Hetzelfde moet worden gedaan met het candlepatterns.mqh bestand. Je kunt het gebruiken in de MQL5 Wizard na een herstart van de MetaEditor.

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

Fig. 4. Een Expert Advisor maken met behulp van MQL5 Wizard

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

Toevoegen van de "Signalen gebaseerd op 3 Zwarte Kraai/3 Witte Soldaten 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 elke trailing-eigenschap 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, gebruiken we "Handelen met vaste handelsvolume":

Fig. 10. Geldbeheer eigenschappen van de Expert Advisor

Fig. 10. Geldbeheer eigenschappen van de Expert Advisor

Door op de knop "Voltooien" te drukken, krijgen we de code van de gegenereerde Expert Advisor, gelegen in Expert_ABC_WS_CCI.mq5, deze wordt 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;     // 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 het hoofd signaal
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 te specificeren.

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 van deze module retourneren altijd 0.

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 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 gebeuren wanneer de sluitingsvoorwaarden waar zijn.


2.4. Geschiedenis backtesting resultaten

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

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

Fig. 11. Testresultaten van de Expert Advisor, gebaseerd op 3 Zwarte Kraai/3 Witte Soldaten + CCI

Fig. 11. Testresultaten van de Expert Advisor, gebaseerd op 3 Zwarte Kraai/3 Witte Soldaten + CCI


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

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


Gerelateerde berichten

Reactie (0)