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

Lernen Sie, wie man ein Handelssystem mit dem Force Index entwirft

MetaTrader 5Handel | 11 August 2022, 11:21
462 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Einführung

Hier ist ein neuer Artikel aus unserer Serie darüber, wie man ein Handelssystem basierend auf den beliebtesten technischen Indikatoren entwirft. In diesem Artikel werden wir lernen, wie man ein Handelssystem mit dem Indikator Force Index erstellt. Was dieser Indikator im Einzelnen ist, werden wir in den folgenden Abschnitten erfahren:

  1. Force Index - Definition
  2. Force Index - Strategie
  3. Force Index - Blaupause der Strategie
  4. Force Index - Handelssystem
  5. Schlussfolgerung

Anhand der zuvor genannten Themen werden wir mehr über diesen technischen Indikator erfahren. Wir werden lernen, was ein Force Index ist, was er misst und wie wir ihn berechnen können, indem wir uns mit der Definition des Force Index beschäftigen. Nachdem wir das Grundkonzept dieses Indikators verstanden haben, werden wir lernen, wie man einfache Strategien anwendet, und das werden wir durch das Thema der Strategie des Force Index lernen. Wenn es darum geht, ein Handelssystem für jede Strategie zu schaffen, finden wir, dass wir unsere Ideen organisieren müssen, um das reibungslos zu tun, so werden wir einen Entwurf für jede erwähnte Strategie entwerfen, um uns zu helfen, unser Ziel reibungslos und effektiv zu erreichen, werden wir das durch das Thema der Strategie-Blaupause des Force Index tun. Nach der Organisation unserer Ideen durch eine Schritt-für-Schritt-Blaupause, wird unser Handelssystem in der MetaTrader 5-Handelsplattform ausgeführt werden, um Signale automatisch und genau zu generieren, wie wir das durch mit dem Thema des Force Index Handelssystems tun.

Wir werden MQL5 (MetaQuates Language) verwenden, um den Code für das Handelssystem zu schreiben, und dieses MQL5 ist in das MetaTrader 5-Handelsterminal integriert. Wenn Sie lernen möchten, wie man sie herunterlädt und verwendet, können Sie das Thema Schreiben von MQL5-Code in MetaEditor in einem früheren Artikel lesen. Ich muss Ihnen raten, das Gelernte anzuwenden, da es Ihnen helfen wird, Ihr Verständnis zu vertiefen, zusätzlich zu der Notwendigkeit, jede Strategie zu testen, bevor Sie sie auf Ihrem echten Konto anwenden.

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 nun mit unseren Themen, um mehr über diesen Force Index zu erfahren.


Force Index - Definition

In diesem Thema werden wir mehr über den Force Index-Indikator erfahren. Wir werden lernen, was der Force Index-Indikator ist, was er misst und wie er berechnet werden kann. Mein Ansatz ist, dass wir, wenn wir lernen und die Wurzeln der Dinge verstehen, nicht nur in der Lage sein werden, diese Dinge effektiv zu nutzen, sondern wir werden auch mehr Erkenntnisse darüber gewinnen, wie wir weitere Ideen in Bezug auf diese Dinge entwickeln können. Der Force Index wurde von Alexander Elder entwickelt und in seinem erstaunlichen Buch „Trading for a living“ vorgestellt. Dieser Indikator misst die Kraft, die hinter der Bewegung steht, oder identifiziert potenzielle Wendepunkte. Dieser Indikator Force Index verwendet in seiner Berechnung den Preis und das Volumen und hilft so, die Kraft hinter einer Marktbewegung zu messen.

Wenn wir wissen wollen, wie wir diesen Force Index-Indikator manuell berechnen können, um das grundlegende Konzept dahinter zu verstehen, können wir das in den folgenden zwei einfachen Schritten tun:

1- Force Index der 1-Periode = (Close der 1-Periode - Close der Vorperiode) * Volumen

2- Force Index der 13-Periode = 13-Periode des EMA des Force Index der 1-Periode

Heutzutage brauchen wir das nicht mehr manuell zu berechnen, da wir es als eingebauten Indikator in unserer MetaTrader 5 Handelsplattform finden können und alles, was wir brauchen, ist, es aus den verfügbaren Indikatoren im MetaTrader 5 Handelsterminal auszuwählen. Während wir den MetaTrader 5 öffnen, drücken wir auf die Registerkarte Einfügen --> Indikatoren --> Oszillatoren --> Force Index.

Im Folgenden finden Sie ein Bild dazu:

Force Index Indikator auswählen

Nachdem Sie den „Force Index“ ausgewählt haben, finden Sie die Parameter dieses Indikators wie folgt:

Force Index Indikator param

1- So bestimmen Sie die gewünschte Periodenlänge des Force Index. Wir werden (13) als Standardeinstellung für den Indikator verwenden.

2- Bestimmen des Typs des gleitenden Durchschnitts. Wir werden die exponentielle Variante verwenden.

3- Bestimmen des Volumentyp. Wir werden das Tickvolumen verwenden.

4- Bestimmen der Farbe der Indikatorlinie.

5- Um den Stil der WPR-Linie zu bestimmen.

6- Linienstärke des Indikators.

Danach finden wir den Indikator, der auf dem Chart gestartet ist, wie im Folgenden dargestellt:

Force Index Indikator gestartet

Wie wir im unteren Fenster des vorherigen Charts sehen können, ist der Force Index auf dem Chart gestartet und seine Linie oszilliert über und unter dem Null.


Force Index - Strategie

In diesem Thema werden wir lernen, wie man den Force Index auf der Grundlage des ihm zugrunde liegenden Konzepts verwendet. Wir werden einfache Strategien verwenden, um das grundlegende Konzept zu verstehen, wie Sie diesen Indikator verwenden können und wie Sie damit ein Handelssystem erstellen können. Sie müssen jede dieser Strategien testen, bevor Sie sie auf Ihrem echten Konto verwenden, um sicherzustellen, dass sie für Ihren Handel geeignet sind, da das Hauptziel hier nur die Ausbildung ist.

  • Strategie eins: Force Index - Trend Identifier:

Auf der Grundlage dieser Strategie müssen wir Auf- oder Abwärtssignale erhalten, die auf dem Crossover zwischen dem Force Index-Indikator und der Null basieren. Wenn der Force Index über dem Null liegt, ist dies ein Signal für eine Aufwärtsbewegung. Umgekehrt ist es ein Signal für eine Abwärtsbewegung, wenn der Force Index unter dem Null liegt.

Einfach,

Force Index > Null --> Aufwärtsbewegung.

Force Index < Null --> Abwärtsbewegung.

  • Strategie zwei: Force Index - Aufwärts oder Divergenz:

Auf der Grundlage dieser Strategie müssen wir ein Signal erhalten, wenn der Markt eine starke Aufwärtsbewegung oder Divergenz erfährt. Wenn der aktuelle Höchstwert größer ist als der vorherige Höchstwert und gleichzeitig der aktuelle Wert des Force Index größer ist als der vorherige Wert, ist dies ein Signal für eine starke Aufwärtsbewegung. Wenn das aktuelle Hoch größer ist als das vorherige Hoch und gleichzeitig der aktuelle Force Index niedriger ist als der vorherige, ist dies ein Signal für eine bärische Divergenz.

Einfach,

Aktuelles Hoch > vorheriges Hoch und aktueller Force Index > vorheriger Force Index --> starke Aufwärtsbewegung.

Aktuelles Hoch > vorheriges Hoch und aktueller Force Index < vorheriger Force Index --> bärische Divergenz.

  • Strategie drei: Force Index - Abwärts oder Divergenz:

Bei dieser Strategie müssen wir das entgegengesetzte Signal von Strategie zwei erhalten. Wir müssen ein Signal für eine starke Abwärtsbewegung oder eine Divergenz auf der Grundlage bestimmter Bedingungen erhalten. Wenn das aktuelle Tief niedriger ist als das vorherige Tief und der aktuelle Force Index niedriger ist als der vorherige, ist dies ein Signal für eine starke Abwärtsbewegung. Wenn das aktuelle Tief unter dem vorherigen liegt und der aktuelle Force Index größer ist als der vorherige, ist dies ein Signal für eine bullische Divergenz.

Einfach,

Aktuelles Tief < vorheriges Tief und aktueller Force Index < vorheriger Force Index --> starke Abwärtsbewegung.

Aktuelles Tief < vorheriges Tief und aktueller Force Index > vorheriger Force Index --> bullische Divergenz.

  • Strategie vier: Force Index Signale:

Auf der Grundlage dieser Strategie müssen wir Kauf- und Verkaufssignale erhalten, die auf bestimmten Bedingungen basieren. Wenn der Schlusskurs über dem exponentiellen gleitenden Durchschnitt liegt, der vorherige Force Index kleiner als Null ist und der aktuelle Force Index größer als Null ist, handelt es sich um ein Kaufsignal. Wenn der Schlusskurs unter dem exponentiellen gleitenden Durchschnitt liegt, der vorherige Force Index größer als Null und der aktuelle Force Index kleiner als Null ist, ist dies ein Verkaufssignal.

