English Русский 中文 Español 日本語 Português
preview
Dekonstruktion von Beispielen für Handelsstrategien im Client-Terminal

Dekonstruktion von Beispielen für Handelsstrategien im Client-Terminal

MetaTrader 5Beispiele | 27 Februar 2025, 08:47
147 0
Artyom Trishkin
Artyom Trishkin

Inhalt


Einführung

In den frühen 1990er Jahren wurden die vom technischen Analysten Steve Nison entwickelten japanischen Kerzen-Charts und Kerzenmuster auf den westlichen Finanzmärkten eingeführt. Seitdem ist die Kenntnis von Kerzenmustern für Händler ebenso wichtig geworden wie die Fähigkeit, klassische technische Analysen anzuwenden.

Seit einiger Zeit erscheint im EA-Verzeichnis des Client-Terminals ein neuer Ordner „Free Robots“:


Der Ordner enthält 28 EAs – Beispiele für Handelsstrategien zum eigenständigen Studium und zur Anwendung der in der Strategie festgelegten Prinzipien für Ihre eigenen Entwicklungen. Bei den im Ordner „Free Robots“ vorgestellten Handelsstrategien handelt es sich um EAs, die auf der Grundlage von Kerzenmustern handeln, die durch Indikatorsignale unterstützt werden.

Zur Bestätigung von Kerzenmustersignalen werden die Werte eines von vier Oszillatorindikatoren verwendet: CCI, MFI, RSI und Stochastischer Oszillator. Somit werden für die Untersuchung 7 EAs präsentiert, die mit Kerzenmustern handeln (jeder mit zwei Mustern - ein Muster für Kauf- und eins für Verkaufs-Positionen), und jeder dieser EAs wird in vier Kopien präsentiert - entsprechend der Anzahl der bestätigenden Indikatoren.


Handelsstrategien im Überblick

Jede der Handelsstrategien verwendet zwei ähnliche Muster, die sich in Richtung und Namen unterscheiden:

1. BlackCrows WhiteSoldiers


3 White Soldiers: Kaufmuster – 3 aufeinanderfolgende weiße Kerzen (3 weiße Soldaten) mit einem Körper ausreichender Größe. Wird als Signal für eine mögliche Umkehr des Abwärtstrends (bearish) verwendet.

3 Black Crows: Verkaufsmuster – 3 aufeinanderfolgende schwarze Kerzen (3 schwarze Krähen) mit einem Körper ausreichender Größe. Wird als Signal für eine mögliche Umkehr des Aufwärtstrends (bullish) verwendet.

Basierend auf den oben beschriebenen Kerzenmustern bietet das Terminal vier Trainings-EAs an:

  • BlackCrows WhiteSoldiers CCI.mq5 – EA basierend auf den Mustern von 3 weißen Soldaten und 3 schwarzen Krähen mit Bestätigung der Signale durch den CCI-Indikator.
  • BlackCrows WhiteSoldiers MFI.mq5 – EA basierend auf den Mustern von 3 weißen Soldaten und 3 schwarzen Krähen mit Bestätigung der Signale durch den MFI-Indikator.
  • BlackCrows WhiteSoldiers RSI.mq5 – EA basierend auf den Mustern von 3 weißen Soldaten und 3 schwarzen Krähen mit Bestätigung der Signale durch den RSI-Indikator.
  • BlackCrows WhiteSoldiers Stoch.mq5 – EA basierend auf den Mustern von 3 weißen Soldaten und 3 schwarzen Krähen mit Bestätigung der Signale durch den Stochastic Oscillator-Indikator.

2. BullishBearish Engulfing


Bullish Engulfing: Das Kaufmuster eines „Bullish Engulfing“ tritt auf, wenn während eines Abwärtstrends auf eine Abwärtskerze eine Aufwärtskerze folgt, deren Körper den Körper der Abwärtskerze vollständig umschließt. Es ist ein Signal für eine mögliche Umkehr des Abwärtstrends (bearish).

Bearish Engulfing: Das Verkaufsmuster eines „Bearish Engulfing“ tritt auf, wenn während eines Aufwärtstrends auf eine Aufwärtskerze eine Abwärtskerze folgt, deren Körper den Körper der Aufwärtskerze vollständig verschlingt. Es ist ein Signal für eine mögliche Umkehr des Aufwärtstrends (bullish).

