Schau, wie man Roboter kostenlos herunterladen kann
Finden Sie uns auf Facebook!
und werden Sie Mitglied unserer Fangruppe
Interessantes Skript?
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Hat Ihnen das Skript gefallen?
Bewerten Sie es im Terminal MetaTrader 5
Expert Advisors

MQL5 Wizard - Handelsignale auf der Basis der Kreuzung des Preises mit dem MA-Indikator - Experte für den MetaTrader 5

Ansichten:
2223
Rating:
(33)
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

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
Die Überprüfung der Handelsbedingungen auf einem nicht vollständigen Balken kann häufig zu falschen Signalen führen, denn der Preis (und Indikatorwerte) kann sich ändern.


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

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

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

Mehrwährungsindikator U.S. Dollar Index iUSDx Mehrwährungsindikator U.S. Dollar Index iUSDx

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.

OptimReport v2.15 OptimReport v2.15

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

cIntBMP - eine Bibliothek für die Erstellung von Bildern im BMP-Format cIntBMP - eine Bibliothek für die Erstellung von Bildern im BMP-Format

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

Professioneller ZigZag Professioneller ZigZag

Ein ZigZag Indikator ohne Nachteile des typischen ZigZag.