Einfach,

Schlusskurs > EMA, vorheriger Force Index < Null und aktueller Force Index > Null --> Kaufsignal.

Schlusskurs < EMA, vorheriger Force Index > Null und aktueller Force Index < Null --> Verkaufssignal.


Force Index - Blaupause der Strategie

In diesem Thema werden wir einen Schritt-für-Schritt-Plan entwerfen, der uns hilft, unser Handelssystem zu erstellen. Meiner Meinung nach ist dies ein wichtiger Schritt, da er uns hilft, unsere Ideen zu organisieren, um unser Ziel zu erreichen und unser Handelssystem reibungslos zu erstellen.

  • Strategie eins:  Force Index - Trend Identifier:

Nach dieser Strategie müssen wir ein Handelssystem erstellen, das uns automatische Signale mit bullischen oder bärischen Bewegungen als Kommentar auf dem Chart gibt. Wir brauchen den Experten, um den aktuellen Force Index für jeden Tick zu überprüfen und seine Position vom Null aus zu bestimmen. Wenn der aktuelle Force Index größer ist als die Null, soll der Experte Kommentare auf dem Chart mit der Aufwärtsbewegung und dem aktuellen Force Index-Wert abgeben. Andererseits, wenn der aktuelle Force Index unter dem Null liegt, brauchen wir den Experten, um Kommentare auf dem Chart mit der Abwärtsbewegung und dem aktuellen Force Index-Wert zu schreiben.

Force Index - Trend-Identifikator Blaupause

  • Strategie zwei: Force Index - Aufwärts oder Divergenz:

Auf der Grundlage dieser Strategie können wir ein Handelssystem entwickeln, das uns ein Signal bei einer starken Aufwärtsbewegung oder einer bärischen Divergenz gibt. Wir brauchen das Handelssystem, um kontinuierlich vier Werte zu überprüfen, und diese Werte sind die aktuellen hohen und vorherigen hohen Werte, und entscheiden, welche größer ist als die anderen und die gleichen mit der aktuellen Force Index, und die vorherige Force Index-Werte. Wenn der aktuelle Höchststand größer ist als der vorherige Höchststand und der aktuelle Force Index größer ist als der vorherige Force Index, muss der Experte Folgendes als Kommentar auf dem Chart zurückgeben: jeden Wert in einer separaten Zeile:

  • Starke Aufwärtsbewegung
  • Aktueller Höchstwert
  • Vorheriges Hoch
  • Aktueller Force Index-Wert
  • Vorheriger Force Index-Wert

Wenn der aktuelle Höchststand größer ist als der vorherige Höchststand und der aktuelle Force Index niedriger ist als der vorherige Force Index, soll der Experte Folgendes als Kommentar auf dem Chart ausgeben: jeden Wert in einer separaten Zeile:

  • Bärische Divergenz,
  • Aktueller Höchstwert
  • Vorheriges Hoch
  • Aktueller Force Index-Wert
  • Vorheriger Force Index-Wert

Nachfolgend finden Sie eine Abbildung dieses Entwurfs.

Force Index - Aufwärts oder Divergenz Blaupause

  • Strategie drei: Force Index - Abwärts oder Divergenz:

Nach dieser Strategie können wir ein Handelssystem entwickeln, das automatisch Signale für starke Abwärtsbewegungen oder bullische Divergenzen liefert. Wir brauchen den Experten, um vier Werte zu prüfen, den aktuellen Tiefstwert und den vorherigen Tiefstwert, und zu entscheiden, welcher größer ist als der andere. Wir brauchen den Experten auch, um den aktuellen Force Index und den vorherigen Force Index zu prüfen und zu entscheiden, welcher größer ist als der andere. Wenn der aktuelle Tiefstwert niedriger ist als der vorherige Tiefstwert und der aktuelle Force Index niedriger ist als der vorherige Force Index, muss der Experte die folgenden Werte als Kommentar auf dem Chart ausgeben, jeden Wert in einer eigenen Zeile:

  • Starke Abwärtsbewegung,
  • Aktueller Tiefstwert
  • Vorheriger Tiefstwert
  • Aktueller Force Index-Wert
  • Vorheriger Force Index-Wert

Wenn das aktuelle Tief niedriger ist als das vorherige Tief und der aktuelle Force Index größer ist als der vorherige Force Index, muss der Experte die folgenden Werte in einem Kommentar auf dem Chart ausgeben, jeden Wert in einer separaten Zeile:

  • Bullische Divergenz:
  • Aktueller Tiefstwert
  • Vorheriger Tiefstwert
  • Aktueller Force Index-Wert
  • Vorheriger Force Index-Wert

