English Русский 中文 Español 日本語 Português 한국어 Français Italiano Türkçe
preview
Lernen Sie, wie man ein Handelssystem mit dem Chaikin Oscillator entwickelt

Lernen Sie, wie man ein Handelssystem mit dem Chaikin Oscillator entwickelt

MetaTrader 5Handel | 3 August 2022, 13:56
447 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Einführung

Hier ist ein neuer Artikel, der unsere Serie über das Lernen, wie man ein Handelssystem durch die beliebtesten technischen Indikatoren zu entwerfen, weil wir lernen, wie man das mit einem neuen technischen Indikator, der Chaikin Oscillator ist zu tun abschließt.

Wir werden diesen Indikator folgende Themen behandeln:

  1. Chaikin Oszillator - Definition
  2. Chaikin Oszillator - Strategie
  3. Chaikin Oszillator - Blaupause der Strategie
  4. Chaikin Oszillator - Handelssystem
  5. Schlussfolgerung

Durch die oben genannten Themen werden wir lernen, wie man ein Handelssystem mit dem Chaikin Oszillator Schritt für Schritt erstellt und entwickelt. Wir werden lernen, was der Indikator Chaikin Oszillator ist, was er misst, wie wir ihn manuell berechnen können, um das Hauptkonzept dahinter zu verstehen, und all das lernen wir durch das Thema Chaikin Oszillator - Definition. Wir lernen, wie wir diesen Indikator durch einfache Strategien nutzen können, die auf dem grundlegenden Konzept des Chaikin Oszillators basieren. Danach werden wir eine Schritt-für-Schritt-Blaupause für jede der genannten Strategien erstellen, um uns zu helfen, ein Handelssystem für jede von ihnen reibungslos durch das Thema der Chaikin Oscillator Strategie Blaupause zu erstellen. Danach werden wir ein Handelssystem für jede erwähnte Strategie erstellen, um sie auszuführen und automatisch Signale vom MetaTrader 5 zu erhalten, und dies wird durch das Chaikin Oscillator Handelssystem Thema sein.

Wir werden die MQL5 (MetaQuotes Language) verwenden, um den Code der Handelsstrategie zu schreiben und sie im MetaTrader 5 auszuführen, um uns automatisch Signale zu geben. Wenn Sie wissen wollen, wie man MetaTrader 5 herunterlädt und benutzt, um MQL5 zu verwenden, können Sie das Thema Schreiben von MQL5 im MetaEditor in einem früheren Artikel lesen.

Haftungsausschluss: Alle Informationen werden in der vorliegenden Form nur zu Informationszwecken bereitgestellt und sind nicht für Handelszwecke oder als Ratschläge gedacht. Die Informationen garantieren keinen Erfolg. Wenn Sie sich dafür entscheiden, diese Materialien auf einem Ihrer Handelskonten zu verwenden, tun Sie dies auf eigenes Risiko und Sie sind allein verantwortlich.

Beginnen wir unseren Artikel mit unseren Themen.


Chaikin Oszillator - Definition

In diesem Teil werden wir den Chaikin Oszillator-Indikator im Detail kennenlernen, da wir das grundlegende Konzept des Indikators verstehen werden. Der Chaikin Oszillator-Indikator ist ein Momentum-Indikator, der von Marc Chaikin entwickelt wurde, und es ist ganz klar, dass der Indikator nach seinem Schöpfer benannt ist. Er misst die Dynamik der Akkumulationsverteilungslinie mithilfe der MACD-Formel (Moving Average Convergence Divergence). Durch die Messung dieses Momentunms können wir Einblicke in die Richtungsänderungen der Akkumulationsverteilungslinie gewinnen.

Wenn wir den Chaikin Oszillator manuell berechnen wollen, um das dahinter stehende Konzept besser zu verstehen, können wir dies anhand der folgenden Schritte tun:

  1. Berechnen des Geldflussmultiplikators = ((Close-Low)-(High-Close))/(High-Low)
  2. Berechnen des Geldflussvolumens = Geldflussmultiplikator * Volumen
  3. Berechnen der Accumulation Distribution Line (ADL) = vorherige ADL + aktuelles Geldflussvolumen
  4. Chaikin Oszillator = (3-Perioden EMA von ADL) - (10-Perioden EMA von ADL)

Heutzutage müssen wir den Indikator nicht mehr manuell berechnen, da Sie ihn einfach in das Chart einfügen können, da er im MetaTrader 5 integriert ist. Alles, was Sie tun wollen, ist, es aus den verfügbaren Indikatoren zu wählen, aber hier lernen wir, wie wir das tun können, um das Hauptkonzept dahinter zu lernen.

Wir können ihn in den Chart einfügen, indem wir auf die Registerkarte Einfügen im MetaTrader 5 --> Indikatoren --> Oszillatoren --> Chaikin Oszillator klicken. Die folgende Abbildung zeigt diese Schritte:

Einfügen des Chaikin Oszillators

