Home Systeemhandel Bericht

Ontdek de Kracht van MQL5 Wizard: Handelsignalen met 3 Zwarte Kraai/3 Witte Soldaten + MFI

Bijlage
287.zip (6.5 KB, Downloaden 2 keer)

De MQL5 Wizard stelt je in staat om kant-en-klare Expert Advisors te maken op basis van de standaard bibliotheek klassen die samen met de client terminal worden geleverd. Dit maakt het mogelijk om je handelsideeën snel te toetsen; alles wat je hoeft te doen is je eigen handelsignalenklasse aan 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 basisidee is als volgt: de handelsignalenklasse 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), waarin veel handelsstrategieën worden besproken. We 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 de bevestiging van handelsignalen, gegenereerd door candlestick patronen, is het voldoende om de klasse, afgeleid van CCandlePattern, te schrijven en de nodige functies (bijvoorbeeld bevestiging door oscillators) daar toe te voegen.

Hier bekijken we de signalen gebaseerd op het "3 Zwarte Kraai/3 Witte Soldaat" omkeer candlestick patroon, bevestigd door de Market Facilitation Index (MFI) 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 candlestick patronen.


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

1.1. 3 Zwarte Kraai

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

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 candlestick patroon dat wordt gebruikt om de omkering van de huidige neerwaartse trend te voorspellen. Dit patroon bestaat uit drie opeenvolgende candlesticks met lange lichamen die hoger zijn gesloten dan de vorige dag, waarbij elke sessie opent 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. Aan het einde van dag twee moet het dicht bij zijn hoogtepunt sluiten, waarbij een zeer kleine of niet-bestaande bovenste schaduw achterblijft. Hetzelfde patroon wordt vervolgens herhaald op dag drie.

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 MFI indicator

De handelsignalen om een lange of korte positie te openen moeten worden bevestigd door de MFI indicator. De waarde van de MFI indicator moet lager zijn dan 40 (voor lange posities) of groter dan 60 (voor korte posities).

Het sluiten van een geopende positie hangt af van de waarden van de MFI indicator. Dit kan in 2 gevallen gebeuren:

  1. als de MFI het tegenovergestelde kritieke niveau heeft bereikt (70 voor lange positie en 30 voor korte positie)
  2. als het omgekeerde signaal niet wordt bevestigd (wanneer de MFI indicator de volgende niveaus bereikt: 30 voor lange positie en 70 voor korte positie)

Fig. 3.

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


  • int CBC_WS_MFI::LongCondition() - controleert de voorwaarden om een lange positie te openen (geeft 80 terug) en sluit de korte positie (geeft 40 terug);
  • int CBC_WS_MFI::ShortCondition() - controleert de voorwaarden om een korte positie te openen (geeft 80 terug) en sluit de lange positie (geeft 40 terug).

2.1. Lange positie openen/Korte positie sluiten

  1. De vorming van het "3 Witte Soldaten" patroon moet worden bevestigd door de MFI indicator: MFi(1)<40 (de waarde van de MFI indicator van de laatste voltooide bar moet minder zijn dan 40).

  2. De korte positie moet worden gesloten als de MFI indicator de kritieke niveaus (70 of 30) omhoog heeft gekruist.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor toegang en uitgang van de markt                 |
//| 1) Markttoegang (open lange positie, resultaat=80)                  |
//| 2) Marktsluiting (sluit korte positie, resultaat=40)                 |
//+------------------------------------------------------------------+
int CBC_WS_MFI::LongCondition()
  {
   int result=0;
//--- idx kan worden gebruikt om de werkmodus van de Expert Advisor te bepalen
//--- idx=0 - in dit geval controleert EA de handelsvoorwaarden bij elke tick
//--- idx=1 - in dit geval controleert EA de handelsvoorwaarden alleen bij nieuwsbarre
  int idx   =StartIndex();
//--- controleren van voorwaarden om een lange positie te openen
//--- vorming van 3 Witte Soldaten patroon en MFI<40
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_WHITE_SOLDIERS) && (MFI(1)<40))
     result=80;
//--- controleren van voorwaarden om de korte positie te sluiten
//--- signaallijn kruising van overgekochte/ondergekochte niveaus (omhoog 30, omhoog 70)
  if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70)))
     result=40;
//--- resultaat retourneren
   return(result);
  }


2.2. Korte positie openen/Lange positie sluiten

  1. De vorming van het "3 Zwarte Kraai" patroon moet worden bevestigd door de MFI indicator: MFI(1)>60 (de waarde van de MFI indicator van de laatste voltooide bar moet groter zijn dan 60).

  2. De lange positie moet worden gesloten als de MFI indicator de kritieke niveaus (70 of 30) omhoog heeft gekruist.

//+------------------------------------------------------------------+
//| Controleert voorwaarden voor toegang en uitgang van de markt                 |
//| 1) Markttoegang (open korte positie, resultaat=80)                 |
//| 2) Marktsluiting (sluit lange positie, resultaat=40)                  |
//+------------------------------------------------------------------+
int CBC_WS_MFI::ShortCondition()
  {
   int result=0;
//--- idx kan worden gebruikt om de werkmodus van de Expert Advisor te bepalen
//--- idx=0 - in dit geval controleert EA de handelsvoorwaarden bij elke tick
//--- idx=1 - in dit geval controleert EA de handelsvoorwaarden alleen bij nieuwsbarre
  int idx   =StartIndex();
//--- controleren van voorwaarden om een korte positie te openen
//--- vorming van 3 Zwarte Kraai patroon en MFI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_THREE_BLACK_CROWS) && (MFI(1)>60))
     result=80;
//--- controleren van voorwaarden om de lange positie te sluiten
//--- signaallijn kruising van overgekochte/ondergekochte niveaus (omhoog 70, omlaag 30)
   if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30)))
     result=40;
//--- resultaat retourneren
   return(result);
  }


2.3. Een Expert Advisor maken met MQL5 Wizard

De CBC_WS_MFI klasse is niet opgenomen in de standaard bibliotheek klassen. Om deze te gebruiken, moet je het abc_ws_mfi.mqh bestand downloaden (zie bijlagen) en opslaan in de client_terminal_data older\MQL5\Include\Expert\Signal\MySignals. Dit moet ook gedaan worden met het acandlepatterns.mqh bestand. Je kunt het gebruiken in MQL5 Wizard na het herstarten van de MetaEditor.

Om een Expert Advisor te maken, start je 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 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. Signalen eigenschappen van de Expert Advisor

Fig. 6. Signalen 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 MFI" module van handelsignalen:

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 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, we zullen "Handelen met vaste handelsvolume" gebruiken:

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

De standaard invoerparameters van de gegenereerde Expert Advisor:

//--- invoer voor het 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 het 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 vaste waarden voor de drempel opgegeven:

  • 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 zijn LongCondition() en ShortCondition() methoden geven altijd 0 terug.

De stemresultaten van de hoofdmodule worden ook gebruikt bij het "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 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.16, PeriodMFI=37, MA_period=13).

Bij het maken 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 3 Zwarte Kraai/3 Witte Soldaten + MFI

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


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

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


Gerelateerde berichten

Reactie (0)