English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
preview
Apprendre à concevoir un système de trading basé sur le Force Index

Apprendre à concevoir un système de trading basé sur le Force Index

MetaTrader 5Trading | 17 juillet 2023, 09:43
1 029 0
Mohamed Abdelmaaboud
Mohamed Abdelmaaboud

Introduction

Voici un nouvel article de notre série sur l'apprentissage de la conception de systèmes de trading basés sur les indicateurs techniques les plus populaires. Dans cet article, nous allons apprendre à créer un système de trading à l'aide de l'indicateur Force Index. Nous verrons en détail ce qu'est cet indicateur en abordant les sujets suivants :

  1. Définition du Force Index
  2. Stratégie Force Index
  3. Plan de la stratégie Force Index
  4. Système de trading Force Index
  5. Conclusion

A travers ces sujets, nous allons apprendre cet indicateur technique plus en détail. Nous apprendrons ce qu’il est, ce qu'il mesure et comment le calculer. Après avoir compris son concept de base, nous allons apprendre à utiliser des stratégies simples grâce à la stratégie Force Index. Lorsqu'il s'agit de créer un système de trading pour n'importe quelle stratégie, nous constatons que nous avons besoin d'organiser nos idées pour le faire en douceur. Nous allons donc concevoir un plan pour chaque stratégie afin de nous aider à atteindre notre objectif en douceur et efficacement. Après avoir organisé nos idées à l'aide d'un plan détaillé, nous créerons notre système de trading à exécuter sur la plateforme de trading MetaTrader 5 pour générer des signaux automatiquement et avec précision.

Nous utiliserons le langage MQL5 (MetaQuotes Language) pour écrire le code du système de trading. Le langage MQL5 est intégré au terminal de trading MetaTrader 5. Si vous souhaitez les télécharger et apprendre à les utiliser, vous pouvez lire la rubrique Écrire du code MQL5 dans MetaEditor d'un article précédent. Je dois vous conseiller d'appliquer ce que vous apprenez. Cela vous aidera à approfondir votre compréhension en plus de la nécessité de tester toute stratégie avant de l'utiliser sur votre compte réel.

Avertissement : Toutes les informations sont fournies "en l'état", uniquement à des fins d'information. Elles ne sont pas données à des fins de trading ou de conseil. Ces informations ne garantissent aucun type de résultat. Si vous utilisez le contenu de cet article sur l'un de vos comptes de trading, vous le faites à vos propres risques et vous en serez le seul responsable.

Commençons maintenant nos sujets pour en savoir plus sur l’indicateur du Force Index.


Définition du Force Index

Nous allons découvrir plus en détail l'indicateur du Force Index. Nous allons apprendre ce qu'il est, ce qu'il mesure et comment nous pouvons le calculer. Mon approche est que lorsque nous apprenons et comprenons la racine des choses, nous ne serons pas seulement capables des les utiliser efficacement, mais nous aurons plus d'idées sur la façon de développer d'autres idées liées. Le Force Index a été développé par Alexander Elder, qui l'a présenté dans son livre "Vivre du Trading". Cet indicateur permet de mesurer la puissance du mouvement, ou d'identifier les points d'inflexion potentiels. Cet indicateur utilise le prix et le volume dans son calcul, ce qui permet de mesurer la puissance derrière chaque mouvement du marché.

Pour calculer manuellement cet indicateur du Force Index, nous pouvons suivre les deux étapes simples suivantes :

1- Force Index d'1 période = (clôture d’1 barre - clôture de la barre précédente) * volume

2- Force Index de 13 périodes = 13 périodes de l'EMA du Force Index d’1 barre

Aujourd'hui, nous n'avons plus besoin de le calculer manuellement car il est intégré à notre plateforme de trading MetaTrader 5. Nous n’avons qu’à le choisir parmi les indicateurs disponibles dans le terminal de trading MetaTrader 5. Depuis MetaTrader 5, aller dans le menu Insérer --> Indicateurs --> Oscillateurs --> Force Index.

Voici en image :

Indicateur Force Index

Après avoir choisi le Force Index, la fenêtre des paramètres s’ouvre :

Paramètres du Force Index

1- Période souhaitée. Nous utiliserons 13 comme paramètre par défaut.