Nachdem Sie den Chaikin Oszillator-Indikator ausgewählt haben, sehen Sie das Fenster mit den Parametern des Indikators wie folgt:

 Chaikin Oszillator Parameter

1- Bestimmen des Volumentyp.

2- Bestimmen der Periode des schnellen gleitenden Durchschnitts.

3- Bestimmen der Periode des langsam gleitenden Durchschnitts.

4- Bestimmen des Typs des gleitenden Durchschnitts.

5 - Bestimmen der Farbe der Indikatorlinie.

6- Bestimmen des Linientyps des Indikators.

7- Bestimmen der Linienstärke des Indikators.

Nachdem Sie die vorherigen Parameter festgelegt und auf „OK“ gedrückt haben, wird der Indikator wie folgt in das Chart gestartet:

Chaikin Oszillator gestartet

Wie wir sehen können, ist der Indikator im unteren Teil des vorherigen Bildes eingefügt, und es zeigt, dass die Indikatorlinie über und unter dem Nullniveau oszilliert.


Chaikin Oszillator - Strategie

In diesem Thema werden wir einfache Strategien zur Verwendung des Chaikin Oszillator-Indikators auf der Grundlage seines Hauptkonzepts lernen. Es ist ein guter Ansatz, wenn wir darüber nachdenken, wie wir ein anderes technisches Instrument einsetzen können, um unsere Entscheidung zu verbessern und ihr mehr Gewicht zu verleihen, und dies ist eines der Merkmale der technischen Analyse. Was ich hier auch wiederholen muss, ist Sie aufzufordern, jede Strategie zu testen, bevor Sie sie auf Ihrem realen Konto verwenden, um sicherzustellen, dass sie für Sie geeignet ist, vor allem wenn Sie sie durch ein pädagogisches Thema wie hier gelernt haben.

  • Strategie eins: Chaikin Oszillator Durchbruch:

Nach dieser Strategie können wir Kauf- oder Verkaufssignale erhalten, die auf dem Durchbruch (Crossover) der aktuellen Chaikin-Werte von der Null basieren. Wenn der aktuelle Chaikin-Wert über Null steigt, ist dies ein Kaufsignal. Im anderen Szenario, wenn der aktuelle Chaikin-Wert unter die Null fällt, ist dies ein Verkaufssignal.

Einfach,

Der aktuelle Chaikin-Wert > Null --> Kaufsignal.

Der aktuelle Chaikin-Wert < Null --> Verkaufssignal.

  • Strategie zwei: Bewegung des Chaikin Oszillators:

Nach dieser Strategie müssen wir ein Signal mit der Bewegung (Movement) der Chaikin-Indikator-Kurve auf der Grundlage der letzten beiden Werte erhalten. Wenn der aktuelle Chaikin-Wert größer ist als der vorherige Wert, ist dies ein Signal für eine steigende Bewegung. Umgekehrt, wenn der aktuelle Chaikin-Wert niedriger ist als der vorherige Wert, ist dies ein Signal für eine rückläufige Bewegung.

Einfach,

Der aktuelle Chaikin-Wert > der vorherige Chaikin-Wert --> steigende Bewegung.

Der aktuelle Chaikin-Wert < der vorherige Chaikin-Wert --> fallende Bewegung.

  • Strategie drei: Chaikin Oszillator - Aufwärtstrend:

Auf der Grundlage dieser Strategie müssen wir während des Aufwärtstrends wissen, ob es eine starke Aufwärtsbewegung oder eine bärische Divergenz gibt, indem wir den aktuellen und den vorherigen Höchstwert sowie den aktuellen Chaikin-Wert und den vorherigen Chaikin-Wert auswerten. Wenn das aktuelle Hoch größer ist als das vorherige Hoch und der aktuelle Chaikin-Wert größer ist als der vorherige Chaikin-Wert, ist dies ein Signal für eine starke Aufwärtsbewegung während des Aufwärtstrends. Wenn der aktuelle Höchststand größer ist als der vorherige Höchststand und der aktuelle Chaikin-Wert niedriger ist als der vorherige Chaikin-Wert, ist dies ein Signal für eine bärische Divergenz.

Das aktuelle Hoch > das vorherige Hoch und der aktuelle Chaikin > der vorherige Chaikin --> Starke Aufwärtsbewegung im Aufwärtstrend.

Das aktuelle Hoch > das vorherige Hoch und der aktuelle Chaikin < der vorherige Chaikin --> bärische Divergenz.

  • Strategie vier: Chaikin Oscillator - Abwärtstrend:

Auf der Grundlage dieser Strategie müssen wir während des Abwärtstrends wissen, ob es eine starke Abwärtsbewegung oder eine Aufwärtsdivergenz gibt, indem wir die aktuellen und vorherigen Tiefstwerte sowie die aktuellen und vorherigen Chaikin-Werte auswerten. Wenn das aktuelle Tief unter dem vorherigen Tief liegt und der aktuelle Chaikin-Wert niedriger ist als der vorherige, handelt es sich um eine starke Abwärtsbewegung während des Abwärtstrends. Wenn das aktuelle Tief unter dem vorherigen liegt und der aktuelle Chaikin-Wert größer ist als der vorherige, ist dies ein Signal für eine bullische Divergenz.

