Der MQL5 Wizard ermöglicht die Erstellung von sofort einsatzbereiten Expert Advisors auf Basis der Standardbibliotheksklassen, die zusammen mit dem Client-Terminal geliefert werden (siehe Erstellung von Expert Advisors im MQL5 Wizard für Details). Damit kannst du deine Handelsideen schnell überprüfen, indem du einfach deine eigene Handelsignal-Klasse erstellst. Die Struktur dieser Klasse und ein Beispiel findest du im Artikel MQL5 Wizard: So erstellst du ein Modul für Handelssignale.
Die grundlegende Idee ist wie folgt: Die Handelsignal-Klasse wird von CExpertSignal abgeleitet. Anschließend musst du die virtuellen Methoden LongCondition() und ShortCondition() mit deinen eigenen Methoden überschreiben.
Es gibt ein Buch "Strategien der besten Trader" (in Russisch), in dem viele Handelsstrategien behandelt werden. Wir konzentrieren uns hier auf Umkehrkerzenmuster, die durch Stochastic, CCI, MFI und RSI Oszillatoren bestätigt werden.
Am besten ist es, eine separate Klasse zu erstellen, die von CExpertSignal abgeleitet ist, um die Bildung von Kerzenmustern zu überprüfen. Zur Bestätigung der Handelsignale, die durch Kerzenmuster generiert wurden, reicht es aus, eine Klasse abzuleiten, die von CCandlePattern kommt und die notwendigen Features (zum Beispiel Bestätigung durch Oszillatoren) hinzuzufügen.
Hier betrachten wir die Signale, die auf den Umkehrmustern "Bullish/Bearish Meeting Lines" beruhen, die durch den MFI (Market Facilitation Index) Indikator bestätigt werden. Das Modul für Handelssignale basiert auf der CCandlePattern Klasse, und es ist ein einfaches Beispiel für die Verwendung zur Erstellung von Handelssignalen mit Kerzenmustern.
1. Umkehrmustern "Meeting Lines"
1.1. Bullish Meeting Lines
Das Muster besteht aus zwei Kerzen (bärisch und bullish) mit gleichen (oder sehr nahen) Schlusskursen. Der Körper der beiden Kerzen muss länger sein als die durchschnittliche Körperlänge.
Das "Bullish Meeting Lines" Muster zeigt eine Umkehrung des Abwärtstrends an.

Abb. 1. Bullish Meeting Lines Muster
Die Erkennung des "Bullish Meeting Lines" Musters erfolgt durch die Methode CheckPatternBullishMeetingLines() der CCandlePattern Klasse:
//+--------------------------------------------------------------------+ //| Überprüft die Formation des "Bullish Meeting Lines" Kerzenmusters| //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBullishMeetingLines() { //--- Bullish Meeting Lines if((Open(2)-Close(2)>AvgBody(1)) && // lange schwarze ((Close(1)-Open(1))>AvgBody(1)) && // lange weiße (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // doji Schluss return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) der CCandlePattern Klasse wird verwendet, um die Formation des "Bullish Meeting Lines" Kerzenmusters zu überprüfen.
1.2. Bearish Meeting Lines
Das Muster besteht aus zwei Kerzen (bullish und bearish) mit gleichen (oder sehr nahen) Schlusskursen. Der Körper der beiden Kerzen muss länger sein als die durchschnittliche Körperlänge.
Das "Bearish Meeting Lines" Muster zeigt eine Umkehrung des Aufwärtstrends an.

Abb. 2. Bearish Meeting Lines Muster
Die Erkennung des "Bearish Meeting Lines" Musters erfolgt durch die Methode CheckPatternBearishMeetingLines() der CCandlePattern Klasse:
//+--------------------------------------------------------------------+ //| Überprüft die Formation des "Bearish Meeting Lines" Kerzenmusters| //+--------------------------------------------------------------------+ bool CCandlePattern::CheckPatternBearishMeetingLines() { //--- Bearish Meeting Lines if((Close(2)-Open(2)>AvgBody(1)) && // lange weiße ((Open(1)-Close(1)>AvgBody(1)) && // lange schwarze (MathAbs(Close(1)-Close(2))<0.1*AvgBody(1))) // doji Schluss return(true); //--- return(false); }
Die Methode CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) der CCandlePattern Klasse wird verwendet, um die Formation des "Bearish Meeting Lines" Kerzenmusters zu überprüfen.
2. Handelssignale, bestaetigt durch den MFI Indikator
Die Handelssignale zum Öffnen von Long- oder Short-Positionen müssen durch den MFI Indikator bestätigt werden. Der Wert des MFI Indikators muss unter 40 (für Long-Positionen) oder über 60 (für Short-Positionen) liegen.
Der Schluss der offenen Position hängt von den Werten des MFI Indikators ab. Dies kann in zwei Fällen erfolgen:
- Wenn der MFI das gegenüberliegende kritische Niveau erreicht hat (70 für Long-Position und 30 für Short-Position)
- Wenn das Umkehrsignal nicht bestätigt wird (wenn der MFI Indikator die folgenden Werte erreicht: 30 für Long-Position und 70 für Short-Position)