2- Type de la moyenne mobile. Nous utiliserons la moyenne mobile exponentielle.

3- Type de volume. Nous utiliserons les Ticks.

4- Couleur de l'indicateur.

5- Style de la ligne WPR.

6- Epaisseur de la ligne WPR.

L'indicateur sera ensuite attaché au graphique de la manière suivante :

Indicateur Force Index attaché

Comme nous pouvons le voir dans la fenêtre inférieure du graphique précédent, l'indicateur Force Index est attaché au graphique. Sa ligne oscille au-dessus et en dessous du niveau zéro.


Stratégie Force Index

Dans cette rubrique, nous allons apprendre à utiliser le Force Index en nous basant sur son concept de base. Nous utiliserons des stratégies simples pour comprendre le concept de base de l'utilisation de cet indicateur et de la création d'un système de trading basé dessus. Vous devez tester toutes ces stratégies avant de les utiliser sur votre compte réel pour vous assurer qu'elles conviennent à votre trading, car l'objectif principal ici est uniquement l'éducation.

  • 1ère stratégie : Force Index - Identificateur de Tendance

Selon cette stratégie, nous devons obtenir des signaux haussiers ou baissiers en fonction du croisement entre le Force Index et le niveau zéro. Si le Force Index est supérieur au niveau zéro, il s'agit d'un signal de mouvement haussier. Inversement, si le Force Index est inférieur au niveau zéro, il s'agit d'un signal de mouvement baissier.

Plus simplement :

Force Index > 0 --> mouvement haussier

Force Index < 0 --> mouvement baissier

  • 2ème stratégie : Force Index - hausse ou divergence

Sur la base de cette stratégie, nous devons recevoir un signal lorsque le marché connaît une forte hausse ou une divergence. Si la valeur haute actuelle est supérieure à la valeur haute précédente et que, dans le même temps, la valeur du Force Index actuel est supérieure à la valeur du Force Index précédent, il s'agit d'un signal de forte hausse. Si le sommet actuel est supérieur au sommet précédent et que, dans le même temps, le Force Index actuel est inférieur à la valeur précédente du Force Index, il s'agit d'un signal de divergence baissière.

Plus simplement :

Plus haut actuel > plus haut précédent et Force Index actuel > Force Index précédent --> fort mouvement haussier

Plus haut actuel > plus haut précédent et Force Index actuel < Force Index précédent --> divergence baissière

  • 3ème stratégie : Force Index - baisse ou divergence

Selon cette stratégie, nous devons obtenir le signal opposé à celui de la deuxième stratégie. Nous avons besoin d'un signal de forte baisse ou de divergence basé sur des conditions spécifiques. Si le plus bas actuel est inférieur au plus bas précédent et que la valeur actuelle du Force Index est inférieure à la précédente, c'est le signal d'un fort mouvement baissier. Si le plus bas actuel est plus bas que le précédent et que le Force Index actuel est plus haut que le précédent, il s'agit d'un signal de divergence haussière.

Plus simplement :

Plus bas actuel < plus bas précédent et Force Index actuel < Force Index précédent --> fort mouvement baissier.

Plus bas actuel < plus bas précédent et Force Index actuel > Force Index précédent --> divergence haussière.

  • 4ème stratégie : Signaux du Force Index

Pour cette stratégie, nous devons obtenir des signaux d'achat et de vente en fonction de conditions spécifiques. Si le cours de clôture est supérieur à la moyenne mobile exponentielle, que le Force Index précédent est inférieur à zéro et que le Force Index actuel est supérieur au niveau zéro, il s'agit d'un signal d'achat. Si le cours de clôture est inférieur à la moyenne mobile exponentielle, que le Force Index précédent est supérieur au niveau zéro et que le Force Index actuel est inférieur au niveau zéro, il s'agit d'un signal de vente.

Plus simplement :

Cours de clôture > EMA, Force Index précédent < 0, et Force Index actuel > 0 --> signal d'achat.

Cours de clôture < EMA, Force Index précédent > 0, et Force Index actuel < 0 --> signal de vente.


Plan de la stratégie Force Index