Basierend auf den oben beschriebenen Kerzenmustern bietet das Terminal vier Trainings-EAs an:

  • BullishBearish Engulfing CCI.mq5 – EA basierend auf den Mustern von Bullish Engulfing und Bearish Engulfing mit Bestätigung der Signale durch den CCI-Indikator.
  • BullishBearish Engulfing MFI.mq5 – EA basierend auf den Mustern von Bullish Engulfing und Bearish Engulfing mit Bestätigung der Signale durch den MFI-Indikator.
  • BullishBearish Engulfing RSI.mq5 – EA basierend auf den Mustern von Bullish Engulfing und Bearish Engulfing mit Bestätigung der Signale durch den RSI-Indikator.
  • BullishBearish Engulfing Stoch.mq5 – EA basierend auf den Mustern von Bullish Engulfing und Bearish Engulfing mit Bestätigung der Signale durch den Stochastic Oscillator-Indikator.


3. BullishBearish Harami


Bullish Harami: Das Kaufmuster eines „bullisch Harami“ tritt auf, wenn auf eine lange Abwärtskerze eine Aufwärtskerze folgt, deren Körper während eines Abwärtstrends vollständig im Körper der bärischen Kerze liegt. Es ist ein Signal für eine mögliche Umkehr des Abwärtstrends (bearish).

Bearish Harami: Das Verkaufsmuster eines „bearish harami“ tritt auf, wenn während eines Aufwärtstrends auf eine lange Aufwärtskerze eine Abwärtskerze folgt, deren Körper vollständig im Körper der Aufwärtskerze liegt. Es ist ein Signal für eine mögliche Umkehr des Aufwärtstrends (bullish).

Basierend auf den oben beschriebenen Kerzenmustern bietet das Terminal vier Trainings-EAs an:

  • BullishBearish Harami CCI.mq5 – EA basierend auf den Mustern von Bullish Harami und Bearish Harami mit Bestätigung der Signale durch den CCI-Indikator.
  • BullishBearish Harami MFI.mq5 – EA basierend auf den Mustern von Bullish Harami und Bearish Harami mit Bestätigung der Signale durch den MFI-Indikator.
  • BullishBearish Harami RSI.mq5 – EA basierend auf den Mustern von Bullish Harami und Bearish Harami mit Bestätigung der Signale durch den RSI-Indikator.
  • BullishBearish Harami Stoch.mq5 – EA basierend auf den Mustern von Bullish Harami und Bearish Harami mit Bestätigung der Signale durch den Stochastic Oscillator-Indikator.


4. BullishBearish MeetingLines


Bullish Meeting Lines: Das Kaufmuster „Bullish Meeting Lines“ ist eine Kombination aus einer Abwärts- und einer Aufwärtskerze, die die gleichen (oder sehr nahe beieinander liegenden) Schlusskurse aufweisen. Die Länge der Kerzenkörper von beiden ist überdurchschnittlich. Es ist ein Signal für eine mögliche Umkehr des Abwärtstrends (bearish).

Bearish Meeting Lines: Das Verkaufsmuster „Bearish Meeting Lines“ ist eine Kombination aus einer Abwärts- und einer Aufwärtskerze, die die gleichen (oder sehr nahe beieinander liegenden) Schlusskurse aufweisen. Die Länge der Kerzenkörper von beiden ist überdurchschnittlich. Es ist ein Signal für eine mögliche Umkehr des Aufwärtstrends (bullish).

Basierend auf den oben beschriebenen Kerzenmustern bietet das Terminal vier Trainings-EAs an:

  • BullishBearish MeetingLines CCI.mq5 – EA basierend auf den Mustern von Bullish Meeting Lines und Bearish Meeting Lines mit Bestätigung der Signale durch den CCI-Indikator.
  • BullishBearish MeetingLines MFI.mq5 – EA basierend auf den Mustern von Bullish Meeting Lines und Bearish Meeting Lines mit Bestätigung der Signale durch den MFI-Indikator.
  • BullishBearish MeetingLines RSI.mq5 – EA basierend auf den Mustern von Bullish Meeting Lines und Bearish Meeting Lines mit Bestätigung der Signale durch den RSI-Indikator.
  • BullishBearish MeetingLines Stoch.mq5 – EA basierend auf den Mustern von Bullish Meeting Lines und Bearish Meeting Lines mit Bestätigung der Signale durch den Stochastic Oscillator-Indikator.


5. DarkCloud PiercingLine