Nachfolgend finden Sie eine Abbildung dieses Entwurfs.

Force Index - Abwärts- oder Divergenz-BlaupausetitlealtForce Index - Abwärts oder Divergenz Blaupausealt

  • Strategie vier: Force Index Signale:

Auf der Grundlage dieser Strategie müssen wir ein Handelssystem erstellen, das auf der Grundlage bestimmter Bedingungen Kauf- oder Verkaufssignale liefert. Wir brauchen den Experten, um vier Werte kontinuierlich zu überprüfen, und diese Werte sind der Schlusskurs, der gleitende Durchschnitt, der aktuelle Force Index und der vorherige Force Index. Wenn der Schlusskurs größer ist als der aktuelle gleitende Durchschnittswert, der vorherige Force Index kleiner als Null und der aktuelle Force Index größer als das Null-Niveau ist, muss der Experte die folgenden Werte als Kommentar auf dem Chart ausgeben, jeden Wert in einer separaten Zeile:

  • Kaufsignal
  • Aktueller Schlusskurs
  • Aktueller exponentieller gleitender Durchschnitt
  • Aktueller Force Index-Wert
  • Vorheriger Force Index-Wert

Wenn der Schlusskurs unter dem aktuellen gleitenden Durchschnitt liegt, der vorherige Force Index-Wert größer als Null ist und der aktuelle Force Index-Wert kleiner als Null ist, muss der Experte die folgenden Werte als Kommentar auf dem Chart ausgeben, jeden Wert in einer separaten Zeile:

  • Verkaufssignal
  • Aktueller Schlusskurs
  • Aktueller exponentieller gleitender Durchschnitt
  • Aktueller Force Index-Wert
  • Vorheriger Force Index-Wert

Im Folgenden wird diese Strategie vorgestellt:

Force Index Signale  Blaupause

Force Index - Handelssystem

In diesem Thema werden wir im Detail lernen, wie man ein Handelssystem für jede erwähnte Strategie zu erstellen, um automatische Signale auf MetaTrader 5 auf der Grundlage jeder erwähnten Strategie nach dem Schreiben von Codes von MQL5 dieser Strategien zu erhalten. Zunächst werden wir eine einfache Handelsstrategie erstellen, mit der ein Kommentar auf dem Chart mit dem aktuellen Force Index-Wert erzeugt werden kann, der als Grundlage für unsere genannten Strategien dient.

  • Erstellen eines Arrays für das fiArray des Typs „double“.
double fiArray[];
  • Ausrichten des Arrays mithilfe der ArraySetAsSeries-Funktion, die einen booleschen Wert (true oder false) zurückgibt. Die Parameter dieser Funktion sind:
    • array[]
    • Flag
ArraySetAsSeries(fiArray,true);
  • Definieren des Volumens mithilfe von iVolumes nach dem Erstellen der Variablen für VolDef. Die Funktion iForce gibt das Handle des Force Index Indikators zurück. Die Parameter dieser Funktion sind:
    • symbol: Wir verwenden (_Symbol), das auf das aktuelle Symbol angewendet wird.
    • period: Wir verwenden (_Period), um den aktuellen Zeitrahmen festzulegen.
    • ma_period: Wir verwenden (13) als Länge des verwendeten gleitenden Durchschnitts.
    • ma_method: wir werden (MODE_EMA) als Typ des verwendeten gleitenden Durchschnitts verwenden
    • applied_volume: wir werden (VOLUME_TICK) als Typ des Volumens verwenden.
int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
  • Füllen des Arrays mithilfe der CopyBuffer-Funktion, um die Daten aus dem Volumenindikator zu erhalten. Parameter dieser Funktion:
    • indicator_handle: für Indikator-Handle und wir werden (fiDef) verwenden.     
    • buffer_num: für die Nummer des Indikatorpuffers und wir werden (0) verwenden.
    • start_pos: für die Startposition und wir werden (0) verwenden.         
    • count: für den zu kopierenden Betrag und wir verwenden (13).                
    • buffer[]: für das zu kopierende Ziel-Array und wir werden (fiArray) verwenden.
CopyBuffer(fiDef,0,0,3,fiArray);
  • Definition des aktuellen Force Index-Wertes durch Verwendung der Funktion NormalizeDouble nach Erstellung einer Variablen für fiVal. Die Funktion NormalizeDouble gibt den Wert vom Typ double zurück und hat folgende Parameter:
    • value: Wir verwenden (fiArray[0]) für die zu normalisierende Zahl.
    • digits: Wir verwenden (6) als Anzahl der Dezimalstellen nach dem Komma.