Dans cette rubrique, nous allons concevoir un plan détaillé qui nous aidera à créer notre système de trading. Il s'agit d'une étape importante car elle nous aide à organiser nos idées pour atteindre notre objectif et créer notre système de trading en douceur.

  • 1ère stratégie :  Force Index - Identificateur de Tendance

Selon cette stratégie, nous devons créer un système de trading qui nous donne des signaux automatiques avec des mouvements haussiers ou baissiers affichés sous la forme d’un commentaire sur le graphique. Nous avons besoin que l’expert vérifie le Force Index actuel à chaque tick pour déterminer sa position à partir du niveau zéro. Si la valeur actuelle du Force Index est supérieure au niveau zéro, nous avons besoin que l'expert renvoie des commentaires sur le graphique avec le mouvement haussier et la valeur actuelle du Force Index. En revanche, si la valeur actuelle du Force Index est inférieure au niveau zéro, l'expert doit afficher des commentaires sur le graphique avec le mouvement baissier et la valeur actuelle du Force Index.

Force Index - plan de l’Identificateur de Tendance

  • 2ème stratégie : Force Index - hausse ou divergence

Sur la base de cette stratégie, nous devons créer un système de trading qui nous donne un signal en cas de forte hausse ou de divergence baissière. Le système de trading doit vérifier en permanence 4 valeurs : le sommet actuel et les sommets précédents, et décider laquelle est plus grande que l'autre, et de la même façon pour les valeurs du Force Index actuel et les précédentes. Si le sommet actuel est supérieur au sommet précédent et que le Force Index actuel est supérieur au Force Index précédent, l'expert doit renvoyer renvoie ce qui suit sous forme de commentaire sur le graphique, chaque valeur étant sur une ligne distincte :

  • Mouvement fort,
  • Plus Haut actuel
  • Plus Haut précédent
  • Force Index actuel
  • Force Index précédent

Si le sommet actuel est supérieur au sommet précédent et que le Force Index actuel est inférieur au Force Index précédent, l'expert doit renvoyer ce qui suit en tant que commentaire sur le graphique, chaque valeur étant sur une ligne séparée :

  • Divergence baissière.
  • Plus Haut actuel
  • Plus Haut précédent
  • Force Index actuel
  • Force Index précédent

Voici un schéma de ce plan :

Plan du Force Index - hausse ou divergence

  • 3ème stratégie : Force Index - baisse ou divergence

Selon cette stratégie, nous devons créer un système de trading qui renvoie des signaux automatiques en cas de forte baisse ou de divergence haussière. Nous avons besoin de l'expert pour vérifier 4 valeurs : le plus bas actuel et le plus bas précédent - et déterminer quelle valeur est la plus élevée. Nous avons également besoin de l'expert pour vérifier le Force Index actuel et le précédent pour déterminer lequel est le plus élevé. Si le plus bas actuel est inférieur au plus bas précédent et que le Force Index actuel est inférieur au Force Index précédent, l'expert doit renvoyer les valeurs suivantes en tant que commentaire sur le graphique, chaque valeur étant sur une ligne séparée :

  • Mouvement baissier fort
  • Plus Bas actuel
  • Plus Bas précédent
  • Force Index actuel
  • Force Index précédent

Si le Plus Bas actuel est inférieur au Plus Bas précédent et que le Force Index actuel est supérieur au Force Index précédent, l'expert doit afficher les valeurs suivantes dans un commentaire sur le graphique, chaque valeur sur une ligne séparée :

  • Divergence haussière
  • Plus Bas actuel
  • Plus Bas précédent
  • Force Index actuel
  • Force Index précédent

Voici une illustration de ce plan :

Plan du Force Index - baisse ou divergence

  • 4ème stratégie : Signaux du Force Index

Sur la base de cette stratégie, nous devons créer un système de trading qui renvoie des signaux d'achat ou de vente en fonction de conditions spécifiques. L'expert doit vérifier 4 valeurs en permanence, à savoir le cours de clôture, la moyenne mobile, le Force Index actuel et le Force Index précédent. Si le prix de clôture est supérieur à la valeur de la moyenne mobile actuelle, que le Force Index précédent est inférieur à zéro et que le Force Index actuel est supérieur au niveau zéro, l'expert doit afficher valeurs suivantes sous forme de commentaire sur le graphique, chaque valeur étant sur une ligne séparée :

  • Signal d'achat
  • Prix de clôture actuel
  • Moyenne mobile exponentielle actuelle
  • Force Index actuel
  • Force Index précédent