Piercing Line: Das Kaufmuster „Piercing Line“ ist eine Kombination aus einer Abwärts- und einer Aufwärtskerze. Es handelt sich um das entgegengesetzte Analogon zum Muster von Dark Cloud Cover. Zuerst gibt es eine große schwarze Abwärtskerze, die nächste hat eine niedrige Eröffnung (unter dem Minimum der vorherigen) und einen Schlusskurs über der Mitte der ersten Kerze. Es ist ein Signal für eine mögliche Umkehr des Abwärtstrends (bearish).

Dark Cloud Cover: Das Verkaufsmuster „Dark Cloud Cover“ ist eine Kombination aus Aufwärts- und Abwärtskerzen. Zuerst gibt es eine große weiße Aufwärtskerze, die nächste Kerze hat einen hohen Eröffnungskurs (höher als der vorherige Höchstkurs) und einen Schlusskurs unterhalb der Mitte der ersten Kerze. Dies ist einer der wenigen Fälle, in denen Hoch und Tief berücksichtigt werden. Es ist ein Signal für eine mögliche Umkehr des Aufwärtstrends (bullish).

Basierend auf den oben beschriebenen Kerzenmustern bietet das Terminal vier Trainings-EAs an:

  • DarkCloud PiercingLine CCI.mq5 – EA basierend auf den Mustern von PiercingLine und Dark Cloud Cover mit Bestätigung der Signale durch den CCI-Indikator.
  • DarkCloud PiercingLine MFI.mq5 – EA basierend auf den Mustern von PiercingLine und Dark Cloud Cover mit Bestätigung der Signale durch den MFI-Indikator.
  • DarkCloud PiercingLine RSI.mq5 – EA basierend auf den Mustern von PiercingLine und Dark Cloud Cover mit Bestätigung der Signale durch den RSI-Indikator.
  • DarkCloud PiercingLine Stoch.mq5 – EA basierend auf den Mustern von PiercingLine und Dark Cloud Cover mit Bestätigung der Signale durch den Indikator Stochastic Oscillator.


6. HangingMan Hammer


Hammer: Das Kaufmuster „Hammer“ ist eine Kerze mit einem kleinen Körper und einem langen, unteren Schatten, die nach einem Abwärtstrend erscheint. Ein „Hammer“ ist ein starkes Signal dafür, dass die Herrschaft des Abwärtstrends zu Ende geht.

Hanging Man: Das Verkaufsmuster „Hanging Man“ ist eine Kerze mit kleinem Körper und langem unteren Schatten, die nach einem Aufwärtstrend erscheint. Ein „Hanging Man“ signalisiert das Ende des Aufwärtstrends.

Basierend auf den oben beschriebenen Kerzenmustern bietet das Terminal vier Trainings-EAs an:

  • HangingMan Hammer CCI.mq5 – EA basierend auf den Mustern von Hammer- und Hanging-Man mit Bestätigung der Signale durch den CCI-Indikator.
  • HangingMan Hammer MFI.mq5 – EA basierend auf den Mustern von Hammer- und Hanging-Man mit Bestätigung der Signale durch den MFI-Indikator.
  • HangingMan Hammer RSI.mq5 – EA basierend auf den Mustern von Hammer- und Hanging-Man mit Bestätigung der Signale durch den RSI-Indikator.
  • HangingMan Hammer Stoch.mq5 – EA basierend auf den Mustern von Hammer- und Hanging-Man mit Bestätigung der Signale durch den Stochastic Oscillator-Indikator.


7. MorningEvening StarDoji 


Morning Star: Das Kaufmuster „Morning Star“ besteht aus drei Kerzen und erscheint während eines Abwärtstrends:
1. Auf eine lange schwarze Abwärtskerze folgt eine Kerze mit kleinem Körper (Farbe spielt keine Rolle), der sich nicht mit dem Körper der schwarzen Kerze überschneidet.
2. Der kleine Körper der zweiten Kerze bedeutet, dass der Markt von einem Abwärtstrend zu einem Kräftegleichgewicht zwischen Bullen und Bären übergegangen ist.
3. Die dritte Kerze dieses Musters ist eine Aufwärtskerze. Ihr Körper überschneidet sich normalerweise nicht den Körper der zweiten Kerze, und das Schlussniveau befindet sich innerhalb des Körpers der ersten Abwärtskerze.
Das Muster ist ein Signal für eine mögliche Umkehr des Abwärtstrends (bearish).

Morning Doji Star: Das Kaufmuster„Morning Doji Star“ ist ein Sonderfall des Morning Star-Musters. In diesem Fall hat die zweite Kerze des Musters die gleichen Eröffnungs- und Schlusskurse. Mit anderen Worten, sie hat keinen Körper. Das Muster ist ein Signal für eine mögliche Umkehr des Abwärtstrends (bearish).

