De MQL5 Wizard maakt het mogelijk om kant-en-klare Expert Advisors (EA's) te creëren op basis van de Standaardbibliotheek die wordt meegeleverd met de clientterminal. Hiermee kun je je handelsideeën snel testen; alles wat je hoeft te doen is 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 van Handelsignalen te Creëren.
Het basisidee 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) waarin verschillende handelsstrategieën worden besproken. Wij zullen ons richten op omkeercandlestickpatronen, bevestigd door de 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 candlestickpatronen. Voor de bevestiging van handelsignalen, gegenereerd door candlestickpatronen, is het voldoende om de klasse, afgeleid van CCandlePattern, te schrijven en de benodigde functies toe te voegen (bijvoorbeeld bevestiging door oscillators).
Hier gaan we de signalen bekijken die zijn gebaseerd op de omkeercandlestickpatronen "Bullish/Bearish Meeting Lines", bevestigd door de Stochastic indicator. De module van handelsignalen is gebaseerd op de CCandlePattern klasse, het is een eenvoudig voorbeeld van het gebruik ervan voor de creatie van handelsignalen met candlestickpatronen.
1. "Meeting Lines" omkeercandlestickpatronen
1.1. Bullish Meeting Lines
Het patroon bestaat uit twee candlesticks (bearish en bullish) met gelijke (of zeer dicht bij elkaar liggende) slotkoersen. Het lichaam van beide candlesticks moet groter zijn dan de gemiddelde lichaamsgrootte.
Het "Bullish Meeting Lines" patroon wijst op de omkering van een neerwaartse trend.

Figuur 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) slotkoersen. Het lichaam van beide candlesticks moet groter zijn dan de gemiddelde lichaamsgrootte.
Het "Bearish Meeting Lines" patroon wijst op de omkering van een opwaartse trend.

Figuur 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 Stochastic indicator
De handelsignalen om een lange of korte positie te openen moeten worden bevestigd door de Stochastic oscillator. De %D lijn moet groter of kleiner zijn dan het bijbehorende kritieke niveau (30 of 70).
Het sluiten van de geopende positie hangt af van de waarden van de %D indicator. Dit kan op 2 manieren gebeuren:
- Als de %D lijn het tegenovergestelde kritieke niveau heeft bereikt (80 voor lange positie en 20 voor korte positie)
- Als het omkeersignaal niet wordt bevestigd (wanneer de %D lijn de volgende niveaus bereikt: 20 voor lange positie en 80 voor korte positie)