Si le cours de clôture est inférieur à la moyenne mobile actuelle, que la valeur du Force Index précédent est supérieur au niveau zéro et que la valeur actuelle du Force Index est inférieure au niveau zéro, l'expert doit renvoyer les valeurs suivantes sous forme de commentaire sur le graphique, chaque valeur étant affichée sur une ligne distincte :

  • Signal de vente
  • Prix de clôture actuel
  • Moyenne mobile exponentielle actuelle
  • Force Index actuel
  • Force Index précédent

L'image suivante montre le plan de cette stratégie :

Plan des signaux du Force Index

Système de trading Force Index

Dans cette rubrique, nous apprendrons en détail comment créer un système de trading pour chaque stratégie pour obtenir des signaux automatiques sur MetaTrader 5, après avoir écrit les codes de ces stratégies en MQL5. Tout d'abord, nous allons créer une stratégie de trading simple qui peut être utilisée comme base pour générer un commentaire sur le graphique avec la valeur actuelle du Force Index.

  • Création d'un tableau fiArray d’éléments de type "double" :
double fiArray[];
  • Tri du tableau en utilisant la fonction ArraySetAsSeries qui renvoie un booléen (vrai ou faux). Les paramètres de cette fonction sont les suivants :
    • array[]
    • flag
ArraySetAsSeries(fiArray,true);
  • Définition du volume avec iForce après avoir créé une variable pour fiDef. La fonction iForce renvoie le handle de l'indicateur Force Index. Les paramètres de cette fonction sont les suivants :
    • symbol : nous utiliserons _Symbol pour l'appliquer au symbole actuel.
    • period : nous utiliserons _Period pour l'appliquer à la période actuelle.
    • ma_period : nous utiliserons 13 comme durée de la moyenne mobile.
    • ma_method : nous utiliserons MODE_EMA comme type de moyenne mobile
    • applied_volume : nous utiliserons VOLUME_TICK comme type de volume.
int fiDef = iForce(_Symbol,_Period,13,MODE_EMA,VOLUME_TICK);
  • Remplissage du tableau avec la fonction CopyBuffer pour récupérer les données de l'indicateur Force Index. Paramètres de cette fonction :
    • indicator_handle : pour le handle de l'indicateur, nous utiliserons fiDef.     
    • buffer_num : pour le numéro du buffer de l'indicateur, nous utiliserons 0.
    • start_pos : pour la position de départ, nous utiliserons 0.         
    • count : pour le nombre d’éléments à copier, nous utiliserons 13.                
    • buffer[] : pour le tableau source des données à copier, nous utiliserons fiArray.
CopyBuffer(fiDef,0,0,3,fiArray);
  • Définition de la valeur actuelle du Force Index en utilisant la fonction NormalizeDouble, après avoir créé une variable pour fiVal. La fonction NormalizeDouble renvoie une valeur de type double et ses paramètres sont les suivants :
    • value : nous utiliserons fiArray[0] comme nombre normalisé.
    • digits : nous utiliserons 6 comme nombre de chiffres après la virgule.
double fiVal = NormalizeDouble(fiArray[0],6);
  • Utilisation de la fonction "comment" pour renvoyer la valeur actuelle du Force Index sous forme de commentaire sur le graphique.
Comment("Force Index Value is ",fiVal);

Voici le code complet permettant de créer ce système de trading simple :

//+------------------------------------------------------------------+
//|                                           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);

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

Après avoir compilé ce code, l'expert de cette stratégie est visible dans la fenêtre du Navigateur :

Nav 1

En le glissant et en le déposant sur le graphique souhaité, sa fenêtre est alors affichée :

Fenêtre du Simple Force Index

Après avoir appuyé sur le bouton OK, le fichier est attaché au graphique :

Simple Force Index attaché

Comme nous pouvons le voir en haut à droite de l'image précédente, l'Expert Advisor "Simple Force Index" est attaché au graphique.

La génération de signaux par ce système de trading est identique à l'exemple suivant :

Signal du Simple Force Index