Abbildung 3. Das Bearish Meeting Lines Muster, bestätigt durch den MFI Indikator
- int CML_MFI::LongCondition() - überprüft die Bedingungen zum Öffnen einer Long-Position (gibt 80 zurück) und zum Schließen der Short-Position (gibt 40 zurück);
- int CML_MFI::ShortCondition() - überprüft die Bedingungen zum Öffnen einer Short-Position (gibt 80 zurück) und zum Schließen der Long-Position (gibt 40 zurück).
2.1. Long-Position eröffnen/Short-Position schließen
Die Formation des "Bullish Meeting Lines" Musters muss durch den MFI Indikator bestätigt werden: MFi(1)<40 (der Wert des MFI Indikators der letzten abgeschlossenen Kerze muss weniger als 40 sein).
Die Short-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Niveaus (70 oder 30) nach oben überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Long-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Short-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CML_MFI::LongCondition() { int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken int idx =StartIndex(); //--- Überprüfen der Bedingungen zum Öffnen einer Long-Position //--- Bildung des Bullish Meeting Lines Musters und MFI<40 if(CheckCandlestickPattern(CANDLE_PATTERN_BULLISH_MEETING_LINES) && (MFI(1)<40)) result=80; //--- Überprüfen der Bedingungen zum Schließen der Short-Position //--- Signal-Linien-Kreuzung der überkauften/unterkauften Niveaus (nach oben 30, nach oben 70) if(((MFI(1)>30) && (MFI(2)<30)) || ((MFI(1)>70) && (MFI(2)<70))) result=40; //--- Ergebnis zurückgeben return(result); }
2.2. Short-Position eröffnen/Long-Position schließen
Die Formation des "Bearish Meeting Lines" Musters muss durch den MFI Indikator bestätigt werden: MFI(1)>60 (der Wert des MFI Indikators der letzten abgeschlossenen Kerze muss größer als 60 sein).
Die Long-Position muss geschlossen werden, wenn der MFI Indikator die kritischen Niveaus (70 oder 30) nach oben/unten überschreitet.
//+------------------------------------------------------------------+ //| Überprüft die Bedingungen für den Markteintritt und -austritt | //| 1) Markteintritt (Short-Position eröffnen, Ergebnis=80) | //| 2) Marktaustritt (Long-Position schließen, Ergebnis=40) | //+------------------------------------------------------------------+ int CML_MFI::ShortCondition() { int result=0; //--- idx kann verwendet werden, um den Arbeitsmodus des Expert Advisors zu bestimmen //--- idx=0 - in diesem Fall überprüft EA die Handelsbedingungen bei jedem Tick //--- idx=1 - in diesem Fall überprüft EA die Handelsbedingungen nur bei Nachrichtenbalken int idx =StartIndex(); //--- Überprüfen der Bedingungen zum Öffnen einer Short-Position //--- Bildung des Bearish Meeting Lines Musters und MFI>60 if(CheckCandlestickPattern(CANDLE_PATTERN_BEARISH_MEETING_LINES) && (MFI(1)>60)) result=80; //--- Überprüfen der Bedingungen zum Schließen der Long-Position //--- Signal-Linien-Kreuzung der überkauften/unterkauften Niveaus (nach oben 70, nach unten 30) if(((MFI(1)>70) && (MFI(2)<70)) || ((MFI(1)<30) && (MFI(2)>30))) result=40; //--- Ergebnis zurückgeben return(result); }
2.3. Erstellung des Expert Advisors mit MQL5 Wizard
Die CML_MFI Klasse ist nicht in den Klassen der Standardbibliothek enthalten. Um sie zu verwenden, ist es notwendig, die aml_mfi.mqh Datei herunterzuladen (siehe Anhänge) und sie im client_terminal_data\folder\MQL5\Include\Expert\Signal\MySignals zu speichern. Das Gleiche gilt für die acandlepatterns.mqh Datei. Du kannst sie im MQL5 Wizard nach einem Neustart des MetaEditors verwenden.
Um einen Expert Advisor zu erstellen, starte den MQL5 Wizard:

Abb. 4. Erstellung des Expert Advisors mit MQL5 Wizard
Lass uns den Namen des Expert Advisors angeben:

Abb. 5. Allgemeine Eigenschaften des Expert Advisors
Danach müssen wir die verwendeten Module für Handelssignale auswählen.

Abb. 6. Signal-Eigenschaften des Expert Advisors
In unserem Fall verwenden wir nur ein Modul für Handelssignale.
Hinzufügen des "Signals basierend auf Bullish/Bearish Meeting Lines durch MFI" Handelsignalmoduls:

Abb. 7. Signal-Eigenschaften des Expert Advisors
Das Handelsignalmodul wurde hinzugefügt:

Abb. 8. Signal-Eigenschaften des Expert Advisors
Du kannst beliebige Trailing-Eigenschaften auswählen, aber wir werden "Trailing Stop nicht verwendet" verwenden:

Abb. 9. Trailing-Eigenschaften des Expert Advisors
Was die Geldmanagement-Eigenschaften betrifft, verwenden wir "Handel mit festem Handelsvolumen":

Abb. 10. Geldmanagement-Eigenschaften des Expert Advisors
Durch Drücken der Schaltfläche "Fertig" erhalten wir den Code des generierten Expert Advisors, der in Expert_AML_MFI.mq5 gespeichert wird, er wird im terminal_data_folder\MQL5\Experts\ gespeichert.
Die Standard-Eingabeparameter des generierten Expert Advisors:
//--- Eingaben für das Hauptsignal input int Signal_ThresholdOpen =10; // Signal-Schwellwert zum Öffnen [0...100] input int Signal_ThresholdClose =10 // Signal-Schwellwert zum Schließen [0...100] input double Signal_PriceLevel =0.0 // Preisniveau zur Ausführung eines Handels input double Signal_StopLevel =50.0 // Stop-Loss-Niveau (in Punkten) input double Signal_TakeLevel =50.0 // Take-Profit-Niveau (in Punkten)
muss ersetzt werden durch:
//--- Eingaben für das Hauptsignal input int Signal_ThresholdOpen =40; // Signal-Schwellwert zum Öffnen [0...100] input int Signal_ThresholdClose =20 // Signal-Schwellwert zum Schließen [0...100] input double Signal_PriceLevel =0.0 // Preisniveau zur Ausführung eines Handels input double Signal_StopLevel =0.0 // Stop-Loss-Niveau (in Punkten) input double Signal_TakeLevel =0.0 // Take-Profit-Niveau (in Punkten)
Die Parameter Signal_ThresholdOpen/Signal_ThresholdClose erlauben es, Schwellenwerte für das Öffnen und Schließen von Positionen festzulegen.
Im Code der LongCondition() und ShortCondition() Methoden der Handelsignal-Klasse haben wir die festen Werte für die Schwellenwerte festgelegt:
- Position öffnen: 80;
- Position schließen: 40.
Der vom MQL5 Wizard generierte Expert Advisor öffnet und schließt Positionen mithilfe der "Stimmen" aus den Handelsignalmodulen. Die Stimme des Hauptmoduls (als Container, es besteht aus allen hinzugefügten Modulen) wird ebenfalls verwendet, aber die LongCondition() und ShortCondition() Methoden geben immer 0 zurück.
Die Stimmenergebnisse des Hauptmoduls werden auch in der "Stimmen"-Durchschnittsbildung verwendet. In unserem Fall haben wir: Hauptmodul + 1 Handelsignalmodul, daher müssen wir diese Tatsache bei den Einstellungswerten berücksichtigen. Aufgrund dieser Tatsache müssen die ThresholdOpen und ThresholdClose als 40=(0+80)/2 und 20=(0+40)/2 festgelegt werden.
Die Werte der Parameter Signal_StopLevel und Signal_TakeLevel sind auf 0 gesetzt, was bedeutet, dass das Schließen der Positionen nur erfolgt, wenn die Schließbedingungen wahr sind.
2.4. Historische Backtesting-Ergebnisse
Schauen wir uns das Backtesting des Expert Advisors auf historischen Daten (EURUSD H1, Testzeitraum: 2000.01.01-2011.03.16, PeriodMFI=12, MA_Period=4) an.
Bei der Erstellung des Expert Advisors verwendeten wir das feste Volumen (Handel mit festem Lot, 0.1), der Trailing Stop-Algorithmus wird nicht verwendet (Trailing nicht verwendet).

Abb. 11. Testergebnisse des Expert Advisors, basierend auf Bullish/Bearish Meeting Lines + MFI
Die besten Eingabeparameter können mit dem Strategietester des MetaTrader 5 Client-Terminals gefunden werden.
Der Code des Expert Advisors, der mit dem MQL5 Wizard erstellt wurde, ist im expert_aml_mfi.mq5 angehängt.
Verwandte Beiträge
- So integrierst du hochkarätige Wirtschaftsdaten in deinen EA für MetaTrader 4
- Erstelle einen Expert Advisor basierend auf dem Center of Gravity Indikator für MetaTrader 4
- Well Martin: Der vielseitige EA für MetaTrader 5
- Schnick – Unterstützung durch maschinelles Lernen im Trading mit MetaTrader 5
- 3MaCross EA: Der perfekte Trading-Assistent für MetaTrader 4