Die aktuelle AD < die vorherige AD und das aktuelle Tief < das vorherige Tief --> Starke Abwärtsbewegung während des Abwärtstrends

Die aktuelle AD > die vorherige AD und das aktuelle Tief < das vorherige Tief --> Bullische Divergenz


Chaikin Oszillator - Blaupause der Strategie

In diesem Thema werden wir einen Schritt-für-Schritt-Entwurf entwerfen, der uns hilft, unser Handelssystem für jede der genannten Strategien zu erstellen, und ich glaube, dass dieser Schritt sehr wichtig ist, da er unsere Ideen so organisiert, dass wir unser Ziel erreichen. Damit sollten wir jetzt beginnen.

  • Strategie eins: Chaikin Oszillator Durchbruch:

Gemäß dieser Strategie müssen wir ein Handelssystem erstellen, das einen bestimmten Kommentar auf dem Chart zurückgibt, sobald eine bestimmte Bedingung erfüllt ist. Wir brauchen das Handelssystem, um den Wert des Chaikin Oszillators jeden Tick zu überprüfen, und wenn dieser Wert über dem Null-Niveau liegt, brauchen wir das Handelssystem, um auf dem Chart einen Kommentar mit einem Kaufsignal und dem aktuellen Chaikin-Wert jeweils in einer separaten Zeile anzuzeigen. Im anderen Szenario soll das Handelssystem einen Kommentar mit einem Verkaufssignal und dem aktuellen Chaikin-Wert jeweils in einer separaten Zeile zurückgeben, wenn der Chaikin-Wert unter die Nulllinie fällt.

Nachfolgend finden Sie eine Abbildung dieses Entwurfs.

Chaikin Oszillator Crossover Blaupause

  • Strategie zwei: Bewegung des Chaikin Oszillators:

Auf der Grundlage dieser Strategie muss das Handelssystem bei jedem Tick zwei Werte prüfen und entscheiden, welcher größer ist als der andere. Diese beiden Werte sind der aktuelle und der vorherige Chaikin Oszillator. Wenn der aktuelle Wert größer ist als der vorherige, muss das Handelssystem einen Kommentar mit zurückgeben: Chaikin Oszillator steigt, aktueller Chaikin-Val, vorheriger Chaikin-Val jeweils in einer eigenen Zeile. Wenn der aktuelle Wert niedriger ist als der vorherige, muss das Handelssystem einen Kommentar mit zurückgeben: Der Chaikin Oszillator fällt, der aktuelle Chaikin-Wert, das vorherige Chaikin-Wert.

Die folgende Abbildung zeigt einen Entwurf für diese Strategie.

Chaikin Oscillator - Bewegung Blaupause

  • Strategie drei: Chaikin Oszillator - Aufwärtstrend:

Bei dieser Strategie muss das Handelssystem bei jedem Tick vier Werte überprüfen, nämlich das aktuelle Hoch, das vorherige Hoch, den aktuellen Chaikin und den vorherigen Chaikin. Das Handelssystem muss nach der Überprüfung dieser Werte entscheiden, welcher Wert zwischen dem aktuellen und dem vorherigen Höchststand und zwischen dem aktuellen und dem vorherigen Chaikin-Wert größer ist als der andere. Wenn der aktuelle Höchststand größer ist als der vorherige Höchststand und der aktuelle Chaikin-Wert größer ist als der vorherige Chaikin-Wert, muss das Handelssystem einen Kommentar mit einer starken Aufwärtsbewegung während des Aufwärtstrends, dem aktuellen Höchststand, dem vorherigen Höchststand, dem aktuellen Chaikin-Wert und dem vorherigen Chaikin-Wert zurückgeben, wobei jeder Wert in einer eigenen Zeile steht. Im anderen Szenario, wenn das aktuelle Hoch größer ist als das vorherige Hoch und der aktuelle Chaikin-Wert niedriger ist als der vorherige Chaikin-Wert, benötigen wir das Handelssystem, um einen Kommentar auf dem Chart mit der bärischen Divergenz, dem aktuellen Hochwert, dem vorherigen Hochwert, dem aktuellen Chaikin-Wert und dem vorherigen Chaikin-Wert, jeweils in einer separaten Zeile, abzugeben.

Die folgende Abbildung zeigt die Grundzüge dieser Strategie.

Chaikin Oszillator - Blaupause

  • Strategie vier: Chaikin Oscillator - Abwärtstrend:

Auf der Grundlage dieser Strategie, müssen wir ein Handelssystem, das kontinuierlich überprüft vier Werte jeden Tick und diese Werte sind die aktuelle niedrige Wert, der vorherige niedrige Wert, der aktuelle Chaikin-Wert, und die vorherige Chaikin-Wert und dann entscheiden, wenn die aktuelle niedrige Wert niedriger ist als die vorherige niedrige Wert und die aktuelle Chaikin-Wert niedriger ist als die vorherige Chaikin-Wert, müssen wir das Handelssystem, um Kommentar auf dem Chart mit einer starken Abwärtsbewegung, aktuelle niedrige Wert, vorherige niedrige Wert, aktuelle Chaikin-Wert, und die vorherige Chaikin-Wert jeder Wert in einer separaten Zeile. Das andere Szenario, um die Divergenz zu erkennen, wenn der aktuelle niedrige Wert niedriger ist als der vorherige niedrige Wert und der aktuelle Chaikin-Wert größer ist als der vorherige Chaikin-Wert, brauchen wir das Handelssystem, um einen Kommentar mit der bullischen Divergenz, dem aktuellen niedrigen Wert, dem vorherigen niedrigen Wert, dem aktuellen Chaikin-Wert und dem vorherigen Chaikin-Wert zurückzugeben - jeder Wert in einer separaten Zeile.

Die folgende Abbildung zeigt diesen Blaupause.

Chaikin Oszillator - Abwärtstrend Blaupause

Chaikin Oszillator fällt

Chaikin Oszillator - Handelssystem

In diesem Teil werden wir lernen, wie man die genannten Strategien in ein Handelssystem umwandelt, das automatisch durch Programmierung oder Kodierung mit MQL5 funktioniert. Wir werden nun damit beginnen, ein einfaches Handelssystem zu programmieren, das den aktuellen Wert des Chaikin Oszillators automatisch als Kommentar auf dem Chart anzeigt, und wir werden dieses Handelssystem als Grundlage für unsere genannten Strategien verwenden. Für die Erstellung dieses Handelssystems gilt Folgendes.

  • Erstellen eines Arrays von Chaikin Oscillator vom Typ „double“ für die reellen Werte. „double“ ist einer der Gleitkommatypen, der zu den Datentypen gehört.
double chaiArray[];
  • Das Sortieren dieses erstellten Arrays anhand der aktuellen Daten erfolgt mit der Funktion „ArraySetAsSeries“, die einen booleschen Wert zurückgibt. Die Parameter der „ArraySetAsSeries“ sind:
    • Ein Array[]
    • Flag
ArraySetAsSeries(chaiArray,true);
  • Erstellung einer Integer-Variablen der chaiDef zur Definition des Chaikin Oszillators mit Hilfe der Funktion „iChaikin“. Diese Funktion gibt das Handle des Chaikin Oscillator Indikators zurück. Die Parameter dieser Funktion sind:
    • Symbol, um den Symbolnamen festzulegen, geben wir „_Symbol“ an, das auf das aktuelle Chart angewendet wird.
    • Zeitraum, um den Zeitrahmen festzulegen, geben wir „_Period“ an, der auf die aktuellen Zeitrahmen angewendet wird.
    • ma_period, um die Länge des gleitenden Durchschnitts festzulegen, setzen wir 3 als Standardwert.
    • ma_period, um die Länge des gleitenden Durchschnitts festzulegen, setzen wir 10 als Standardwert.
    • ma_method, um den Typ des gleitenden Durchschnitts zu bestimmen, wird der exponentielle gleitende Durchschnitt (MODE_EMA) verwendet.
    • applied_volume, um die Art des Volumens zu bestimmen, wird das Tick-Volumen (VOLUME_TICK) verwendet.
int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);
  • Kopieren der Preisdaten in das erstellte Array mit Hilfe der Funktion „CopyBuffer“, die die Anzahl der kopierten Daten oder -1 im Falle eines Fehlers zurückgibt. Die Parameter dieser Funktion sind:
    • indicator_handle, ermöglicht die Handhabe des Indikators „chaiDef“.
    • buffer_num, um die Nummer des Indikatorpuffers festzulegen, setzen wir 0.
    • start_pos, um die Startposition festzulegen, setzen wir 0.
    • count, um den zu kopierenden Betrag festzulegen, stellen wir 3 ein.
    • buffer[], um das zu kopierende Ziel-Array zu bestimmen, legen wir „chaiArray“ fest.
CopyBuffer(chaiDef,0,0,3,chaiArray);
  • Abruf des Chaikin Oszillator-Wertes mit der Funktion „NormalizeDouble“ vom Typ double nach Erstellung einer double-Variablen „chaiVal“. Die Parameter des „Normalizedouble“ sind:
    • Wert, um die normalisierte Zahl zu bestimmen, geben wir „chaiArray[0]“ an, wir verwenden 0, um den aktuellen Wert zurückzugeben
    • Zahl, um die Anzahl der Nachkommastellen zu bestimmen, wir verwenden 6.
int chaiVal = NormalizeDouble(chaiArray[0],6);
  • Verwendung der Kommentarfunktion, um den aktuellen Wert des Chaikin Oszillators als Kommentar im Chart anzuzeigen.
Comment("Chaikin Oscillator Value is ",chaiVal);