Comme on peut le voir dans l'image précédente, en haut à gauche, le signal de la valeur actuelle du Force Index est affiché sous forme de commentaire sur le graphique.

Si nous voulons confirmer que le signal généré est le même que l'indicateur Force Index intégré dans MetaTrader 5, nous pouvons le faire en insérant l'indicateur avec les mêmes paramètres que l'indicateur programmé. Les 2 signaux sont identiques à ce qui suit :

Simple Force Index - même signal

Comme nous pouvons le voir dans le graphique précédent, l'Expert Advisor est attaché en haut à gauche. En haut à droite, nous avons le commentaire avec la valeur du Force Index généré par cet expert, et dans la fenêtre inférieure nous avons le Force Index intégré inséré avec sa valeur. Nous pouvons voir clairement que les deux valeurs sont les mêmes.

  • 1ère stratégie : Force Index - Identificateur de Tendance

Voici comment écrire le code qui crée un système de trading basé sur cette stratégie :

//+------------------------------------------------------------------+
//|                               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);
     }

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

Les différences dans ce code sont les conditions de cette stratégie :

En cas de mouvement haussier :

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

En cas de mouvement baissier :

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

Après avoir compilé ce code, l'Expert est visible dans la fenêtre du Navigateur :

Nav 2

Pour exécuter cet expert, nous allons le faire glisser et le déposer sur le graphique. Sa fenêtre des paramètres est alors affichée :

Fenêtre Force Index - Trend Identifier

Après avoir appuyé sur le bouton "OK", l’Expert Advisor sera alors attaché au graphique :

Force Index - Identificateur de tendance attaché

Comme on peut le voir en haut à droite du graphique, l'expert est attaché au graphique.

Les signaux générés sur la base de cette stratégie sont identiques aux exemples suivants :

En cas de mouvement haussier :

Force Index - Identificateur de tendance - signal haussier

Comme nous pouvons le voir dans le graphique précédent en haut à gauche, nous avons un commentaire avec un mouvement haussier et la valeur actuelle de l'indicateur Force Index.

En cas de mouvement baissier :

Force Index - Identificateur de tendance - signal baissier

Comme nous pouvons le voir dans le graphique précédent en haut à gauche, nous avons un commentaire avec un mouvement baissier et la valeur actuelle de l'indicateur Force Index.

  • 2ème stratégie : Force Index - hausse ou divergence

Voici comment coder un système de trading pour cette stratégie.

//+------------------------------------------------------------------+
//|                               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);
     }

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

Les différences dans ce code sont les suivantes :

Création de 2 tableaux : l'un pour fiArray d’éléments de type "double" comme nous l'avons fait précédemment et l'autre pour pArray d’éléments de type "MqlRates" qui stocke des informations sur les prix, les volumes et l'écart.

   double fiArray[];
   MqlRates pArray[];

Pour trier les tableaux créés, nous utiliserons la fonction "ArraySetAsSeries" pour fiArray, comme nous l'avons appris précédemment. Pour pArray, nous utiliserons la fonction "CopyRates" pour obtenir les données historiques de "MqlRates". Ses paramètres sont les suivants :

  • nom du symbole : nous utiliserons _Symbol.
  • période : nous utiliserons _Period.
  • heure de début : nous utiliserons 0.
  • heure de fin : nous utiliserons 3.
  • tableau des taux : nous utiliserons pArray.
   ArraySetAsSeries(fiArray,true);
   int Data=CopyRates(_Symbol,_Period,0,3,pArray);

Définition des valeurs actuelles et précédentes du Force Index

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

Définition du Plus Haut actuel et du Plus Haut précédent

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

Conditions de la stratégie

En cas de forte hausse :

   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);
     }

En cas de divergence baissière :

 
   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);
     }

Après avoir compilé ce code, nous le trouverons dans la fenêtre du Navigateur :

Nav 3

En glissant et déposant cet expert sur le graphique, la fenêtre du programme est affiché comme suit :

Fenêtre Force Index - hausse ou divergence

Après avoir appuyé sur "OK", l'expert est attaché au graphique :

Force Index - hausse ou divergence attaché

Comme on peut le voir sur le graphique précédent, l'expert est attaché dans le coin supérieur droit.

