und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5

MQL5 Wizard - Handelsignale auf der Basis der Kreuzung des Preises mit dem MA-Indikator - Experte für den MetaTrader 5
- Ansichten:
- 2429
- Rating:
- Veröffentlicht:
- 2016.08.05 15:39
- Aktualisiert:
- 2016.11.22 07:34
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Der Artikel Der MQL5-Assistent: Erstellen von Expert-Systemen ohne Programmierung beschreibt Schritte automatischer Erstellung des Codes eines Expert Advisors mithilfe vom MQL5 Wizard.
Hier erzählen wir über eine Trendstrategie, die auf der Kreuzung des Preises mit dem MA Indikator beruht. Diese Strategie ist im Standardterminal enthalten und heißt "Signals based on price crossover with MA". Handelssignale:
- Kauf: wenn der Preis den gleitenden Durchschnitt von unten nach oben kreuzt.
- Verkauf: wenn der Preis den gleitenden Durchschnitt von oben nach unten kreuzt.
- Falsche Signale werden aussortiert, indem es überprüft wird, ob der gleitende Durchschnitt steigt oder sinkt.
Diese Handelsstrategie wird in der Klasse CSignalMA der Standardbibliothek implementiert (platziert in MQL5\Include\Expert\Signal\SignalMA.mqh)
Abbildung 1. Handelsignale auf der Basis der Kreuzung des Preises mit MA
Handelssignale
Das Modul mit Handelssignalen nach dieser Strategie wird in der Klasse CSignalMA implementiert. Diese Klasse enthält mehrere geschützte (protected) Methoden, die für Zugang zu Werten von Kursen und Indikatoren verwendet werden:
double MA(int ind) // gibt den Wert des gleitenden Durchschnitts auf dem angegebenen Balken zurück double Open(int ind) // gibt Open auf dem angegebenen Balken zurück double Close(int ind) // gibt Close auf dem angegebenen Balken zurück double StateMA(int ind) // gibt einen positiven Wert zurück, wenn EMA steigt und einen negativen, wenn EMA sinkt double StateOpen(int ind) // gibt die Differenz zwischen dem Schlusskurs und dem gleitenden Durchschnitt zurück double StateClose(int ind) // gibt die Differenz zwischen dem Schlusskurs und dem gleitenden Durchschnitt zurück
1. Eröffnen einer Long-Position
Bedingungen für das Eröffnen einer Long-Position:
- Open(1)<MA(1): Open liegt unterhalb des gleitenden Durchschnitts;
- Close(1)>MA(1): Close liegt oberhalb des gleitenden Durchschnitts;
- MA(1)>MA(2): überprüft, ob der gleitende Durchschnitt steigt (falsche Signale ausfiltern).
//+------------------------------------------------------------------+ //| Überprüft die Erfüllung der Bedingungen für den Kauf | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- der Preis kreuzt den gleitenden Durchschnitt von unten nach oben und der gleitende Durchschnitt steigt return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); }
2. Schließen einer Long-Position
Bedingungen für das Schließen einer Long-Position:
- Open(1)>MA(1): Open liegt oberhalb des gleitenden Durchschnitts;
- Close(1)<MA(1): Close liegt unterhalb des gleitenden Durchschnitts;
- MA(1)<MA(2): überprüfen, ob der gleitende Durchschnitt sinkt (falsche Signale aussortieren).
//+---------------------------------------------------------------------------------+ //| Überprüft die Erfüllung der Bedingungen für das Schließen einer Long-Position | //+---------------------------------------------------------------------------------+ bool CSignalMA::CheckCloseLong(double& price) { price=0.0; //--- der Preis kreuzt den gleitenden Durchschnitt von oben nach unten und der gleitende Durchschnitt sinkt return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
3. Eröffnen einer Short-Position
Die Bedingungen für das Eröffnen einer Short-Position und das Schließen einer Long-Position sind gleich.
//+------------------------------------------------------------------+ //| Überprüfung der Bedingungen für den Verkauf | //+------------------------------------------------------------------+ bool CSignalMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =0.0; tp =0.0; //--- der Preis kreuzt den gleitenden Durchschnitt von oben nach unten und der gleitende Durchschnitt sinkt return(StateOpen(1)>0 && StateClose(1)<0 && StateMA(1)<0); }
4. Schließen einer Short-Position
Die Bedingungen für das Schließen einer Short-Position und Eröffnen einer Long-Position sind gleich.
//+------------------------------------------------------------------------+ //| Überprüfung der Bedingungen für das Schließen einer Short-Position | //+------------------------------------------------------------------------+ bool CSignalMA::CheckCloseShort(double& price) { price=0.0; //--- der Preis kreuzt den gleitenden Durchschnitt von unten nach oben und der gelitende Durchschnitt steigt return(StateOpen(1)<0 && StateClose(1)>0 && StateMA(1)>0); } //+------------------------------------------------------------------------+
Erstellung eines Expert Advisors auf der Basis von Handelssignalen mithilfe von MQL5 Wizard
Um einen Handelsroboter nach dieser Strategie mithilfe von MQL5 Wizard zu erstellen, wählen Sie "Signals based on price crossover with MA" im zweiten Schritt aus:
Abbildung 2. Auswahl des Moduls in MQL5 Wizard
Geben Sie den gewünschten Typ von Trailing Stop und Kapitalmanagement in den nächsten Schritten an. Der Code des Expert Advisors wird automatisch generiert, er muss kompiliert werden und dann können Sie mit dem Testen anfangen.
Testergebnisse
Die Ergebnisse des Expert Advisors bei einem Test unter Verwendung von historischen Daten (EURUSD H1, Testperiode: 1.1.2010-05.01.2011, MA_period=12, MA_Shift=0).
Dieser Expert Advisor benutzt das Modul für den Handel mit einer festgelegten Lotgröße von 0.1 Lot (Trading Fixed Lot), ein Trailing Stop wurde nicht verwendet (Trailing not used).
Abbildung 3. Testergebnisse
Die Datei SignalMA.mqh, die die Klasse CSignalMA enthält (welche zur Standardbibliothek MetaTrader 5 gehört) ist im Ordner MQL5\Include\Expert\Signal zu finden.
Der von dem MQL5 Wizard generierte Code für den Expert Advisor ist angehängt als Datei: crossoverma.mq5.
Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/248

Ein Beispiel für die Anwendung des Panels "Control panel MCM" für die Erstellung von Mehrwährungsindikatoren. Als Beispiel ist hier der Mehrwährungsindikator "Dollar-Index" angeführt.

Eine Funktion für die Auswahl des Kriteriums für die Variable "Custom мax" für die Funktion OnTester() und eine Tabelle mit den Optimierungsergebnissen inkl. alle Indikatoren in einer HTML-Datei

Eine Klasse für die Erstellung und Anzeige von Bildern im BMP-Format.

Ein ZigZag Indikator ohne Nachteile des typischen ZigZag.