Im Folgenden finden Sie den vollständigen Code zur Erstellung dieses einfachen Handelssystems.

//+------------------------------------------------------------------+
//|                                    Simple Chaikin Oscillator.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiVal = NormalizeDouble(chaiArray[0],6);

   Comment("Chaikin Oscillator Value is ",chaiVal);

  }
//+------------------------------------------------------------------+

Nach dem Kompilieren dieses Codes finden wir den Experten im Ordner „Expert Advisors“ im Navigator-Fenster, wie in der folgenden Abbildung dargestellt.

Nav

Wenn wir diesen Expert Advisor ausführen wollen, ziehen wir ihn auf das Chart, woraufhin das folgende Fenster des Programms wie folgt erscheint.

Einfacher Chaikin Oszillator Fenster

Durch Drücken von „OK“ wird der Experte wie folgt an das Chart gestartet:

Einfacher Chaikin Oszillator gestartet

Wie wir in der rechten Ecke des vorherigen Bildes sehen können, läuft der Experte auf dem Chart. Dann können wir die gleichen Signale wie die folgenden erzeugen.

Chaikin Oszillator - Signal

Wie im vorangegangenen Testbeispiel zu sehen ist, befindet sich in der oberen linken Ecke des Charts ein Kommentar mit dem aktuellen Wert des Chaikin Oszillators. Wenn wir sicherstellen wollen, dass der generierte Wert mit dem generierten Wert des eingebauten Indikators im MetaTrader5 übereinstimmt, können wir den eingebauten Indikator mit den Parametern einfügen, nachdem wir den Expertenberater angehängt haben, und wir werden die gleichen Werte wie die folgenden finden.

Chaikin Oszillator gleiches Signal

Wie wir in der rechten Ecke des Charts sehen können, läuft der Expert Advisor mit dem Chart, und in der linken Ecke finden wir den vom Experten generierten Wert, der mit dem Wert des eingefügten Indikators im unteren Fenster übereinstimmt.

  • Strategie eins: Chaikin Oszillator Durchbruch:

Das Folgende ist der vollständige Code zum Erstellen eines Handelssystems für diese Strategie:

//+------------------------------------------------------------------+
//|                                 Chaikin Oscillator Crossover.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiVal = NormalizeDouble(chaiArray[0],6);
   
   if(chaiVal>0)
   {
   Comment("Buy signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

   if(chaiVal<0)
   {
   Comment("Sell signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

  }
//+------------------------------------------------------------------+

Unterschiede in diesem Code:

Bedingungen für den Chaikin Oszillator Crossover:

im Falle eines Kaufsignals:

   if(chaiVal>0)
   {
   Comment("Buy signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

Im Falle eines Verkaufssignals:

   if(chaiVal<0)
   {
   Comment("Sell signal","\n","Chaikin Oscillator Value is ",chaiVal);
   }

Nach dem Kompilieren dieses Codes finden wir den Experten im Navigatorfenster des MetaTrader 5 wie folgt.

Nav1

Nach dem Ziehen und Ablegen auf dem Chart wird das Fenster des Experten wie folgt aussehen:

Chaikin Oszillator-Weiche Fenster

Durch Drücken von „OK“ wird der Experte wie folgt an das Chart gestartet:

Chaikin Oszillator Crossover gestartet

Wie wir in der oberen rechten Ecke sehen können, ist der Chaikin Oscillator Crossover-Experte an das Chart angehängt, und jetzt können wir die generierten Signale entsprechend dieser Strategie sehen. Nachfolgend finden Sie ein Beispiel.

im Falle eines Kaufsignals:

Chaikin Oscillator Crossover - Kaufsignal

Wie wir in der oberen linken Ecke des Charts sehen können, wurde das Kaufsignal generiert, als der Wert des Chaikin Oszillators den Nullpunkt überschritt.

Im Falle eines Verkaufssignals:

Chaikin Oscillator Crossover - Verkaufssignal

Wie wir in der oberen linken Ecke des Charts sehen können, wurde das Verkaufssignal ausgelöst, als der Wert des Chaikin Oszillators unter den Nullwert fiel.

  • Strategie zwei: Bewegung des Chaikin Oszillators:

Das Folgende ist der vollständige Code zum Erstellen eines Handelssystems für diese Strategie:

//+------------------------------------------------------------------+
//|                                  Chaikin Oscillator Movement.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double chaiArray[];

   ArraySetAsSeries(chaiArray,true);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

   if(chaiCurrentVal>chaiPrevVal)
     {
      Comment("Chaikin Oscillator is rising","\n",
              "Chaikin Oscillator Cuurent Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

   if(chaiCurrentVal<chaiPrevVal)
     {
      Comment("Chaikin Oscillator is declining","\n",
              "Chaikin Oscillator Cuurent Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

  }
//+------------------------------------------------------------------+

Unterschiede in diesem Code sind die gleichen wie die folgenden:

Festlegung der aktuellen und vorherigen Chaikin Oszillator-Werte.

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

Bedingungen der Strategie.

Bei steigenden Werten:

   if(chaiCurrentVal>chaiPrevVal)
     {
      Comment("Chaikin Oscillator is rising","\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Bei fallenden Werten:

   if(chaiCurrentVal<chaiPrevVal)
     {
      Comment("Chaikin Oscillator is declining","\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Nachdem wir diesen Code kompiliert haben, können wir ihn im Navigator von MetaTrader 5 wie folgt finden:

 Nav2

Nach dem Ziehen und Ablegen des Experten auf dem Chart sehen Sie das Programmfenster wie folgt:

Bewegung des Chaikin Oszillators Fenster

Durch Drücken von „OK“ wird der Experte wie folgt an das Chart gestartet:

Chaikin Oszillator Bewegung gestartet

Das Folgende ist ein Beispiel für generierte Signale, die auf dieser Strategie basieren:

Bei steigenden aktuellen Daten:

Bewegung des Chaikin Oszillators - aktuell steigendes Signal

Bei steigenden früheren Daten:

Bewegung des Chaikin Oszillators - steigendes Signal mit früheren Werten

Wie in den vorherigen Chart zu sehen ist, gibt es in der oberen linken Ecke drei Linien:

  • Der Chaikin Oszillator steigt
  • Chaikin Oszillator, aktueller Wert
  • Chaikin Oszillator, vorheriger Wert

Das andere Szenario mit fallenden aktuellen Daten,

Bewegung des Chaikin Oszillators - fallendes Signal mit aktuellen Daten

Bei fallenden, vorherigen Daten,

Chaikin Oszillator-Bewegung - rückläufiges Signal mit vorherigen Daten

Wie in den vorangegangenen Chart zu sehen ist, befindet sich in der linken oberen Ecke ein Kommentar auf dem Chart:

Der Chaikin Oszillator fällt.

Aktueller Wert des Chaikin Oszillators.

Vorheriger Wert des Chaikin Oszillators.

  • Strategie drei: Chaikin Oszillator - Aufwärtstrend:

Das Folgende ist der vollständige Code zum Erstellen eines Handelssystems für diese Strategie:

//+------------------------------------------------------------------+
//|                                 Chaikin Oscillator - Uptrend.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double chaiArray[];
   MqlRates priceArray[];

   ArraySetAsSeries(chaiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);


   double currentHighVal=NormalizeDouble(priceArray[2].high,6);
   double prevHighVal=NormalizeDouble(priceArray[1].high,6);

   if(currentHighVal>prevHighVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Strong Up Move During The Uptrend","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }


   if(currentHighVal>prevHighVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Bearish Divergence","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

  }
//+------------------------------------------------------------------+

Unterschiede in diesem Code sind die gleichen wie die folgenden:

Erstellen von zwei Arrays für ChaiArray, wie wir es gelernt haben, und das priceArray unter Verwendung der Funktion „MqlRates“, die Informationen über Preise, Volumen und Spread speichert.

ArraySetAsSeries(chaiArray,true);
int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

Festlegung der Werte für den aktuellen und den vorherigen Chaikin Oszillator.

int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
int chaiPrevVal = NormalizeDouble(chaiArray[1],6);

Festlegung der Werte für den aktuellen und den vorherigen Höchststand.

double currentHighVal=NormalizeDouble(priceArray[2].high,6);
double prevHighVal=NormalizeDouble(priceArray[1].high,6);

Bedingungen für diese Strategie:

Im Falle einer starken Bewegung während des Aufwärtstrends:

   if(currentHighVal>prevHighVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Strong Up Move During The Uptrend","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Im Falle einer bärischen Divergenz:

   if(currentHighVal>prevHighVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Bearish Divergence","\n",
              "Current High Value is: ",currentHighVal,"\n",
              "Previous High Value is: ",prevHighVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Nachdem wir diesen Code kompiliert haben, können wir ihn im Navigator von MetaTrader 5 wie folgt finden:

 Nav3

Durch Ziehen und Ablegen auf dem Chart, um den Experten auszuführen, wird das Fenster des Experten angezeigt.

Chaikin Oszillator - Aufwärtstrend Fenster

Nachdem Sie auf „OK“ geklickt haben, sehen Sie, dass der Experte an das Chart angehängt ist, wie in der folgenden Abbildung dargestellt.

Chaikin Oszillator - Aufwärtstrend gestartet

Im Folgenden finden Sie Beispiele für generierte Signale, die auf diesem Handelssystem basieren.

Im Falle einer starken Bewegung bei den aktuellen Daten:

Chaikin Oszillator - Aufwärtstrend - stark - aktuelle Daten

Im Falle einer starken Bewegung mit den vorherigen Daten:

Chaikin Oszillator - Aufwärtstrend - stark - vorherigen Daten

Wie in den beiden vorangegangenen Charts zu sehen ist, befinden sich in der linken oberen Ecke des Charts fünf Zeilen mit Kommentaren, und zwar folgende:

  •  Eine starke Aufwärtsbewegung während des Aufwärtstrends
  • Der aktuelle hohe Wert
  • Der vorherige Höchstwert
  • Der aktuelle Chaikin-Wert
  • Der vorherige Chaikin-Wert

Im anderen Szenario, wenn wir eine bärische Divergenz mit aktuellen Daten haben, können wir ein Beispiel für diesen Fall wie das folgende sehen:

Chaikin Oszillator - Aufwärtstrend - Divergenz - aktuelle Daten

Im Falle einer bärischen Divergenz zu vorherigen Daten

Chaikin Oszillator - Aufwärtstrend - Divergenz - vorherige Daten

Wie wir in den beiden vorangegangenen Charts sehen, haben wir einen Kommentar mit fünf Zeilen:

Bärische Divergenz,

Der aktuelle Höchstwert.

Der vorherige Höchstwert.

Der aktuelle Chaikin-Wert.

Der vorherige Chaikin-Wert.

  • Strategie vier: Chaikin Oscillator - Abwärtstrend:

Das Folgende ist der vollständige Code zum Erstellen eines Handelssystems für diese Strategie:

//+------------------------------------------------------------------+
//|                               Chaikin Oscillator - Downtrend.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
void OnTick()
  {
   double chaiArray[];
   MqlRates priceArray[];

   ArraySetAsSeries(chaiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,priceArray);

   int chaiDef = iChaikin(_Symbol,_Period,3,10,MODE_EMA,VOLUME_TICK);

   CopyBuffer(chaiDef,0,0,3,chaiArray);

   int chaiCurrentVal = NormalizeDouble(chaiArray[0],6);
   int chaiPrevVal = NormalizeDouble(chaiArray[1],6);


   double currentLowVal=NormalizeDouble(priceArray[2].low,6);
   double prevLowVal=NormalizeDouble(priceArray[1].low,6);

   if(currentLowVal<prevLowVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Strong Down Move During The Downtrend","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }


   if(currentLowVal<prevLowVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Bullish Divergence","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

  }
//+------------------------------------------------------------------+

Der Unterschied in diesem Code sind die Bedingungen dieser Strategie:

Im Falle einer starken Abwärtsbewegung während des Abwärtstrends,

   if(currentLowVal<prevLowVal&&chaiCurrentVal<chaiPrevVal)
     {
      Comment("Strong Down Move During The Downtrend","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Im Falle einer bullischen Divergenz:

   if(currentLowVal<prevLowVal&&chaiCurrentVal>chaiPrevVal)
     {
      Comment("Bullish Divergence","\n",
              "Current Low Value is: ",currentLowVal,"\n",
              "Previous Low Value is: ",prevLowVal,"\n",
              "Chaikin Oscillator Current Value is ",chaiCurrentVal,"\n",
              "Chaikin Oscillator Previous Value is ",chaiPrevVal);
     }

Nach dem Kompilieren dieses Codes finden wir den Experten im Navigatorfenster des MetaTrader 5 wie folgt.

 Nav4

Wenn Sie diesen Experten auf das Chart ziehen, sehen Sie das Fenster dieses Programms wie das folgende:

Chaikin Oszillator - Abwärtstrend Fenster

Nachdem Sie auf „OK“ geklickt haben, sehen Sie, dass der Experte an das Chart angehängt ist, wie in der folgenden Abbildung dargestellt.

Chaikin Oszillator - Abwärtstrend gestartet

Nachfolgend finden Sie Beispiele für Signale, die auf der Grundlage dieser Strategie bei Tests erzeugt wurden:

Im Falle eines starken Rückgangs während des Abwärtstrends mit aktuellen Daten,

Chaikin Oszillator - Abwärtstrend - stark - aktuelle Daten

Im Falle eines starken Rückgangs mit vorherigen Daten,

Chaikin Oszillator - Abwärtstrend - stark - vorherigen Daten

Wie wir in den beiden vorangegangenen Charts sehen, haben wir einen Kommentar mit fünf Zeilen:

  • Starke Abwärtsbewegung während des Abwärtstrends
  • Der aktuelle niedrige Wert
  • Der vorherige niedrige Wert
  • Der aktuelle Chaikin-Wert
  • Der vorherige Chaikin-Wert

Im anderen Szenario, der bullischen Divergenz, können wir Beispiele für generierte Signale sehen, wie die folgenden:

Im Falle einer bullischen Divergenz mit den aktuellen Daten,

Chaikin Oszillator - Abwärtstrend - Divergenz - aktuelle Daten

Bullische Divergenz mit vorherigem Datenfenster:

Chaikin Oszillator - Abwärtstrend - Divergenz - vorherige Daten 

Wie wir in den beiden vorangegangenen Charts sehen, haben wir einen Kommentar mit fünf Zeilen:

  • Bullische Divergenz:
  • Der aktuelle niedrige Wert
  • Der vorherige niedrige Wert
  • Der aktuelle Chaikin-Wert
  • Der vorherige Chaikin-Wert


Schlussfolgerung

Nach den vorangegangenen Themen haben wir den Chaikin Oszillator im Detail kennen gelernt. Wir haben gelernt, was er ist, was er misst, wie wir ihn manuell berechnen können und wie wir den eingebauten MetaTrader 5-Indikator verwenden und einfügen können. Wir haben auch gelernt, wie wir ihn einfach auf der Grundlage des Hauptkonzepts dieses Indikators verwenden können, da wir mehr als nur eine Strategie gelernt haben:

  • Chaikin Oscillator Crossover: um Kauf- und Verkaufssignale auf der Grundlage des Durchschreitens der Null zu erhalten.
  • Chaikin Oscillator Movement: um Signale zu erhalten, die uns über die Bewegung der Indikatorlinie informieren, ob sie ansteigend oder abfallend ist.
  • Chaikin Oscillator - Aufwärtstrend: um Signale zu erhalten, wenn wir eine starke Aufwärtsbewegung während des Aufwärtstrends haben oder wenn es eine bärische Divergenz gibt.
  • Chaikin Oscillator - Abwärtstrend: um Signale zu erhalten, wenn wir eine starke Abwärtsbewegung während des Abwärtstrends haben oder wenn es eine bullische Divergenz gibt.

Wir haben auch eine Blaupause für jede Strategie entworfen, um uns zu helfen, ein Handelssystem für jede von ihnen zu erstellen, da dies ein sehr wichtiger Schritt ist, um unsere Idee zu organisieren und unser Ziel reibungslos zu erreichen. Wir haben gelernt, wie man ein Handelssystem für jede Strategie erstellt, um automatisch Signale zu generieren, nachdem man sie im MetaTrader 5 ausgeführt hat, um unseren Handel zu erleichtern und zu verbessern und ein besseres Ergebnis zu erzielen, zusätzlich zu unserer Zeitersparnis.

Ich bekräftige nochmals, dass Sie jede Strategie testen sollten, bevor Sie sie auf Ihrem realen Konto anwenden, da es nichts gibt, was für jeden geeignet ist. Worauf ich mich hier konzentrieren muss, ist, das Gelernte anzuwenden und selbst zu üben, wenn Sie Ihre Programmierfähigkeiten verbessern wollen, denn das Üben ist ein wichtiger Faktor in jedem Lern- und Entwicklungsprozess. Wenn Sie diesen Artikel für Sie nützlich fanden und weitere ähnliche Artikel lesen möchten, können Sie meine vorherigen Artikel in dieser Serie lesen, um zu erfahren, wie Sie ein einfaches Handelssystem auf der Grundlage der beliebtesten technischen Indikatoren entwerfen.

Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalartikel: https://www.mql5.com/en/articles/11242

Neuronale Netze leicht gemacht (Teil 17): Reduzierung der Dimensionalität Neuronale Netze leicht gemacht (Teil 17): Reduzierung der Dimensionalität
In diesem Teil setzen wir die Diskussion über die Modelle der Künstlichen Intelligenz fort. Wir untersuchen vor allem Algorithmen für unüberwachtes Lernen. Wir haben bereits einen der Clustering-Algorithmen besprochen. In diesem Artikel stelle ich eine Variante zur Lösung von Problemen im Zusammenhang mit der Dimensionsreduktion vor.
Einen handelnden Expert Advisor von Grund auf neu entwickeln (Teil 18): Neues Auftragssystems (I) Einen handelnden Expert Advisor von Grund auf neu entwickeln (Teil 18): Neues Auftragssystems (I)
Dies ist der erste Teil des neuen Auftragssystems. Seit wir begonnen haben, diesen EA in unseren Artikeln zu dokumentieren, hat er verschiedene Änderungen und Verbesserungen erfahren, wobei das gleiche Modell des Auftragssystems auf dem Chart beibehalten wurde.
DoEasy. Steuerung (Teil 8): Objektkategorien von Basis-WinForms zur Steuerung von GroupBox- und CheckBox DoEasy. Steuerung (Teil 8): Objektkategorien von Basis-WinForms zur Steuerung von GroupBox- und CheckBox
Der Artikel befasst sich mit der Erstellung von ‚GroupBox‘ und ‚CheckBox‘ WinForms Objekten, sowie der Entwicklung von Basisobjekten für WinForms Objektkategorien. Alle erstellten Objekte sind noch statisch, d.h. sie können nicht mit der Maus interagieren.
Datenwissenschaft und maschinelles Lernen (Teil 06): Gradientenverfahren Datenwissenschaft und maschinelles Lernen (Teil 06): Gradientenverfahren
Der Gradientenverfahren spielt eine wichtige Rolle beim Training neuronaler Netze und vieler Algorithmen des maschinellen Lernens. Es handelt sich um einen schnellen und intelligenten Algorithmus, der trotz seiner beeindruckenden Arbeit von vielen Datenwissenschaftlern immer noch missverstanden wird - sehen wir uns an, worum es geht.