De MQL5 Wizard maakt het mogelijk om kant-en-klare Expert Advisors te creëren op basis van de Standaard bibliotheek klassen die samen met de client terminal worden geleverd. Dit stelt je in staat om je handelsideeën snel te controleren door eenvoudig je eigen handelsignalenklasse te creëren. De structuur van deze klasse en een voorbeeld hiervan is te vinden in het artikel MQL5 Wizard: Hoe een Module van Handelsignalen te Creëren.
Het algemene idee is als volgt: de klasse van 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 behandeld. Wij richten ons op omkeer candlestick patronen, bevestigd door Stochastics, 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 de bevestiging van handelsignalen, gegenereerd door candlestick patronen, is het voldoende om de klasse, afgeleid van CCandlePattern te schrijven en daar de nodige kenmerken (bijvoorbeeld, bevestiging door oscillatoren) aan toe te voegen.
Hier bespreken we de signalen gebaseerd op "Bullish/Bearish Meeting Lines" omkeer candlestick patronen, bevestigd door de CCI (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 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 dicht bij elkaar liggende) slotprijzen. Het lichaam van de twee candlesticks moet groter zijn dan de gemiddelde lichaam lengte.
Het "Bullish Meeting Lines" patroon geeft de omkeer van een neerwaartse trend aan.

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))) // doji close 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 dicht bij elkaar liggende) slotprijzen. Het lichaam van de twee candlesticks moet groter zijn dan de gemiddelde lichaam lengte.
Het "Bearish Meeting Lines" patroon geeft de omkeer van een opwaartse trend aan.

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))) // doji close 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 CCI indicator
De handelsignalen voor het openen van lange of korte posities moeten worden bevestigd door de CCI indicator. De waarde van CCI moet groter/kleiner zijn dan kritische niveaus (-50 voor een lange positie en 50 voor een korte positie).
Het sluiten van geopende posities hangt af van de waarden van CCI. Dit kan op 2 manieren:
- Als de CCI lijn het tegenovergestelde kritische niveau heeft bereikt (80 voor een lange positie en -80 voor een korte positie).
- Als het omgekeerde signaal niet wordt bevestigd (wanneer CCI de volgende niveaus bereikt: -80 voor een lange positie en 80 voor een korte positie).

Fig. 3. Het 'Bullish Meeting Lines' patroon, bevestigd door de CCI indicator
- int CML_CCI::LongCondition() - controleert de voorwaarden om een lange positie te openen (geeft 80 terug) en sluit de korte positie (geeft 40 terug);
- int CML_CCI::ShortCondition() - controleert de voorwaarden om een korte positie te openen (geeft 80 terug) en sluit de lange positie (geeft 40 terug).
2.1. Open lange positie/Sluit korte positie
De vorming van het "Bullish Meeting Lines" patroon moet worden bevestigd door de CCI indicator: CCI(1)<-50 (de waarde van de CCI van de laatst voltooide kaars moet minder zijn dan -50).
De korte positie moet worden gesloten als de CCI indicator naar boven het kritische niveau -80 is gekruist of naar beneden het kritische niveau 80.
//+------------------------------------------------------------------+ //| Controleert de voorwaarden voor toegang en exit uit de markt | //| 1) Toegang tot de markt (open lange positie, resultaat=80) | //| 2) Exit uit de markt (sluit korte positie, resultaat=40) | //+------------------------------------------------------------------+ int CML_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 nieuws bars int idx =StartIndex(); //--- controle van de voorwaarden voor het openen van een lange positie //--- vorming van Bullish Meeting Lines patroon en CCI<-50 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (CCI(1)<-50)) result=80; //--- controle van de voorwaarden om de korte positie te sluiten //--- signaallijn crossover van overbought/oversold niveaus (omlaag -80, omlaag -80) if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)<80) && (CCI(2)>80))) result=40; //--- retourne resultaat return(result); }
2.2. Open korte positie/Sluit lange positie
De vorming van het "Bearish Meeting Lines" patroon moet worden bevestigd door de CCI indicator: CCI(1)>50 (de waarde van de CCI indicator van de laatst voltooide kaars moet groter zijn dan 50).
De lange positie moet worden gesloten als de CCI indicator naar beneden het -80 of 80 niveau heeft gekruist.
//+------------------------------------------------------------------+ //| Controleert de voorwaarden voor toegang en exit uit de markt | //| 1) Toegang tot de markt (open korte positie, resultaat=80) | //| 2) Exit uit de markt (sluit lange positie, resultaat=40) | //+------------------------------------------------------------------+ int CML_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 nieuws bars int idx =StartIndex(); //--- controle van de voorwaarden voor het openen van een korte positie //--- vorming van Bearish Meeting Lines patroon en CCI>50 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (CCI(1)>50)) result=80; //--- controle van de voorwaarden om de lange positie te sluiten //--- signaallijn crossover van overbought/oversold niveaus (omlaag -80, omlaag 80) if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80))) result=40; //--- retourne resultaat return(result); }
2.3. Creëren van een Expert Advisor met behulp van MQL5 Wizard
De CML_CCI klasse is niet inbegrepen in de Standaard Bibliotheek klassen. Om deze te gebruiken, is het nodig om het acml_cci.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 candlepatterns.mqh bestand. Je kunt het gebruiken in MQL5 Wizard na opnieuw opstarten van de MetaEditor.
Om een Expert Advisor te creëren, start je de MQL5 Wizard:

Fig. 4. Creëren van een Expert Advisor met behulp van MQL5 Wizard
Laten we de naam van de Expert Advisor specificeren:

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
In ons geval gebruiken we slechts één module van handelsignalen.
Toevoegen van de "Signalen gebaseerd op Bullish/Bearish Meeting Lines bevestigd door CCI" module van handelsignalen:

Fig. 7. Signaal eigenschappen van de Expert Advisor
Module van handelsignalen toegevoegd:

Fig. 8. Signaal eigenschappen van de Expert Advisor
Je kunt elke trailing eigenschappen selecteren, maar wij zullen "Trailing Stop niet gebruikt" gebruiken:

Fig. 9. Trailing eigenschappen van de Expert Advisor
Wat betreft de money management eigenschappen, zullen we "Handelen met vaste handelsvolume" gebruiken:

Fig. 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_AML_CCI.mq5. Deze wordt opgeslagen in de terminal_data_folder\MQL5\Experts\.
De standaard invoerparameters van de gegenereerde Expert Advisor:
//--- invoer voor hoofdsignaal 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 worden vervangen door:
//--- invoer voor hoofdsignaal input int Signal_ThresholdOpen =40; // Drempelwaarde om open te gaan [0...100] input int Signal_ThresholdClose =20; // 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 maken het mogelijk 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 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 geven altijd 0 terug.
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 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 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 (EURUSD H1, testperiode: 2000.01.01-2011.03.16, PeriodCCI=18, MA_period=3) bekijken.
Bij het creëren 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 Bullish/Bearish Meeting Lines + CCI
De beste set van invoerparameters kan worden gevonden met behulp van de Strategy Tester van de MetaTrader 5 client terminal.
De code van de Expert Advisor, gecreëerd door MQL5 Wizard, is bijgevoegd in expert_aml_cci.mq5.
Gerelateerde berichten
- MQL5 Wizard: Creëer Handelsstrategieën met Bullish en Bearish Engulfing Candlestick Patronen en Stochastic
- MQL5 Wizard: Handelsignalen Geïnspireerd Door Morning/Evening Stars + MFI voor MetaTrader 5
- MQL5 Wizard: Handelsignalen Geïnspireerd door Morning/Evening Stars en RSI voor MetaTrader 5
- Efficiënt Trendvolgend Handelsysteem met Exp_X2MA_JFatl voor MetaTrader 5
- Close Cross MA: Efficiënt Orders Sluiten met MetaTrader 4