double fiVal = NormalizeDouble(fiArray[0],6);
  • Verwendung der Kommentarfunktion, um den aktuellen Wert des Chaikin Oszillators als Kommentar auf dem Chart anzuzeigen.
Comment("Force Index Value is ",fiVal);

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

//+------------------------------------------------------------------+
//|                                           Simple Force Index.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 fiArray[];

   ArraySetAsSeries(fiArray,true);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiVal = NormalizeDouble(fiArray[0],6);

   Comment("Force Index Value is ",fiVal);

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

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

FI Nav 1

Durch Ziehen und Ablegen auf dem gewünschten Chart wird das Fenster wie folgt aussehen.

Einfacher Force Index Fenster

Durch Drücken von „OK“ wird der Expert Advisor auf dem Chart gestartet:

Einfacher Force Index gestartet

Wie wir oben rechts im vorherigen Bild sehen können, läuft der Experte „Simple Force Index“ auf dem Chart.

Wir können feststellen, die Erzeugung von Signalen durch dieses Handelssystem ist das gleiche wie das folgende Beispiel aus der Prüfung:

Einfaches Force Index-Signal

Wie im vorigen Bild oben links zu sehen, haben wir das Signal des aktuellen Force Index-Wertes als Kommentar auf dem Chart.

Wenn wir bestätigen wollen, dass das generierte Signal dasselbe ist wie der eingebaute Force Index-Indikator im MetaTrader 5. Wir können das tun, indem wir den Indikator mit den gleichen Einstellungen des programmierten Indikators zur gleichen Zeit des Experten einfügen. Die beiden Signale sind identisch mit den folgenden:

Einfacher Force Index - gleiches Signal

Wie wir im vorherigen Chart oben rechts sehen können, läuft der Experte und oben links haben wir den Kommentar zum Force Index, der von diesem Experten erzeugt wird, und im unteren Fenster haben wir den eingefügten integrierten Force Index mit seinem Wert und wir können deutlich sehen, dass beide Werte gleich sind.

  • Strategie eins: Force Index - Trend Identifier:

Im Folgenden wird beschrieben, wie man den Code schreibt, der ein Handelssystem auf der Grundlage dieser Strategie erstellt.