Figuur 3. Bearish Meeting Lines patroon, bevestigd door Stochastic indicator
- int CML_Stoch::LongCondition() - controleert de voorwaarden voor het openen van een lange positie (geeft 80 terug) en het sluiten van de korte positie (geeft 40 terug);
- int CML_Stoch::ShortCondition() - controleert de voorwaarden voor het openen van een korte positie (geeft 80 terug) en het sluiten van 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 Stochastic indicator: StochSignal(1)<30 (de waarde van de signaallijn van de Stochastic indicator van de laatste voltooide bar moet minder zijn dan 30).
De korte positie moet worden gesloten als de signaallijn van de Stochastic indicator omhoog de 20 of 80 niveaus heeft gekruist.
//+------------------------------------------------------------------+ //| Controleert de voorwaarden voor toegang en uitgang uit de markt | //| 1) Toegang tot de markt (open lange positie, resultaat=80) | //| 2) Uitgang uit de markt (sluit korte positie, resultaat=40) | //+------------------------------------------------------------------+ int CML_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 nieuwsbar int idx =StartIndex(); //--- controle van voorwaarden om een lange positie te openen //--- vorming van Bullish Meeting Lines patroon en signaallijn<30 if (CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (StochSignal(1)<30)) result=80; //--- controle van voorwaarden om korte positie te sluiten //--- signaallijn kruis van overbought/oversold niveaus (omlaag 20, omhoog 80) if((((StochSignal(1)>20) && (StochSignal(2)<20)) || ((StochSignal(1)>80) && (StochSignal(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 Stochastic indicator: StochSignal(1)>70 (de waarde van de signaallijn van de Stochastic indicator van de laatste voltooide bar moet groter zijn dan 70).
De lange positie moet worden gesloten als de signaallijn van de Stochastic indicator naar beneden de 80 of 20 niveaus heeft gekruist.
//+------------------------------------------------------------------+ //| Controleert de voorwaarden voor toegang en uitgang uit de markt | //| 1) Toegang tot de markt (open korte positie, resultaat=80) | //| 2) Uitgang uit de markt (sluit lange positie, resultaat=40) | //+------------------------------------------------------------------+ int CML_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 nieuwsbar int idx =StartIndex(); //--- controle van voorwaarden om een korte positie te openen //--- vorming van Bearish Meeting Lines patroon en signaallijn>70 if (CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (StochSignal(1)>70)) result=80; //--- controle van voorwaarden om lange positie te sluiten //--- signaallijn kruis van overbought/oversold niveaus (omlaag 80, omhoog 20) if((((StochSignal(1)<80) && (StochSignal(2)>80)) || ((StochSignal(1)<20) && (StochSignal(2)>20)))) result=40; //--- retourne resultaat return(result); }
2.3. Een Expert Advisor maken met behulp van MQL5 Wizard
De CML_Stoch klasse is niet opgenomen in de Standaardbibliotheek, om deze te gebruiken, moet je het acml_stoch.mqh bestand downloaden (zie bijlagen) en opslaan in de client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Dit moet ook 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 behulp van MQL5 Wizard
Laten we de naam van de Expert Advisor opgeven:

Figuur 5. Algemene eigenschappen van de Expert Advisor
Daarna moeten we de modules van handelsignalen selecteren die we gaan gebruiken.

Figuur 6. Signaal eigenschappen van de Expert Advisor
In ons geval gebruiken we slechts één module van handelsignalen.
We voegen de module "Signalen gebaseerd op Bullish/Bearish Meeting Lines bevestigd door Stochastic" van handelsignalen toe:

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

Figuur 8. Signaal eigenschappen van de Expert Advisor
Je kunt verschillende trailing eigenschappen selecteren, maar we zullen "Trailing Stop niet gebruikt" gebruiken:

Figuur 9. Trailing eigenschappen van de Expert Advisor
Wat betreft de money management eigenschappen, gebruiken we "Handelen met een vast handelsvolume":

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, opgeslagen in Expert_AML_Stoch.mq5, in de terminal_data_folder\MQL5\Experts\.
De standaard invoerparameters van de gegenereerde Expert Advisor:
//--- invoeren voor hoofdsignaal input int Signal_ThresholdOpen =10; // Drempelwaarde voor signaal om te openen [0...100] input int Signal_ThresholdClose =10 // Drempelwaarde voor signaal 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:
//--- invoeren voor hoofdsignaal input int Signal_ThresholdOpen =40; // Drempelwaarde voor signaal om te openen [0...100] input int Signal_ThresholdClose =20 // Drempelwaarde voor signaal 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 drempelniveaus in voor het openen en sluiten van posities.
In de code van de LongCondition() en ShortCondition() methoden van de handelsignalenklasse hebben we 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, 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 dit in overweging nemen bij het instellen van de drempelwaarden. Vanwege dit feit moeten de ThresholdOpen en ThresholdClose worden ingesteld op 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 data bekijken (EURUSD H1, testperiode: 2005.01.01-2010.03.16, PeriodK=6, PeriodD=3, PeriodSlow=36, MA_period=3).
Bij het creëren van de Expert Advisor hebben we het vaste volume gebruikt (Handelen met Vaste Lot, 0.1), en de Trailing Stop-algoritme is niet gebruikt (Trailing niet gebruikt).

Figuur 11. Testresultaten van de Expert Advisor, gebaseerd op Bullish/Bearish Meeting Lines + Stochastic
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_aml_stoch.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