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 - Handelssignale basierend auf der Kreuzung der Linien des Alligator Indikators - Experte für den MetaTrader 5

Ansichten:
1352
Rating:
(33)
Veröffentlicht:
2016.09.02 10:58
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 der automatischen Erstellung des Codes eines Expert Advisors mithilfe von MQL5 Wizard.

Schauen wir uns die Strategie an, die auf der Kreuzung der Linien des Alligator Indikators beruht. Der technische Indikator wurde im Buch von. B. Williams "Trading Chaos" erläutert. Diese Strategie ist im Standardpaket des Terminals enthalten und heißt "Signals based on the Alligator".

Dieses System stellt ein Kombination aus drei gleitenden Durchschnitten (Linien Lips, Teeth und Jaw) und darauf basierenden Oszillatoren dar. Wenn die Linien des Alligator Indikators sich kreuzen, werden Handelssignale je nach Trend und der Reihenfolge der Linien generiert.

In einem Aufwärtstrend liegt der gleitende Durchschnitt mit der kleinsten Periode (Linie Lips) ganz oben, weiter folgt der gleitende Durchschnitt mit einer kurzen Periode (Linie Teeth) und ganz unten liegt der Durchschnitt mit der größten Periode (Linie Jaw). Ähnlich sieht es in einem Abwärtstrend aus: ganz unten - Lips, dann Teeth, und ganz oben Jaw.

Handelssignale:

  • Eröffnen einer Long-Position: die Linien des Alligator Indikators kreuzen sich und gehen in einem Aufwärtstrend auseinander;
  • Schließen einer Long-Position: die Linie Lips durchkreuzt die Linie Jaw von unten nach oben;
  • Eröffnen einer Short-Position: die Linien des Alligator Indikators kreuzen sich und gehen in einem Abwärtstrend auseinander;
  • Schließen einer Short-Position: die Lips Linie kreuzt die Jaw Linie von oben nach unten

Die Handelsstrategie wird in der Klasse CSignalAlligator implementiert.

Abbildung 1. Handelssignale der Strategie auf der Basis der Kreuzung der Alligator-Linien

Abbildung 1. Handelssignale der Strategie auf der Basis der Kreuzung der Alligator-Linien


Handelssignale

Das Modul der Handelssignale dieser Strategie wird in der Klasse CSignalAlligator implementiert. Die Klasse enthält mehrere geschützte (protected) Methoden, die für den Zugang zu Werten von Kursen und Indikatoren genutzt werden:

double   Jaw(int ind)              // gibt den Wert der Jaw Linie (Maul des Alligators) auf dem Balken zurück
double   Teeth(int ind)            // gibt den Wert der Teeth Linie (Zähne des Alligators) auf dem Balken zurück
double   Lips(int ind)             // gibt den Wert der Lips Linie (Lippen des Alligators) auf dem Balken zurück
double   LipsTeethDiff(int ind)    // gibt die Differenz zwischen den Linien Lips und Teeth auf dem Balken zurück
double   TeethJawDiff(int ind)     // gibt die Differenz zwischen den Linien Teeth und Jaw auf dem Balken zurück
double   LipsJawDiff(int ind)      // gibt die Differenz zwischen den Linien Lips und Jaw auf dem Balken zurück
bool     CheckCross();            // überprüft, ob die Linien sich kreuzen


1. Eröffnen einer Long-Position

Da die Linien des Indikators mit einer Verschiebung (die Linien werden in die Zukunft verschoben) gezeichnet werden, weist die Überprüfung der Bedingungen einige Besonderheiten auf.

Bedingungen für das Eröffnen einer Long-Position:

  • Mit der Methode CheckCross wird überprüft, ob die Linien auseinadergehen;
  • LipsTeethDiff(-2)>=LipsTeethDiff(-1) und LipsTeethDiff(-1)>=LipsTeethDiff(0); überprüft ob die Linien Lips und Teeth weiter auseinandergehen;
  • LipsTeethDiff(0)>=0.0;  die Lips Linie liegt über der Teeth Linie;
  • TeethJawDiff(-2) >=TeethJawDiff(-1) und TeethJawDiff(-1) >=TeethJawDiff(0) ; überprüft ob die Linien Teeth und Jaw weiter auseinandergehen;
  • TeethJawDiff(0) >=0.0; die Linie Teeth liegt über der Jaw Linie.
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Eröffnen einer Long-Position   |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 &&
      TeethJawDiff(-2) >=TeethJawDiff(-1)  && TeethJawDiff(-1) >=TeethJawDiff(0)  && TeethJawDiff(0) >=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


2. Schließen einer Long-Position

Bedingungen für das Schließen einer Long-Position (s. die Anmerkung über die Verschiebung der Linien oben):

  • LipsTeethDiff(-1)<0; die Lips Linie des nächsten Balkens (wegen der Verschiebung) liegt unter der Teeth Linie;
  • LipsTeethDiff(0)>=0; die Lips Linie des aktuellen Balkens liegt über oder auf der Teeth Linie;
  • LipsTeethDiff(1)>0; die Lips Linie des vorherigen (vollständigen) Balkens liegt über der Teeth Linie.
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Schließen einer Long-Position  |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)<0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)>0);
  }


