Home Systeemhandel Bericht

MQL5 Wizard: Handelsignalen op basis van 3 Zwarte Kraaiën/3 Witte Soldaten + Stochastic

Bijlage
283.zip (6.6 KB, Downloaden 0 keer)

Met de MQL5 Wizard kun je kant-en-klare Expert Advisors (EA's) creëren, gebaseerd op de standaard bibliotheek die wordt meegeleverd met de clientterminal (zie Kant-en-klare Expert Advisors aanmaken in MQL5 Wizard voor meer details). Het stelt je in staat om je handelsideeën snel te controleren; alles wat je nodig hebt is om je eigen handelsignalenklasse te creëren. De structuur van deze klasse en een voorbeeld zijn te vinden in het artikel MQL5 Wizard: Hoe een module voor Handelsignalen te creëren.

Het algemene idee 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 de beste traders" (in het Russisch), waarin veel handelsstrategieën worden besproken. Hier zullen we ons richten op de omkeer candlestick patronen, bevestigd door de Stochastic, 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 candlestick patronen. Voor bevestiging van handelsignalen, gegenereerd door candlestick patronen, is het voldoende om de klasse, afgeleid van CCandlePattern, te schrijven en daar de nodige functies toe te voegen (bijvoorbeeld bevestiging door oscillatoren).

Hier zullen we de signalen bespreken, gebaseerd op het omkeer candlestick patroon "3 Zwarte Kraaiën/3 Witte Soldaten", bevestigd door de Stochastic indicator. De module voor handelsignalen is gebaseerd op de CCandlePattern klasse; dit is een simpel voorbeeld van het gebruik ervan voor het creëren van handelsignalen met candlestick patronen.


1. "3 Zwarte Kraaiën" en "3 Witte Soldaten" omkeer candlestick patronen

1.1. 3 Zwarte Kraaiën

Een bearish candlestick patroon dat wordt gebruikt om de omkering van de huidige uptrend te voorspellen. Dit patroon bestaat uit drie opeenvolgende lange candlesticks die lager zijn gesloten dan de vorige dag, waarbij elke sessie open gaat binnen het lichaam van de vorige kaars.

Figuur 1.

Figuur 1. "3 Zwarte Kraaiën" candlestick patroon

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

//+------------------------------------------------------------------+
//| Controleert de vorming van het "3 Zwarte Kraaiën" candlestick patroon          |
//+------------------------------------------------------------------+
bool CCandlePattern::CheckPatternThreeBlackCrows()
  {
//--- 3 Zwarte Kraaiën 
   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ën" candlestick patroon te controleren.


1.2. 3 Witte Soldaten candlestick patroon

Een bullish candlestick patroon dat wordt gebruikt om de omkering van de huidige downtrend te voorspellen. Dit patroon bestaat uit drie opeenvolgende lange candlesticks die hoger zijn gesloten dan de vorige dag, waarbij elke sessie open gaat binnen het lichaam van de vorige kaars.

Het patroon is geldig zolang de kaars van dag twee opent in de bovenste helft van het bereik van dag één. Tegen het einde van dag twee moet het dicht bij zijn hoogste punt sluiten, met een zeer kleine of niet-bestaande bovenste schaduw. Hetzelfde patroon herhaalt zich dan op dag drie.

Figuur 2.

Figuur 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 de Stochastic indicator

De handelsignalen voor het openen van een long- of shortpositie moeten worden bevestigd door de Stochastic oscillator. De %D lijn moet groter/kleiner zijn dan het bijbehorende kritieke niveau (30 of 70).

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

  1. als de %D lijn het tegenovergestelde kritieke 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)

Figuur 3.

Figuur 3. "3 Witte Soldaten" patroon, bevestigd door Stochastic indicator


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

  • int CBC_WS_Stoch::LongCondition() - controleert de voorwaarden om een longpositie te openen (retourneert 80) en sluit de shortpositie (retourneert 40);
  • int CBC_WS_Stoch::ShortCondition() - controleert de voorwaarden om een shortpositie te openen (retourneert 80) en sluit de longpositie (retourneert 40).

2.1. Open longpositie/sluit shortpositie

  1. De vorming van het "Drie Witte Soldaten" 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 shortpositie moet worden gesloten als de signaallijn van de Stochastic indicator omhoog is gekruist over de 20 of 80 niveaus.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor instap en uitstap uit de markt                 |
//| 1) Markttoegang (open longpositie, resultaat=80)                  |
//| 2) Marktuitgang (sluit shortpositie, resultaat=40)                   |
//+------------------------------------------------------------------+
int CBC_WS_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 nieuwsbars
   int idx   =StartIndex();
//--- controle van de voorwaarden om een longpositie te openen
//--- vorming van het 3 Witte Soldaten patroon en signaallijn<30
  if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (StochSignal(1)<30))
     result=80;
//--- controle van de voorwaarden om shortpositie te sluiten
//--- signaallijn crossover van overbought/oversold niveaus (omlaag 20, omhoog 80)
   if((((StochSignal(1)>20) && (StochSignal(2)<20)) ||
       ((StochSignal(1)>80) && (StochSignal(2)<80))))
     result=40;