//+------------------------------------------------------------------+
//|                               Force Index - Trend Identifier.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 fiArray[];

   ArraySetAsSeries(fiArray,true);

   int fiDef = iForce(_Symbol,_Period,100,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiVal = NormalizeDouble(fiArray[0],6);

   if(fiVal>0)
     {
      Comment("Bullish Movement","\n","Force Index Value is ",fiVal);
     }

   if(fiVal<0)
     {
      Comment("Bearish Movement","\n","Force Index Value is ",fiVal);
     }

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

Die Unterschiede in diesem Code sind Bedingungen für die Strategie,

Im Falle einer Aufwärtsbewegung

   if(fiVal>0)
     {
      Comment("Bullish Movement","\n","Force Index Value is ",fiVal);
     }

Im Falle einer Abwärtsbewegung

   if(fiVal<0)
     {
      Comment("Bearish Movement","\n","Force Index Value is ",fiVal);
     }

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

FI-Nav

Um diesen Experten auszuführen, ziehen wir ihn auf das Chart. Das Fenster sieht dann wie folgt aus:

Force Index - Trend-Identifikator Fenster

Nachdem Sie auf „OK“ geklickt haben, werden wir feststellen, dass der Expert Advisor wie im folgenden Bild an das Chart läuft:

Force Index - Trend-Identifikator gestartet

Oben rechts im Chart können wir sehen, dass der Experte auf dem Chart läuft.

Die mit dieser Strategie generierten Signale entsprechen den folgenden Beispielen aus dem Test.

Im Falle einer Aufwärtsbewegung:

Force Index - Trend-Identifikator - bullisches Signal

Wie wir in der vorherigen Grafik oben links sehen können, haben wir einen Kommentar mit Aufwärtsbewegung und den aktuellen Wert des Force Index Indikators.

Im Falle einer Abwärtsbewegung:

Force Index - Trendkennziffer - bärisches Signal

Wie wir in der vorherigen Grafik oben links sehen können, haben wir einen Kommentar der Abwärtsbewegung und den aktuellen Wert des Force Index Indikators.

  • Strategie zwei: Force Index - Aufwärts oder Divergenz:

Im Folgenden wird beschrieben, wie man ein Handelssystem für diese Strategie programmiert.

//+------------------------------------------------------------------+
//|                               Force Index - Up or Divergence.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 fiArray[];
   MqlRates pArray[];

   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

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

   if(currentHighVal>prevHighVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Strong up move","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

   if(currentHighVal>prevHighVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Bearish Divergence","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

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

Die Unterschiede in diesem Code sind:

Erstellung von zwei Arrays, eines für fiArray mit dem Typ „double“ wie zuvor und das andere für pArray des Typs „MqlRates“, die Informationen über Preise, Volumen und den Spread speichert.

   double fiArray[];
   MqlRates pArray[];

Zur Ausrichtung der erstellten Arrays verwenden wir für fiArray die Funktion „ArraySetAsSeries“, wie wir sie zuvor gelernt haben. Für pArray werden wir die Funktion „CopyRates“ verwenden, um historische Daten von „MqlRates“ zu erhalten, und ihre Parameter sind:

  • Symbolname: Wir verwenden (_Symbol).
  • Zeitrahmen: Wir werden (_Period) verwenden.
  • Startzeit: Wir verwenden (0).
  • Stoppzeit: Wir werden (3) verwenden.
  • Preise Array: Wir verwenden (pArray).
   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

Festlegung der aktuellen und vorherigen Werte des Force Index

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

Festlegung der aktuellen Höchstwerte und der vorherigen Höchstwerte

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

Bedingungen der Strategie

Im Falle einer starken Aufwärtsbewegung:

   if(currentHighVal>prevHighVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Strong up move","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Im Falle einer bärischen Divergenz

 
   if(currentHighVal>prevHighVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Bearish Divergence","\n",
      "Current High is ",currentHighVal,"\n",
      "Previous High is ",prevHighVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

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

FI Nav

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

Force Index - Aufwärts oder Divergenz Fenster

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

Force Index - Aufwärts oder Divergenz gestartet

Wie wir auf dem Chart in der oberen rechten Ecke sehen können, ist der Experte beigefügt.

Danach können wir Signale erhalten, die auf den Marktbedingungen basieren, wenn sie mit den Bedingungen dieser Strategie übereinstimmen. Das Folgende sind Beispiele aus dem Testen von Signalen,

Im Falle einer starken Aufwärtsbewegung im aktuellen Datenfenster:

Force Index - Aufwärts oder Divergenz - starkes Aufwärtssignal - aktuelle Daten

Das Fenster mit vorherigen Daten:

 Force Index - Aufwärts oder Divergenz - starkes Aufwärtssignal - vorherige Daten

Im Falle einer bärischen Divergenz mit dem aktuellen Datenfenster:

Force Index - Aufwärts oder Divergenz - Divergenzsignal - aktuelle Daten

Das Fenster mit vorherigen Daten:

Force Index - Aufwärts oder Divergenz - Divergenzsignal - vorherige Daten

  • Strategie drei: Force Index - Abwärts oder Divergenz:

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

//+------------------------------------------------------------------+
//|                             Force Index - Down or Divergence.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 fiArray[];
   MqlRates pArray[];

   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);

   CopyBuffer(fiDef,0,0,3,fiArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

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

   if(currentLowVal<prevLowVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Strong down move","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

   if(currentLowVal<prevLowVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Bullish Divergence","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

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

Die Unterschiede in diesem Code sind:

Festlegung des aktuellen Tiefstwertes und des vorherigen Tiefstwertes:

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

Bedingungen für diese Strategie:

Im Falle einer starken Abwärtsbewegung:

   if(currentLowVal<prevLowVal && fiCurrentVal<fiPrevVal)
     {
      Comment("Strong down move","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

Im Falle einer bullischen Divergenz:

   if(currentLowVal<prevLowVal && fiCurrentVal>fiPrevVal)
     {
      Comment("Bullish Divergence","\n",
      "Current Low is ",currentLowVal,"\n",
      "Previous Low is ",prevLowVal,"\n",
      "Current Force Index Value is ",fiCurrentVal,"\n",
      "Previous Force Index Value is ",fiPrevVal);
     }

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

FI Nav

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

Force Index - Abwärts oder Divergenz Fenster

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

Force Index - Abwärts oder Divergenz gestartet

Wie in der vorangegangenen Grafik oben rechts zu sehen ist, ist der Experte beigefügt.

Jetzt können wir sehen, generiert Signale auf der Grundlage dieser Strategie die gleichen wie die folgenden Beispiele aus der Prüfung.

Im Falle eines starken Rückgangs mit aktuellen Daten:

Force Index - Abwärts oder Divergenz - starkes Abwärtssignal - aktuelle Daten

Mit vorherigen Daten:

Force Index - Abwärts oder Divergenz - starkes Abwärtssignal - vorherige Daten

Im Falle einer bullischen Divergenz mit den aktuellen Daten,

Force Index - Abwärts oder Divergenz - Divergenzsignal - aktuelle Daten

Mit vorherigen Daten:

Force Index - Abwärts oder Divergenz - Divergenzsignal - vorherige Daten

  • Strategie vier: Force Index Signale:

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

//+------------------------------------------------------------------+
//|                                          Force Index signals.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"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
void OnTick()
  {
   double fiArray[];
   double maArray[];
   MqlRates pArray[];



   ArraySetAsSeries(fiArray,true);
   ArraySetAsSeries(maArray,true);


   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

   CopyBuffer(fiDef,0,0,3,fiArray);
   CopyBuffer(maDef,0,0,3,maArray);

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double maCurrentVal = NormalizeDouble(maArray[0],6);
   double closePrice = NormalizeDouble(pArray[2].close,6);


   if(closePrice>maCurrentVal && fiPrevVal<0 && fiCurrentVal>0)
     {
      Comment("Buy Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

   if(closePrice<maCurrentVal && fiPrevVal>0 && fiCurrentVal<0)
     {
      Comment("Sell Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

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

Unterschiede in diesem Code:

Erstellen von drei Arrays für fiArray, maArray und MqlRates

   double fiArray[];
   double maArray[];
   MqlRates pArray[];

Ausrichten der Arrays fiArray und maArray

   ArraySetAsSeries(fiArray,true);
   ArraySetAsSeries(maArray,true);

Definition von fiDef für Force Index, maDef für gleitenden Durchschnitt

   int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
   int maDef = iMA(_Symbol,_Period,50,0,MODE_EMA,PRICE_CLOSE);

Sortieren von pArray mit der Funktion „CopyRates“, wie wir es gelernt haben

int Data=CopyRates(_Symbol,_Period,0,3,pArray);

Befüllen der Arrays

   CopyBuffer(fiDef,0,0,3,fiArray);
   CopyBuffer(maDef,0,0,3,maArray);

Festlegung von vier Werten für den aktuellen Force Index, den vorherigen Force Index, den aktuellen gleitenden Durchschnitt und den Schlusskurs

   double fiCurrentVal = NormalizeDouble(fiArray[0],6);
   double fiPrevVal = NormalizeDouble(fiArray[1],6);

   double maCurrentVal = NormalizeDouble(maArray[0],6);
   double closePrice = NormalizeDouble(pArray[2].close,6);

Bedingungen der Strategie:

Im Falle eines Kaufsignals:

   if(closePrice>maCurrentVal && fiPrevVal<0 && fiCurrentVal>0)
     {
      Comment("Buy Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

Im Falle eines Verkaufssignals:

   if(closePrice<maCurrentVal && fiPrevVal>0 && fiCurrentVal<0)
     {
      Comment("Sell Signal","\n",
              "Current Closing Price ",closePrice,"\n",
              "EMA is ",maCurrentVal,"\n",
              "Current Force Index Value is ",fiCurrentVal,"\n",
              "Previous Force Index Value is ",fiPrevVal);
     }

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

FI Nav

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

Force Index Signal Fenster

Nachdem Sie auf „OK“ geklickt haben, sehen Sie, dass der Experte auf dem Chart läuft, wie in der folgenden Abbildung dargestellt.

 Force Index-Signale gestartet

Danach können wir Beispiele für generierte Signale aus Tests wie die folgenden finden.

Im Falle eines Kaufsignals mit aktuellen Daten:

Force Index Signale - Kaufsignal - aktuelle Daten

Mit vorherigen Daten:

Force Index Signale - Kaufsignal - vorherige Daten

Im Falle eines Verkaufssignals mit aktuellen Daten:

Force Index Signale - Verkaufssignal - aktuelle Daten

Mit vorherigen Daten:

 Force Index Signale - Verkaufssignal - vorherige Daten


Schlussfolgerung

Der Force Index-Indikator ist ein großartiges technisches Instrument, das uns gute Einblicke gibt, um eine geeignete Entscheidung zu treffen. Wir haben diesen Indikator in diesem Artikel ausführlich behandelt und gelernt, was er ist, was er misst und wie wir ihn manuell berechnen können, um das Konzept dahinter zu verstehen. Wir haben auch gelernt, wie wir sie durch einfache Strategien nutzen können:

  • Force Index - Trend Identifier: Liefert Signale für Aufwärts- und Abwärtsbewegungen.
  • Force Index - Aufwärts oder Divergenz: Liefert Signale für eine starke Aufwärtsbewegung oder eine bärische Divergenz.
  • Force Index - Abwärts oder Divergence: Liefert Signale für eine starke Abwärtsbewegung oder eine bullische Divergenz.
  • Force Index-Signale: Liefert Kauf- oder Verkaufssignale, die auf der Auswertung des Schlusskurses, des Force Index-Wertes und des exponentiellen gleitenden Durchschnitts basieren.

Danach haben wir einen Schritt-für-Schritt-Blaupause entworfen, um ein Handelssystem für jede erwähnte Strategie zu erstellen. Die Wichtigkeit dieses Schrittes hilft uns, dieses Handelssystem reibungslos und effektiv zu erstellen, nachdem wir unsere Ideen organisiert haben. Wir haben für jede der genannten Strategien ein Handelssystem erstellt, das im MetaTrader 5 ausgeführt wird, um automatische Signale zu erhalten.

Ich muss hier noch einmal bestätigen, dass Sie jede Strategie testen sollten, bevor Sie sie auf Ihrem realen Konto anwenden, um sicherzustellen, dass sie für Sie geeignet ist, denn es gibt nichts, was für jeden geeignet ist. Ich hoffe, dass Sie das Gelernte selbst anwenden konnten, denn das Üben ist ein sehr wichtiger Faktor auf jeder Lernreise. Ich empfehle Ihnen auch, darüber nachzudenken, wie Sie diesen Indikator mit einem anderen technischen Werkzeug so einsetzen können, dass unsere Entscheidungen und Handelsergebnisse verbessert werden, denn dies ist eine der erstaunlichsten Eigenschaften des Ansatzes der technischen Analyse.

Meiner Meinung nach ist es wichtig, das Programmieren zu erlernen oder sich zumindest damit zu beschäftigen, da es in verschiedenen Bereichen von Tag zu Tag an Bedeutung gewinnt. Wenn es um den Handel geht, hat die Programmierung viele Funktionen, die uns dazu bringen, ihr Aufmerksamkeit zu schenken, genauso wie die Programmierung unsere Zeit spart, indem wir Programme verwenden, die für uns handeln oder uns zumindest helfen, effektiv zu handeln. Außerdem hilft die Programmierung dabei, genaue Signale zu erhalten, die auf dem basieren, was wir kodiert haben. Am nützlichsten ist es, schädliche Emotionen zu reduzieren und zu vermeiden.

Ich hoffe, dass Sie diesen Artikel nützlich finden, um Ihre Handelsergebnisse zu verbessern und neue Ideen zu diesem Thema oder einem verwandten Thema zu erhalten. Wenn Sie diesen Artikel nützlich fanden und weitere ähnliche Artikel lesen möchten, können Sie meine anderen Artikel in dieser Reihe lesen.

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

Einen handelnden Expert Advisor von Grund auf neu entwickeln (Teil 19): Neues Auftragssystem (II) Einen handelnden Expert Advisor von Grund auf neu entwickeln (Teil 19): Neues Auftragssystem (II)
In diesem Artikel werden wir ein grafisches Ordnungssystem vom Typ „Schau, was passiert“ entwickeln. Bitte beachten Sie, dass wir dieses Mal nicht bei Null anfangen, sondern das bestehende System modifizieren, indem wir weitere Objekte und Ereignisse in den Chart des von uns gehandelten Vermögenswerts einfügen.
Komplexe Indikatoren mit Objekten vereinfachen Komplexe Indikatoren mit Objekten vereinfachen
In diesem Artikel wird eine Methode zur Erstellung komplexer Indikatoren vorgestellt, bei der gleichzeitig die Probleme vermieden werden, die bei der Arbeit mit mehreren Flächen, Puffern und/oder der Kombination von Daten aus mehreren Quellen auftreten.
Metamodelle für maschinelles Lernen und Handel: Ursprünglicher Zeitpunkt der Handelsaufträge Metamodelle für maschinelles Lernen und Handel: Ursprünglicher Zeitpunkt der Handelsaufträge
Metamodelle im maschinellen Lernen: Automatische Erstellung von Handelssystemen mit wenig oder gar keinem menschlichen Eingriff — Das Modell entscheidet selbständig, wann und wie es handelt.
Experimente mit neuronalen Netzen (Teil 1): Die Geometrie neu betrachten Experimente mit neuronalen Netzen (Teil 1): Die Geometrie neu betrachten
In diesem Artikel werde ich mit Hilfe von Experimenten und unkonventionellen Ansätzen ein profitables Handelssystem entwickeln und prüfen, ob neuronale Netze für Trader eine Hilfe sein können.