3. Eröffnen einer Short-Position

Bedingungen für das Eröffnen einer Short-Position:

  • Mit der Methode CheckCross wird überprüft, ob die Linien auseinadergehen;
  • LipsTeethDiff(-2)<=LipsTeethDiff(-1) und LipsTeethDiff(-1)<=LipsTeethDiff(0); überprüft ob die Linien Lips und Teeth weiter auseinandergehen;
  • LipsTeethDiff(0)<=0.0; die Lips Linie liegt unter der Teeth-Linie;
  • TeethJawDiff(-2)<=TeethJawDiff(-1) und TeethJawDiff(-1)<=TeethJawDiff(0); überprüft ob die Linien Teeth und Jaw weiter auseinandergehen;
  • TeethJawDiff(0) <=0.0; die Teeth Linie liegt unter der Jaw-Linie;
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Eröffnen einer Short-Position  |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 &&
      TeethJawDiff(-2) <=TeethJawDiff(-1)  && TeethJawDiff(-1) <=TeethJawDiff(0)  && TeethJawDiff(0) <=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


4. Schließen einer Short-Position

Bedingungen für das Schließen einer Short-Position:

  • LipsTeethDiff(-1)>0; die Lips Linie des nächsten Balkens (durch die Verschiebung) liegt über die Teeth-Linie;
  • LipsTeethDiff(0)<=0; die Lips Linie auf dem aktuellen Balken liegt unter oder auf der Teeth Linie;
  • LipsTeethDiff(1)<0; die Lips Linie des vorherigen (vollständigen) Balkens liegt unter der Teeth Linie.
//+------------------------------------------------------------------+
//| Überprüft die Bedingungen für das Schließen einer Short-Position |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)>0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)<0);
  }

Erstellung eines Expert Advisors mithilfe von MQL5 Wizard

Um einen Handelsroboter für diese Strategie mithilfe von MQL5 Wizard zu erstellen, wählen Sie "Signals based on the Alligator" im zweiten Schritt aus:

Abbildung 2. Auswahl des Moduls der Handelssignale, die auf der Kreuzung der Linien des Alligator Indikators beruhen

Abbildung 2. Auswahl des Moduls der Handelssignalen, die auf der Kreuzung der Linien des Alligator Indikators beruhen

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 EAs bei einem Test unter Verwendung von historischen Daten (EURUSD H1, Zeitraum: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5).

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 des EAs, der die Strategie auf der Basis der Kreuzung der Alligator-Linien verwendet

Abbildung 3. Testergebnisse des EAs, der die Strategie auf der Basis der Kreuzung der Alligator-Linien verwendet

Die Handelsergebnisse können erheblich verbessert werden, wenn man Markteigenschaften hinsichtlich der Zeit berücksichtigt. Die Klasse CSignalITF stellt Funktionen für die Implementierung eines Zeitfilters bereit. Die günstigste Zeit für den Handel kann man mithilfe des Strategietesters des MetaTrader 5 Terminals finden.

Ein Beispiel für die Implementierung eines vorläufigen Filters finden Sie in MQL5 Wizard- Handelssignale basierend auf der Kreuzung zweier EMA mit einem Zeitfilter.

Die Datei SignalAlligator.mqh, die die Klasse CSignalAlligator enthält, muss nach client_terminal_data\folder\MQL5\Include\Expert\Signal kopiert werden.

Der mithilfe von MQL5 Wizard generierte Code für den Expert Advisor ist angehängt als Datei: expert_alligator.mq5.


Übersetzt aus dem Russischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/ru/code/267

MQL5 Wizard- Handelssignale basierend auf der Kreuzung zweier EMA mit einem Zeitfilter MQL5 Wizard- Handelssignale basierend auf der Kreuzung zweier EMA mit einem Zeitfilter

Handelssignale auf der Basis der Kreuzung zweier EMA mit einem Filter nach zeitlichen Parametern "Signals based on crossover of two EMA with intraday time filter".

MQL5 Wizard- Handelssignale basierend auf der Kreuzung der Hauptlinie und der Signallinie des MACD Indikators MQL5 Wizard- Handelssignale basierend auf der Kreuzung der Hauptlinie und der Signallinie des MACD Indikators

Handelsignale auf der Basis der Kreuzung der Hauptlinie und der Signallinie des MACD Indikators "Signals based on crossover of main and signal MACD lines" (die Klasse CSignalMACD ist in der Standardbibliothek enthalten).

MQL5 Wizard - Handelssignale basierend auf Umkehrkerzenformationen MQL5 Wizard - Handelssignale basierend auf Umkehrkerzenformationen

Handelssignale basierend auf Umkehrkerzenformationen "Signals based on reversal candlestick patterns".

Multicurrency Event-Handler OnTick(string symbol) Multicurrency Event-Handler OnTick(string symbol)

Eine vereinfachte Implementierung des Multicurrency-Modus in MetaTrader 5. Es ist nicht nötig, sich damit auseinanderzusetzen, wie das funktioniert. Minimum an Einstellungen. Maximum an Benutzerfreundlichkeit. Funktioniert im Tester.