Evening Star: Das Verkaufsmuster „Evening Star“ besteht ebenfalls aus drei Kerzen und erscheint während eines Aufwärtstrends:
1. Auf eine lange weiße Kerze folgt eine Kerze mit kleinem Körper (Farbe spielt keine Rolle), der sich nicht mit dem Körper der weißen Aufwärtskerze überschneidet.
2. Der kleine Körper der zweiten Kerze bedeutet, dass der Markt von einem Aufwärtstrend zu einem Kräftegleichgewicht zwischen Bullen und Bären übergegangen ist.
3. Die dritte Kerze dieses Musters ist eine schwarze Kerze, deren Körper sich normalerweise nicht mit dem Körper der zweiten Kerze überschneidet und deren Schlussniveau sich innerhalb des Körpers der ersten Aufwärtskerze befindet.
Das Muster ist ein Signal für eine mögliche Umkehr des Aufwärtstrends (bullish).

Evening Doji Star: Das Verkaufsmuster „Evening Doji Star“ ist ein Sonderfall des Evening Star-Musters. In diesem Fall hat die zweite Kerze des Musters die gleichen Eröffnungs- und Schlusskurse. Mit anderen Worten, sie hat keinen Körper. Das Muster ist ein Signal für eine mögliche Umkehr des Abwärtstrends (bearish).

Basierend auf den oben beschriebenen Kerzenmustern bietet das Terminal vier Trainings-EAs an:

  • MorningEvening StarDoji CCI.mq5 – EA basierend auf den Mustern Morning Star (Morning Doji Star) und Evening Star (Evening Doji Star) mit Bestätigung der Signale durch den CCI-Indikator.
  • MorningEvening StarDoji MFI.mq5 – EA basierend auf den Mustern Morning Star (Morning Doji Star) und Evening Star (Evening Doji Star) mit Bestätigung der Signale durch den MFI-Indikator.
  • MorningEvening StarDoji RSI.mq5 – EA basierend auf den Mustern Morning Star (Morning Doji Star) und Evening Star (Evening Doji Star) mit Bestätigung der Signale durch den RSI-Indikator.
  • MorningEvening StarDoji Stoch.mq5 – EA basierend auf den Mustern Morning Star (Morning Doji Star) und Evening Star (Evening Doji Star) mit Bestätigung der Signale durch den Indikator Stochastic Oscillator.


Alle in den EAs verwendeten Indikatoren dienen dazu, Einstiege in eine Kauf oder Verkaufs-Position zu bestätigen (bei entsprechenden Signalen aus Kerzenmustern) und offene Positionen auf Basis von Indikatorsignalen zu schließen.

Die folgenden Tabellen zeigen die Indikatorwerte, die zum Bestätigen von Positionseinträgen und zum Schließen offener Positionen verwendet werden:

Indikator
Kaufen (buy)
Verkaufen (sell)
 CCI
CCI (1)<-50 – Der Wert des CCI-Indikators beim letzten abgeschlossenen Kerze liegt unter -50
CCI(1)>50 – Der CCI-Indikatorwert der letzten abgeschlossenen Kerze übersteigt 50.
 MFI
MFI(1)<40 – Der MFI-Indikatorwert der letzten abgeschlossenen Kerze liegt unter 40.
MFI(1)>60 – Der MFI-Indikatorwert der letzten abgeschlossenen Kerze übersteigt 60.
 RSI
RSI(1)<40 – Der Wert der RSI-Indikatorlinie in der letzten abgeschlossenen Kerze liegt unter 40.
RSI(1)>60 – Der Wert der RSI-Indikatorlinie in der letzten abgeschlossenen Kerze übersteigt 60.
 Stochastic
Stochastic Signal(1)<30 – Der Wert der stochastischen Signallinie in der letzten abgeschlossenen Kerze ist kleiner als 30.
Stochastic Signal(1)>70 – Der Wert der stochastischen Signallinie in der letzten abgeschlossenen Kerze übersteigt 70.

Technische Indikatorsignale zum Schließen von Positionen treten auf, wenn der Indikatorwert die Grenze der Extremzone überschreitet, d. h. wenn er in die überkaufte oder überverkaufte Zone eintritt oder diese verlässt.

Indikator
Schließen einer Kauf-Position
 Schließen einer Verkaufs-Position
 CCI