//--- retourneer resultaat
   return(result);
  }

2.2. Open shortpositie/sluit longpositie

  1. De vorming van het "Drie Zwarte Kraaiën" 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 longpositie moet worden gesloten als de signaallijn van de Stochastic indicator omlaag is gekruist over de 80 of 20 niveaus.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor instap en uitstap uit de markt                 |
//| 1) Markttoegang (open shortpositie, resultaat=80)                 |
//| 2) Marktuitgang (sluit longpositie, resultaat=40)                    |
//+------------------------------------------------------------------+
int CBC_WS_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 nieuwsbars
   int idx   =StartIndex();
//--- controle van de voorwaarden om shortpositie te openen
//--- vorming van het 3 Zwarte Kraaiën patroon en signaallijn>70
  if (CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (StochSignal(1)>70))
     result=80;
//--- controle van de voorwaarden om longpositie te sluiten
//--- signaallijn crossover van overbought/oversold niveaus (omlaag 80, omhoog 20)
   if((((StochSignal(1)<80) && (StochSignal(2)>80)) ||
       ((StochSignal(1)<20) && (StochSignal(2)>20))))
     result=40;
//--- retourneer resultaat
   return(result);
  }


2.3. Een Expert Advisor maken met de MQL5 Wizard

De CBC_WS_Stoch klasse is niet opgenomen in de klassen van de Standaard Bibliotheek. Om deze te gebruiken, is het nodig om het acbc_ws_stoch.mqh bestand te downloaden (zie bijlagen) en op te slaan in de client_terminal_data older\MQL5\Include\Expert\Signal\MySignals. Hetzelfde moet gedaan worden met het candlepatterns.mqh bestand. Je kunt het gebruiken in MQL5 Wizard na het opnieuw opstarten van de MetaEditor.

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

Figuur 4. Een Expert Advisor maken met de MQL5 Wizard

Figuur 4. Een Expert Advisor maken met de MQL5 Wizard

Laten we de naam van de Expert Advisor specificeren:

Figuur 5. Algemene eigenschappen van de Expert Advisor

Figuur 5. Algemene eigenschappen van de Expert Advisor

Daarna moeten we de modules van handelsignalen selecteren die worden gebruikt.

Figuur 6. Signaal eigenschappen van de Expert Advisor

Figuur 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ën/3 Witte Soldaten bevestigd door Stochastic" module van handelsignalen:

Figuur 7. Signaal eigenschappen van de Expert Advisor

Figuur 7. Signaal eigenschappen van de Expert Advisor

Module van handelsignalen toegevoegd:

Figuur 8. Signaal eigenschappen van de Expert Advisor

Figuur 8. Signaal eigenschappen van de Expert Advisor

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

Figuur 9. Trailing eigenschappen van de Expert Advisor

Figuur 9. Trailing eigenschappen van de Expert Advisor

Wat betreft de money management eigenschappen, zullen we "Handelen met een vaste handelsomvang" gebruiken:

Figuur 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, die zich bevindt in Expert_ABC_WS_Stoch.mq5, deze wordt opgeslagen in terminal_data_folder\MQL5\Experts\.

De standaard invoerparameters van de gegenereerde Expert Advisor:

//--- invoer voor hoofdsignaal
input int            Signal_ThresholdOpen   =10;     // Signaal drempelwaarde om te openen [0...100]
input int            Signal_ThresholdClose  =10;     // Signaal 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 hoofdsignaal
input int            Signal_ThresholdOpen   =40;     // Signaal drempelwaarde om te openen [0...100]
input int            Signal_ThresholdClose  =20;     // Signaal 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 in te stellen.

In de code van de LongCondition() en ShortCondition() methoden van de handelsignalenklasse hebben we de vaste waarden voor de drempel gespecificeerd:

  • 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 in de "stemmen" gemiddelde. In ons geval hebben we: hoofdmodule + 1 module van handelsignalen, dus we moeten deze factor in overweging nemen bij het instellen van de drempelwaarden. Om deze reden 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 sluitvoorwaarden waar zijn.


2.4. Resultaten van backtesting in de geschiedenis

Laten we de backtesting van de Expert Advisor op historische gegevens bekijken (EURUSD H1, testperiode: 2010.01.01-2011.02.02, PeriodK=47, PeriodD=9, PeriodSlow=13, MA_period=5).

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


Figuur 11. Testresultaten van de Expert Advisor, gebaseerd op 3 Zwarte Kraaiën/3 Witte Soldaten + Stochastic

Figuur 11. Testresultaten van de Expert Advisor, gebaseerd op 3 Zwarte Kraaiën/3 Witte Soldaten + Stochastic


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

De code van de Expert Advisor, gecreëerd door de MQL5 Wizard, is bijgevoegd in expert_abc_ws_stoch.mq5.


Gerelateerde berichten

Reactie (0)