Gebruik de MQL5 Wizard voor Handelsignalen met Bullish/Bearish Meeting Lines en RSI

Mike 2011.03.24 20:39 17 0 0
Bijlage

De MQL5 Wizard stelt je in staat om kant-en-klare Expert Advisors (EA's) te maken op basis van de standaard bibliotheek die meegeleverd wordt met de client terminal. Hiermee kun je snel je handelsideeën testen, je hoeft alleen maar je eigen klasse voor handelsignalen te maken. De structuur van deze klasse en een voorbeeld vind je in het artikel MQL5 Wizard: Hoe maak je een module voor handelsignalen.

Het basisidee is als volgt: de klasse voor 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 genaamd "Strategieën van de beste traders" (in het Russisch), waarin verschillende handelsstrategieën worden besproken. We zullen ons richten op omkeer candlestick patronen, bevestigd door Stochastic, CCI, MFI en RSI oscillatoren.

De beste manier is om een aparte klasse te maken, 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 noodzakelijke functies (bijvoorbeeld, bevestiging door oscillatoren) daar toe te voegen.

Hier zullen we de signalen bekijken, gebaseerd op het "Bullish Meeting Lines" omkeer candlestick patroon, bevestigd door de RSI (Relative Strength Index) indicator. De module van handelsignalen is gebaseerd op de CCandlePattern klasse; het is een eenvoudig voorbeeld van het gebruik ervan voor het creëren van handelsignalen met candlestick patronen.

1. "Meeting Lines" omkeer candlestick patronen

1.1. Bullish Meeting Lines

Het patroon bestaat uit twee candlesticks (bearish en bullish) met gelijke (of zeer nabij) sluitprijzen. Het lichaam van de twee candlesticks moet groter zijn dan de gemiddelde lichaamsgrootte.

Het "Bullish Meeting Lines" patroon geeft de omkering van een neerwaartse trend aan.

Fig. 1. Bullish Meeting Lines patroon

Fig. 1. Bullish Meeting Lines patroon

De herkenning van het "Bullish Meeting Lines" patroon is geïmplementeerd in de CheckPatternBullishMeetingLines() methode van de CCandlePattern klasse:

//+--------------------------------------------------------------------+
//| Controleert de vorming van "Bullish Meeting Lines" candlestick patroon |
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBullishMeetingLines()
  {
//--- Bullish Meeting Lines
   if((Open(2)-Close(2)>AvgBody(1))
     && // lange zwarte
     ((Close(1)-Open(1))>AvgBody(1))
     && // lange witte
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))
     return(true);
//---
   return(false);
  }

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


1.2. Bearish Meeting Lines

Het patroon bestaat uit twee candlesticks (bullish en bearish) met gelijke (of zeer nabij) sluitprijzen. Het lichaam van de twee candlesticks moet groter zijn dan de gemiddelde lichaamsgrootte.

Het "Bearish Meeting Lines" patroon geeft de omkering van een opwaartse trend aan.

Fig. 2. Bearish Meeting Lines patroon

Fig. 2. Bearish Meeting Lines patroon

De herkenning van het "Bearish Meeting Lines" patroon is geïmplementeerd in de CheckPatternBearishMeetingLines() methode van de CCandlePattern klasse:

//+--------------------------------------------------------------------+
//| Controleert de vorming van "Bearish Meeting Lines" candlestick patroon |
//+--------------------------------------------------------------------+
bool CCandlePattern::CheckPatternBearishMeetingLines()
  {
//--- Bearish Meeting Lines
   if((Close(2)-Open(2)>AvgBody(1))
     && // lange witte
     ((Open(1)-Close(1))>AvgBody(1))
     && // lange zwarte
      (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1)))
     return(true);
//---
   return(false);
  }

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



2. Handelsignalen, bevestigd door de RSI indicator

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

De sluiting van een geopende positie hangt af van de waarden van de RSI. Dit kan op 2 manieren worden gedaan:

  • als de RSI het tegenovergestelde kritische niveau heeft bereikt (70 voor een lange positie en 30 voor een korte positie)
  • als het omgekeerde signaal niet wordt bevestigd (wanneer de RSI de volgende niveaus bereikt: 30 voor een lange positie en 70 voor een korte positie)

Fig. 3. Bearish Meeting Lines patroon, bevestigd door RSI indicator

Fig. 3. Bearish Meeting Lines patroon, bevestigd door RSI indicator


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

2.1. Lange positie openen/Korte positie sluiten

  1. De vorming van het "Bullish Meeting Lines" 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 kritische niveaus 70 of 30 omhoog heeft gekruist.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden voor toegang tot de markt                 |
//| 1) Toegang tot de markt (open lange positie, resultaat=80)                  |
//| 2) Marktuitgang (sluit korte positie, resultaat=40)                  |
//+------------------------------------------------------------------+
int CML_RSI::LongCondition()
  {
   int result=0;
//--- idx kan gebruikt worden 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 Bullish Meeting Lines patroon en RSI<30
  if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (RSI(1)<40))
     result=80;
//--- controle van de voorwaarden om een korte positie te sluiten
//--- signaallijn kruising van overgekochte/oververkochte 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. Korte positie openen/Lange positie sluiten

  1. De vorming van het "Bearish Meeting Lines" 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 kritische niveaus 70 of 30 omlaag heeft gekruist.

//+------------------------------------------------------------------+
//| Controleert de voorwaarden voor toegang tot de markt                 |
//| 1) Toegang tot de markt (open korte positie, resultaat=80)                 |
//| 2) Marktuitgang (sluit lange positie, resultaat=40)                  |
//+------------------------------------------------------------------+
int CML_RSI::ShortCondition()
  {
   int result=0;
//--- idx kan gebruikt worden 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 Bearish Meeting Lines patroon en RSI>60
  if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (RSI(1)>60))
     result=80;
//--- controle van de voorwaarden om een lange positie te sluiten
//--- signaallijn kruising van overgekochte/oververkochte 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 CML_RSI klasse is niet opgenomen in de standaardbibliotheekklassen. Om deze te gebruiken, moet je het acml_rsi.mqh bestand downloaden (zie bijlagen) en het opslaan 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 maken, 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 opgeven:

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 gebruikt worden.

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.

Voeg de module "Signalen op basis van Bullish/Bearish Meeting Lines bevestigd door RSI" toe:

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 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 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, deze wordt 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 voor openen [0...100]
input int            Signal_ThresholdClose  =10;     // Drempelwaarde voor 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 vervangen worden door:

//--- invoer voor hoofd signaal
input int            Signal_ThresholdOpen   =40;     // Drempelwaarde voor openen [0...100]
input int            Signal_ThresholdClose  =20;     // Drempelwaarde voor 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 de MQL5 Wizard, opent en sluit posities met behulp van de "stemmen" van de modules van handelsignalen. De stem van de hoofdmodule (als container, het bestaat uit alle toegevoegde modules) wordt ook gebruikt, maar de 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 rekening houden met dit feit 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 op historische gegevens overwegen (EURUSD H1, testperiode: 2000.01.01-2011.03.01, PeriodRSI=11, MA_period=3).

Bij het maken van de Expert Advisor hebben we het vaste volume gebruikt (Vast Lot Handelen, 0.1), het Trailing Stop algoritme wordt niet gebruikt (Trailing niet gebruikt).

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

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


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


Lijst
Reactie 0