Der CCI-Indikator überschreitet die Marke von 80 oder -80 nach unten.
Der CCI-Indikator überschreitet den Wert von -80 oder 80 nach oben
 MFI
Der MFI-Indikator überschreitet die Marke von 70 oder 30 nach unten.
Der MFI-Indikator überschreitet die Marke von 30 oder 70 nach oben.
 RSI
Der RSI-Indikator überschreitet die Marke von 70 oder 30 nach unten.
RSI-Indikator, der den Wert von 30 oder 70 nach oben überschreitet
 Stochastic
Die Signallinie des stochastischen Indikators kreuzt die Marke von 80 oder 20 nach unten.
Die Signallinie des stochastischen Indikators kreuzt die Marke von 20 oder 80 nach oben.

Ein separater EA arbeitet mit einem Paar Kerzenmuster in entgegengesetzter Richtung und wird in vier Versionen bestätigender Indikatoren präsentiert.

Als Ergebnis haben wir 7 * 4 = 28 verschiedene EAs, die nach einer einzigen Struktur organisiert sind. Betrachten wir die einheitliche Logik aller EAs anhand von Flussdiagrammen.


Allgemeine Logik

Wenn Sie einen der genannten EAs im Code-Editor öffnen und seinen Code studieren, sehen Sie eine einfache Struktur:


Die EA-Logik basiert auf Flags und Variablen, die auf globaler Ebene deklariert werden:

  • ExtSignalOpen – Signal zum Öffnen einer Position. 1 – Kaufen, -1 – Verkaufen, 0 – kein Signal,
  • ExtSignalClose – Signal zum Schließen einer Position. 2 – Kaufen, -2 – Verkaufen, 0 – kein Signal,
  • ExtPatternInfo – Textbeschreibung des aktuell gefundenen Musters,
  • ExtDirection – Richtung der geöffneten Position. Textbeschreibung,
  • ExtPatternDetected – Flag für gefundenes Muster (true / false),
  • ExtConfirmed – Flag eines vom Indikator bestätigten Mustersignals (true / false),
  • ExtCloseByTime – Flag, das angibt, dass eine Schließung basierend auf der Haltezeit der Position erforderlich ist (true / false),
  • ExtCheckPassed – Flag für erfolgreichen Datenabruf (true / false).
    Global gesetzte Flags sind im Wesentlichen Semaphoren zum Definieren der Logik des EA-Verhaltens. Textvariablen erhalten Werte zur Anzeige der Daten im Journal.
    Die EA-Logik ist sequentiell und besteht aus dem Flag-Initialisierungsblock in OnInit() und vier Verarbeitungsphasen in OnTick().
    • Phase 1 – Überprüfung auf eine neue Kerze und Aktualisierung der Umgebung und des Status der Flags,
    • Phase 2 – Eröffnung einer Position,
    • Phase 3 – Schließen einer Position,
    • Phase 4 – Schließen einer Position nach Ablauf ihrer Laufzeit.

    Betrachten wir die EA-Betriebslogik.

    Flussdiagramm der EA-Betriebslogik


    Das Flussdiagramm zeigt die vier Phasen der Arbeit der EA:

    Phase 1:

    • Suche nach einer neuen Kerze.
      Wenn es sich um eine neue Kerze handelt, wird der aktuelle Status überprüft:
      • Suche in den Kerzen-Formationen nach einem Muster.
      • Wenn das Muster gefunden wird, wird die Mustersignalbestätigung mithilfe des Indikators überprüft.
      • Wenn das Mustersignal bestätigt wird, werden Informationen zum gefundenen Muster im Journal angezeigt und die Flags zu Positionseröffnung gesetzt.

    Phase 2:

    • Wenn ein Signal zum Öffnen einer Position vorliegt und eine solche Position nicht existiert, wird im Journal eine Meldung über das Signal angezeigt und die Position eröffnet.
    • Wenn die Position offen ist, wird das Flag „Position eröffnen“ zurückgesetzt.

    Phase 3:

    • Wenn ein Signal zum Schließen einer Position vorliegt und eine solche Position existiert, wird eine Nachricht über das Signal zum Schließen der Position im Journal ausgedruckt und die Position geschlossen.
    • Wenn keine Position vorhanden ist, wird das Flag „Position schließen“ zurückgesetzt.

    Schritt 4:

    • Wenn ein Signal zum Schließen einer Position nach Ablauf der Lebensdauer vorliegt und eine solche Position existiert, wird die Position mit der abgelaufenen Lebensdauer geschlossen.
    • Wenn keine Position vorhanden ist, wird das Flag zurückgesetzt.


    Liste der Funktionen

    Schauen wir uns die Liste der EA-Funktionen und ihre kurze Beschreibung an:

    CheckState() – überprüft den Umgebungsstatus:

    • Wenn das Muster nicht gefunden wird, wird false zurückgegeben.
    • Wenn beim Bestätigen des Musters mit dem Indikator ein Fehler auftritt, wird false zurückgegeben.
    • Wenn das Muster nicht durch das Indikatorsignal bestätigt wird, wird das Flag „Position eröffen“ zurückgesetzt.
    • Wenn wir das Schließen nach Ablauf der Positionslebensdauer festlegen möchten, müssen wir das entsprechende Flag setzen.

    PositionOpen() – Öffnen einer Position:

    • Die Daten zur Handelsumgebung werden aktualisiert.
    • Abhängig von einem Signal und dementsprechend einem Positionstyp werden die Installationspreise von StopLoss und TakeProfit auf akzeptable Werte im Verhältnis zum Eröffnungspreis und den Serverbeschränkungen angepasst.
    • Eine Position wird eröffnet.
    • Wenn die Position nicht eröffnet wird, melde einen Fehler im Journal und gib false zurück.
    • Wenn das Eröffnen erfolgreich war, wird true zurückgegeben.

    CloseBySignal() – Schließen einer Position per Signal:

    • Wenn kein Schließsignal vorliegt, wird die Funktion verlassen.
    • Die Art der zu schließenden Position wird durch eine Signalrichtung bestimmt.
    • Alle vom EA eröffneten Positionen mit dem durch die Signalrichtung bestimmten Typ werden geschlossen.

    CloseByTime() – Positionen mit abgelaufener Lebensdauer schließen:

    • Wenn es keine vom EA geöffneten Positionen gibt, wird die Funktion verlassen.
    • Alle vom EA eröffneten Positionen mit abgelaufener Lebensdauer werden geschlossen.

    PositionExist() – gibt das Flag einer Position in der Signalrichtung zurück:

    • Es wird ein der Signalrichtung entsprechender Positionstyp ermittelt.
    • Es wird das Flag einer durch einen EA eröffneten Position mit einem durch die Signalrichtung bestimmten Typ zurückgegeben.

    PositionExpiredByTimeExist() – gibt das Flag einer Position mit abgelaufener Lebensdauer zurück:

    • Es wird die Anzahl der Kerzen der Positionslebensdauer definiert.
    • Das Flag der Position wird zurückgegeben, wenn ihre Lebensdauer die in den Einstellungen angegebene Anzahl der Kerzen überschreitet.

    BarsHold() – gibt die Anzahl der Kerzen über die gesamte Positionslebensdauer zurück:

    • Es wird die Anzahl der Kerze zwischen der Positionseröffnungszeit und der aktuellen Serverzeit ermittelt und zurückgegeben.

    Open(), Close(), Low(), High() – gibt den entsprechenden Preis einer Kerze nach dem Index zurück:

    • Die entsprechenden Preise der angegebenen Kerze werden abgefragt.
    • Wenn keine Preise empfangen werden, wird das Fehlerflag gesetzt.
    • Die erzielten Preise werden zurückgegeben.

    MidPoint(), MidOpenClose() und AvgBody() geben berechnete Durchschnittspreise zurück.

    CheckPattern() – prüft, ob ein Muster vorhanden ist:

    • Der Mustersuchalgorithmus wird in der Verkaufs-Richtung ausgeführt.
    • Wurde das Muster gefunden, wird das Flag des gefundenen Musters gesetzt und true zurückgegeben.
    • Der Mustersuchalgorithmus wird in der Kauf-Richtung ausgeführt.
    • Wenn das Muster gefunden wird, wird das Flag des gefundenen Musters gesetzt und true zurückgegeben.
    • Wurden keine Muster gefunden, wird ein Fehlerflag zurückgegeben, welches in den Funktionen zur Preisermittlung auf false gesetzt werden kann.

    CheckConfirmation() – überprüft und gibt das Flag des Mustersignals zurück, das durch das Indikatorsignal bestätigt wird.

    CheckCloseSignal() – überprüft die Bedingungen für das Signal zum Schließen einer Position anhand der Indikatorwerte. Wenn das Signal vorhanden ist, wird das Flag „Position schließen“ gesetzt.


    Schlussfolgerung

    Alle 28 EAs im Ordner Experts\Free Robots folgen derselben Logik. Der einzige Unterschied zwischen ihnen besteht in den Algorithmen zur Suche nach Kerzenmustern und im Empfangen von Daten von vier Indikatoren zur Bestätigung von Mustersignalen. Dementsprechend kann jeder dieser EAs als Vorlage zum Erstellen anderer EAs verwendet werden, die mit anderen Kerzenmustern arbeiten und Musterbestätigungen von anderen Indikatoren erhalten. Alles was wir dafür tun müssen, ist, die Logik der Suche nach Mustern in Kauf- und Verkaufs-Richtung in der Funktion CheckPattern() zu ändern, die von der Funktion CheckState() aufgerufen wird, auf die im ersten Schritt der EA-Operation zugegriffen wird:

    //+------------------------------------------------------------------+
    //| Returns true in case of successful pattern check                 |
    //+------------------------------------------------------------------+
    bool CheckPattern()
      {
       ExtPatternDetected=false;
    //--- check if there is a pattern
       ExtSignalOpen=SIGNAL_NOT;
       ExtPatternInfo="\r\nPattern not detected";
       ExtDirection="";
    
    //--- check 3 Black Crows
       if((Open(3)-Close(3)>AvgBody(1)) && // long black
          (Open(2)-Close(2)>AvgBody(1)) &&
          (Open(1)-Close(1)>AvgBody(1)) &&
          (MidPoint(2)<MidPoint(3))     && // lower midpoints
          (MidPoint(1)<MidPoint(2)))
         {
          ExtPatternDetected=true;
          ExtSignalOpen=SIGNAL_SELL;
          ExtPatternInfo="\r\n3 Black Crows detected";
          ExtDirection="Sell";
          return(true);
         }
    
    //--- check 3 White Soldiers
       if((Close(3)-Open(3)>AvgBody(1)) && // long white
          (Close(2)-Open(2)>AvgBody(1)) &&
          (Close(1)-Open(1)>AvgBody(1)) &&
          (MidPoint(2)>MidPoint(3))     && // higher midpoints
          (MidPoint(1)>MidPoint(2)))
         {
          ExtPatternDetected=true;
          ExtSignalOpen=SIGNAL_BUY;
          ExtPatternInfo="\r\n3 White Soldiers detected";
          ExtDirection="Buy";
          return(true);
         }
    
    //--- result of checking
       return(ExtCheckPassed);
      }

    Um den Bestätigungsindikator zu ändern, müssen wir einfach die angegebenen Indikatoreigenschaften, im Beispiel unten den CCI, durch die gewünschten in den Eingaben ersetzen:

    //--- Input parameters
    input int  InpAverBodyPeriod=12;    // period for calculating average candlestick size
    input int  InpPeriodCCI     =37;    // CCI period
    input ENUM_APPLIED_PRICE InpPrice=PRICE_CLOSE; // price type

    In OnInit() ersetzen Sie im Beispiel unten den Block zum Erstellen des CCI durch den Block zum Erstellen eines anderen Indikators:

    //+------------------------------------------------------------------+
    //| Expert initialization function                                   |
    //+------------------------------------------------------------------+
    int OnInit()
      {
       Print("InpSL=", InpSL);
       Print("InpTP=", InpTP);
    //--- set parameters for trading operations
       ExtTrade.SetDeviationInPoints(InpSlippage);    // slippage
       ExtTrade.SetExpertMagicNumber(InpMagicNumber); // Expert Advisor ID
       ExtTrade.LogLevel(LOG_LEVEL_ERRORS);           // logging level
    
       ExtAvgBodyPeriod=InpAverBodyPeriod;
    //--- indicator initialization
       ExtIndicatorHandle=iCCI(_Symbol, _Period, InpPeriodCCI, InpPrice);
       if(ExtIndicatorHandle==INVALID_HANDLE)
         {
          Print("Error creating CCI indicator");
          return(INIT_FAILED);
         }
    //--- OK
       return(INIT_SUCCEEDED);
      }

    Als Nächstes verwenden wir in der Funktion CheckConfirmation() zum Bestätigen von Signalen und in der Funktion CheckCloseSignal() zum Schließen von Positionen durch Indikatorsignale die Daten eines neuen Indikators mit den erforderlichen Werten zum Bestätigen der Muster in Kauf- und Verkaufs-Richtungen :

    //+------------------------------------------------------------------+
    //| Returns true in case of successful confirmation check            |
    //+------------------------------------------------------------------+
    bool CheckConfirmation()
      {
       ExtConfirmed=false;
    //--- if there is no pattern, do not search for confirmation
       if(!ExtPatternDetected)
          return(true);
    
    //--- get the value of the stochastic indicator to confirm the signal
       double signal=CCI(1);
       if(signal==EMPTY_VALUE)
         {
          //--- failed to get indicator value, check failed
          return(false);
         }
    
    //--- check the Buy signal
       if(ExtSignalOpen==SIGNAL_BUY && (signal<-50))
         {
          ExtConfirmed=true;
          ExtPatternInfo+="\r\n   Confirmed: CCI<-50";
         }
    
    //--- check the Sell signal
       if(ExtSignalOpen==SIGNAL_SELL && (signal>50))
         {
          ExtConfirmed=true;
          ExtPatternInfo+="\r\n   Confirmed: CCI>50";
         }
    
    //--- successful completion of the check
       return(true);
      }
    


    //+------------------------------------------------------------------+
    //| Check if there is a signal to close                              |
    //+------------------------------------------------------------------+
    bool CheckCloseSignal()
      {
       ExtSignalClose=false;
    //--- if there is a signal to enter the market, do not check the signal to close
       if(ExtSignalOpen!=SIGNAL_NOT)
          return(true);
    
    //--- check if there is a signal to close a long position
       if(((CCI(1)<80) && (CCI(2)>80)) || ((CCI(1)<-80) && (CCI(2)>-80)))
         {
          //--- there is a signal to close a long position
          ExtSignalClose=CLOSE_LONG;
          ExtDirection="Long";
         }
    
    //--- check if there is a signal to close a short position
       if(((CCI(1)>-80) && (CCI(2)<-80)) || ((CCI(1)>80) && (CCI(2)<80)))
         {
          //--- there is a signal to close a short position
          ExtSignalClose=CLOSE_SHORT;
          ExtDirection="Short";
         }
    
    //--- successful completion of the check
       return(true);
      }

    Daher stellen diese EAs eine gute Vorlage zum Erstellen und Testen nutzerdefinierter Algorithmen zur Überprüfung verschiedener Kerzenmuster mit Bestätigung durch nahezu jeden geeigneten Indikator dar.

    Übersetzt aus dem Russischen von MetaQuotes Ltd.
    Originalartikel: https://www.mql5.com/ru/articles/15479

    Algorithmus zur Optimierung der Migration der Tiere (AMO) Algorithmus zur Optimierung der Migration der Tiere (AMO)
    Der Artikel ist dem AMO-Algorithmus gewidmet, der die saisonale Migration von Tieren auf der Suche nach optimalen Bedingungen für Leben und Fortpflanzung modelliert. Zu den Hauptfunktionen von AMO gehören die Verwendung topologischer Nachbarschaften und ein probabilistischer Aktualisierungsmechanismus, der die Implementierung vereinfacht und die Flexibilität für verschiedene Optimierungsaufgaben gewährleistet.
    Meistern Sie MQL5 vom Anfänger bis zum Profi (Teil IV): Über Arrays, Funktionen und globale Terminalvariablen Meistern Sie MQL5 vom Anfänger bis zum Profi (Teil IV): Über Arrays, Funktionen und globale Terminalvariablen
    Der Artikel ist eine Fortsetzung der Serie für Einsteiger. Ers behandelt im Detail Datenarrays, die Interaktion von Daten und Funktionen sowie globale Terminalvariablen, die einen Datenaustausch zwischen verschiedenen MQL5-Programmen ermöglichen.
    Neuronale Netze im Handel: Praktische Ergebnisse der Methode TEMPO Neuronale Netze im Handel: Praktische Ergebnisse der Methode TEMPO
    Wir beschäftigen uns weiter mit TEMPO. In diesem Artikel werden wir die tatsächliche Wirksamkeit der vorgeschlagenen Ansätze anhand realer historischer Daten bewerten.
    Entwicklung eines Replay-Systems (Teil 59): Eine neue Zukunft Entwicklung eines Replay-Systems (Teil 59): Eine neue Zukunft
    Wenn wir die unterschiedlichen Ideen richtig verstehen, können wir mit weniger Aufwand mehr erreichen. In diesem Artikel sehen wir uns an, warum es notwendig ist, eine Vorlage zu konfigurieren, bevor der Dienst mit dem Chart interagieren kann. Und was wäre, wenn wir den Mauszeiger verbessern würden, damit wir mehr damit machen können?