Nous pouvons ensuite recevoir les signaux basés sur les conditions du marché si elles correspondent aux conditions de cette stratégie. Voici des exemples de signaux obtenus :

En cas de forte hausse avec la fenêtre des données actuelles :

Force Index - hausse ou divergence - signal haussier fort - données actuelles

Avec la fenêtre des données précédentes :

Force Index - hausse ou divergence - signal haussier fort - données précédentes

En cas de divergence baissière, avec la fenêtre des données actuelles :

Force Index - Hausse ou divergence - signal de divergence - données actuelles

Avec la fenêtre des données précédentes :

Force Index - Hausse ou divergence - signal de divergence - données précédentes

  • 3ème stratégie : Force Index - baisse ou divergence

Voici le code complet pour créer le système de trading de cette stratégie :

//+------------------------------------------------------------------+
//|                             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);
     }

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

Les différences dans ce code sont les suivantes :

Définition du Plus Bas actuel et du Plus Bas précédent :

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

Conditions de cette stratégie :

En cas de forte baisse :

   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);
     }

En cas de divergence haussière :

   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);
     }

Après avoir compilé ce code, l'expert de cette stratégie est visible dans la fenêtre du Navigateur :

Nav 4

En glissant et déposant cet expert sur le graphique, la fenêtre du programme est affichée de la façon suivante :

Force Index - Baisse ou divergence

Après avoir appuyé sur "OK", l'expert est attaché au graphique :

Force Index - Baisse ou divergence attaché

Comme on peut le voir dans le graphique précédent, l'expert est attaché en haut à droite.

Maintenant, nous pouvons voir les signaux générés sur la base de cette stratégie, comme dans les exemples suivants.

En cas de forte baisse, avec les données actuelles :

Force Index - Baisse ou divergence - mouvement baissier fort - données actuelles

Avec les données précédentes :

Force Index - Baisse ou divergence - mouvement baissier fort - données précédentes

En cas de divergence haussière avec les données actuelles :

Force Index - Baisse ou divergence - signal de divergence - données actuelles

Avec les données précédentes :

Force Index - Baisse ou divergence - signal de divergence - données précédentes

  • 4ème stratégie : Signaux du Force Index

Le code complet permettant de créer un système de trading basé sur cette stratégie est présenté ci-dessous :

//+------------------------------------------------------------------+
//|                                          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);
     }

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

Voici les différences dans le code :

Création de 3 tableaux pour fiArray, maArray et MqlRates

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

Tri des tableaux fiArray et maArray

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

Définition de fiDef pour le Force Index, maDef pour la moyenne mobile

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

Tri de pArray avec la fonction "CopyRates" comme nous l’avons déjà vu précédemment

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

Remplissage des tableaux

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

Définition de 4 valeurs pour le Force Index actuel, le Force Index précédent, la moyenne mobile actuelle et le prix de clôture

   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);

Les conditions de la stratégie :

En cas de signal d'achat :

   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);
     }

En cas de signal de vente :

   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);
     }

Après avoir compilé ce code, nous le trouverons dans la fenêtre du Navigateur :

Nav 5

En glissant et déposant cet expert sur le graphique, la fenêtre du programme est affiché comme suit :

Fenêtre Signaux du Force Index

Après avoir appuyé sur "OK", l'expert est attaché au graphique :

Signaux du Force Index attaché

Voici des exemples de signaux générés à partir des tests :

En cas de signal d'achat avec les données actuelles :

Signaux du Force Index - signal d'achat - données actuelles

Avec les données précédentes :

Signaux du Force Index - signal d'achat - données précédentes

En cas de signal de vente avec les données actuelles :

Signaux du Force Index - signal de vente - données actuelles

Avec les données précédentes :

Signaux du Force Index - signal de vente - données précédentes


Conclusion

L'indicateur Force Index est un excellent outil technique qui nous donne de bonnes indications pour prendre une bonne décision. Nous avons abordé cet indicateur en détail dans cet article : nous avons appris ce qu'il est, ce qu'il mesure et comment nous pouvons le calculer manuellement pour comprendre son concept. Nous avons également appris à l'utiliser par le biais de stratégies simples :

  • Force Index - Identificateur de tendance : pour obtenir des signaux de mouvements haussiers et baissiers.
  • Force Index - hausse ou divergence : pour obtenir des signaux de forte hausse ou de divergence baissière.
  • Force Index - baisse ou divergence : pour obtenir des signaux de forte baisse ou de divergence haussière.
  • Signaux du Force Index : pour obtenir des signaux d'achat ou de vente basés sur l'évaluation du cours de clôture, de la valeur du Force Index et de la moyenne mobile exponentielle.

