De MQL5 Wizard stelt je in staat om kant-en-klare Expert Advisors te creëren op basis van de Standaard bibliotheek klassen die samen met de client terminal worden geleverd (zie Kant-en-klare Expert Advisors maken in MQL5 Wizard voor meer details). Dit maakt het mogelijk 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 van Handelsignalen te Creëren.
Het algemene idee is als volgt: de klasse van handelsignalen is afgeleid van CExpertSignal, daarna 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. Wij zullen ons richten 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 daar de nodige functies toe te voegen (bijvoorbeeld bevestiging door oscillators).
Hier bekijken we de signalen, gebaseerd op de "Bullish/Bearish Meeting Lines" omkeer candlestick patronen, bevestigd door de MFI (Market Facilitation 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. De body van beide candlesticks moet groter zijn dan de gemiddelde body lengte.
Het "Bullish Meeting Lines" patroon geeft de omkering 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. De body van beide candlesticks moet groter zijn dan de gemiddelde body lengte.
Het "Bearish Meeting Lines" patroon geeft de omkering 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 MFI indicator
De handelsignalen om een long of short positie te openen moeten bevestigd worden door de MFI indicator. De waarde van de MFI indicator moet lager zijn dan 40 (voor long posities) of hoger dan 60 (voor short posities).
Het sluiten van geopende posities hangt af van de waarden van de MFI indicator. Dit kan in 2 gevallen gebeuren:
- als de MFI het tegenovergestelde kritieke niveau heeft bereikt (70 voor long positie en 30 voor short positie)
- als het omgekeerde signaal niet wordt bevestigd (wanneer de MFI indicator de volgende niveaus bereikt: 30 voor long positie en 70 voor short positie)

Figuur 3. Het Bearish Meeting Lines patroon, bevestigd door MFI indicator
- int CML_MFI::LongCondition() - controleert de voorwaarden om een long positie te openen (geeft 80 terug) en sluit de short positie (geeft 40 terug);
- int CML_MFI::ShortCondition() - controleert de voorwaarden om een short positie te openen (geeft 80 terug) en sluit de long positie (geeft 40 terug).
2.1. Open long positie/Sluit short positie
De vorming van het "Bullish Meeting Lines" patroon moet bevestigd worden door de MFI indicator: MFi(1)<40 (de waarde van de MFI indicator van de laatste voltooide bar moet minder zijn dan 40).
De short positie moet worden gesloten als de MFI indicator de kritieke niveaus (70 of 30) naar boven heeft gekruist.
//+------------------------------------------------------------------+ //| Controleert de voorwaarden voor toegang en exit uit de markt | //| 1) Markttoegang (open long positie, resultaat=80) | //| 2) Marktuitgang (sluit short positie, resultaat=40) | //+------------------------------------------------------------------+ int CML_MFI::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 handelsconditie alleen bij nieuws bars int idx =StartIndex(); //--- controle van de voorwaarden om een long positie te openen //--- vorming van Bullish Meeting Lines patroon en MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (MFI(1)<40)) result=80; //--- controle van de voorwaarden om de short positie te sluiten //--- signaallijn crossover van overgekochte/ondergekochte niveaus (omhoog 30, omhoog 70) if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- return resultaat return(result); }
2.2. Open short positie/Sluit long positie
De vorming van het "Bearish Meeting Lines" patroon moet bevestigd worden door de MFI indicator: MFI(1)>60 (de waarde van de MFI indicator van de laatste voltooide bar moet groter zijn dan 60).
De long positie moet worden gesloten als de MFI indicator de kritieke niveaus (70 of 30) naar boven/beneden heeft gekruist.
//+------------------------------------------------------------------+ //| Controleert de voorwaarden voor toegang en exit uit de markt | //| 1) Markttoegang (open short positie, resultaat=80) | //| 2) Marktuitgang (sluit long positie, resultaat=40) | //+------------------------------------------------------------------+ int CML_MFI::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 handelsconditie alleen bij nieuws bars int idx =StartIndex(); //--- controle van de voorwaarden om een short positie te openen //--- vorming van Bearish Meeting Lines patroon en MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (MFI(1)>60)) result=80; //--- controle van de voorwaarden om de long positie te sluiten //--- signaallijn crossover van overgekochte/ondergekochte niveaus (omhoog 70, omlaag 30) if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- return resultaat return(result); }
2.3. Een Expert Advisor maken met behulp van MQL5 Wizard
De CML_MFI klasse is niet opgenomen in de Standaard Bibliotheek klassen, om deze te gebruiken, moet je het aml_mfi.mqh bestand downloaden (zie bijlagen) en opslaan in de client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals. Hetzelfde geldt voor het acandlepatterns.mqh bestand. Je kunt het gebruiken in MQL5 Wizard na het herstarten van de MetaEditor.
Om een Expert Advisor te creëren, start je de 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
Daarna moeten we de modules van handelsignalen selecteren die worden gebruikt.

Fig. 6. Signaal eigenschappen van de Expert Advisor
In ons geval gebruiken we slechts één module van handelsignalen.
Het toevoegen van de "Signalen gebaseerd op Bullish/Bearish Meeting Lines door MFI" 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 we zullen "Trailing Stop niet gebruikt" gebruiken:

Fig. 9. Geldbeheer eigenschappen van de Expert Advisor
Wat betreft de geldbeheer eigenschappen, zullen we "Handelen met een vaste handelsvolume" gebruiken:

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_AML_MFI.mq5, deze wordt opgeslagen in terminal_data_folder\MQL5\Experts\.
De standaard invoerparameters van de gegenereerde Expert Advisor:
//--- inputs 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 worden vervangen door:
//--- inputs 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 de drempelniveaus in voor het openen en sluiten van posities.
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 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 de Signal_StopLevel en Signal_TakeLevel invoerparameters zijn ingesteld op 0, dit 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 bekijken (EURUSD H1, testperiode: 2000.01.01-2011.03.16, PeriodMFI=12, MA_period=4).
Bij het creëren van de Expert Advisor hebben we het vaste volume gebruikt (Handelen met een Vaste Lot, 0.1), de Trailing Stop algoritme wordt niet gebruikt (Trailing niet gebruikt).

Fig. 11. Testresultaten van de Expert Advisor, gebaseerd op Bullish/Bearish Meeting Lines + MFI
De beste set van invoerparameters kan worden gevonden met behulp van de Strategie Tester van de MetaTrader 5 client terminal.
De code van de Expert Advisor, gemaakt door MQL5 Wizard, is bijgevoegd in expert_aml_mfi.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