Nous avons ensuite conçu un plan détaillé pour créer un système de trading pour chaque stratégie. L'importance de cette étape est de nous aider à créer ce système de trading de manière fluide et efficace après avoir organisé nos idées. Nous avons créé un système de trading pour chaque stratégie à exécuter dans MetaTrader 5 pour obtenir des signaux automatiques.

Je dois vous dire une fois de plus qu'il faut tester toute stratégie avant de l'utiliser sur votre compte réel afin de s'assurer qu'elle vous convient, car il n'y a rien qui convienne à tout le monde. J'espère que vous avez mis en pratique ce que vous avez appris. La pratique est un facteur très important dans tout parcours d'apprentissage. Je vous conseille également de réfléchir à la façon dont vous pouvez utiliser cet indicateur avec un autre outil technique de manière à améliorer nos décisions et nos résultats de trading. C'est l'une des caractéristiques les plus étonnantes de l'approche de l'analyse technique.

À mon avis, il est important d'apprendre la programmation, ou du moins d'y prêter attention. Son importance augmente de jour en jour dans différents domaines. Lorsqu'il s'agit de trading, la programmation possède de nombreuses caractéristiques qui nous poussent à lui accorder de l'attention. De même que la programmation nous fait gagner du temps en utilisant des programmes qui traitent pour nous ou, du moins, qui nous aident à traiter efficacement. De plus, la programmation permet d'obtenir des signaux précis basés sur ce que nous avons codé. Le plus bénéfique est de réduire et d'éviter les émotions néfastes.

J'espère que cet article vous sera utile pour améliorer vos résultats de trading et vous apporter de nouvelles idées sur ce sujet ou tout autre sujet connexe. Si vous avez trouvé cet article utile et que vous souhaitez lire d'autres articles similaires, vous pouvez lire mes autres articles de cette série.

Traduit de l’anglais par MetaQuotes Ltd.
Article original : https://www.mql5.com/en/articles/11269

Apprendre à concevoir un système de trading basé sur la Puissance des Baissiers (Bears Power) Apprendre à concevoir un système de trading basé sur la Puissance des Baissiers (Bears Power)
Bienvenue dans ce nouvel article de notre série consacrée à l'apprentissage de la conception d'un système de trading à l'aide des indicateurs techniques les plus populaires. Voici un nouvel article consacré à l'apprentissage de la conception d'un système de trading à l'aide de l'indicateur technique Bear's Power ou Puissance des Baissiers.
Développer un Expert Advisor de trading à partir de zéro (Partie 19) : Nouveau système d'ordres (II) Développer un Expert Advisor de trading à partir de zéro (Partie 19) : Nouveau système d'ordres (II)
Dans cet article, nous allons développer un système graphique de gestion des ordres du type "regardez ce qui se passe". Notez que nous ne partons pas de zéro cette fois-ci. Nous modifierons le système existant en ajoutant davantage d'objets et d'événements sur le graphique de l'actif.
Algorithmes d'optimisation de la population : Optimisation des Colonies de Fourmis (Ant Colony Optimization - ACO) Algorithmes d'optimisation de la population : Optimisation des Colonies de Fourmis (Ant Colony Optimization - ACO)
Cette fois, je vais analyser l'algorithme d'Optimisation des Colonies de Fourmis. L'algorithme est très intéressant et complexe. Dans cet article, je tente de créer un nouveau type d'ACO.
Développer un Expert Advisor de trading à partir de zéro (partie 18) : Nouveau système d’ordres (I) Développer un Expert Advisor de trading à partir de zéro (partie 18) : Nouveau système d’ordres (I)
Ceci est la 1ère partie du nouveau système d’ordres. Depuis que nous avons commencé à documenter cet EA dans nos articles, il a subi divers changements et améliorations tout en conservant le même modèle de système d'ordres sur le graphique.