Apprenez à concevoir un système trading basé sur le Relative Vigor Index

Mohamed Abdelmaaboud | 23 octobre, 2023

Introduction

Bienvenue dans mon nouvel article de notre série pour apprendre en détail de nouveaux outils techniques et concevoir un système de trading simple avec cet outil. Il s’agit de l’indicateur Relative Vigor Index (RVI). Nous l’aborderons à travers les rubriques suivantes :

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

Nous utiliserons l'IDE MQL5 (MetaQuotes Language 5) pour écrire le code et le terminal de trading MetaTrader 5 pour exécuter notre système de trading. Je vous conseille d'essayer d'appliquer ce que vous apprendrez par vous-même si vous souhaitez améliorer vos compétences en codage en tant que débutant, car la pratique est très importante à faire. Si vous ne savez pas comment télécharger et utiliser MetaTrader 5 et MQL5, vous pouvez lire mon précédent article sur l'écriture de code MQL5 dans MetaEditor.

Toutes les stratégies mentionnées sont uniquement à des fins éducatives. Vous constaterez peut-être qu'elles ont besoin d'être optimisées, ce qui est normal car l'objectif principal de cet article et de ces stratégies simples sont d'apprendre le concept principal qui se cache derrière. Vous devez donc très bien les tester avant de les utiliser sur votre compte réel pour vous assurer qu'ils seront utiles pour votre trading.

Avertissement : Toutes les informations données dans cet article sont fournies "en l'état", uniquement à des fins d'information et ne sont aucunement 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.


Définition du Relative Vigor Index

Dans ce sujet, nous apprendrons en détail ce qu'est l'Indice de Vigueur Relative, ou Relative Vigor Index en anglais (RVI). Il s’agit d’un indicateur technique de momentum et d’un oscillateur. En comparant le cours de clôture à son niveau d'ouverture, cet indicateur mesure la force de la tendance. Pendant la tendance haussière, le prix de clôture est sur un niveau supérieur au prix d'ouverture. Pendant une tendance à la baisse, le cours de clôture à un niveau inférieur au prix d'ouverture. Les résultats ont également été lissés en utilisant la moyenne mobile simple. Cet indicateur RVI fonctionne mieux pendant les marchés en tendance que pendant les périodes variables de par sa nature. Nous pouvons constater que le calcul du RVI est similaire à celui de l'oscillateur Stochastique. Mais le RVI compare le cours de clôture à son cours d'ouverture, alors que l'oscillateur Stochastique compare le cours de clôture à sa fourchette de prix au cours d'une période spécifique. Si nous voulons calculer le RVI manuellement, nous pouvons le faire en suivant les étapes suivantes :

RVI = (CLOSE - OPEN) / (HIGH - LOW)

Avec :

CLOSE = Cours de clôture

OPEN = Prix d'ouverture

HIGH = Prix le plus élevé

LOW = Prix le plus bas

Généralement, le RVI que nous utilisons apparaît sous la forme de 2 lignes avec des composantes différentes dans le calcul. Voici comment nous pouvons les calculer :

1- Calcul de la 1ère ligne :

MovAverage = (CLOSE-OPEN) + 2 * (CLOSE-1 - OPEN-1) + 2 * (CLOSE-2 - OPEN-2) + (CLOSE-3 - OPEN-3)

Avec :

CLOSE = Cours de clôture actuel

CLOSE-1, CLOSE-2, CLOSE-3 = Cours de clôture d'il y a 1, 2 et 3 périodes

OPEN = Prix d'ouverture actuel

OPEN-1, OPEN-2, OPEN-3 = Cours d'ouverture d'il y a 1, 2 et 3 périodes

RangeAverage = (HIGH-LOW) + 2 x (HIGH-1 - LOW-1) + 2 x (HIGH-2 - LOW-2) + (HIGH-3 - LOW-3)

Avec :

HIGH = Dernier prix maximum

HIGH-1, HIGH-2, HIGH-3 = Derniers prix maximaux d'il y a 1, 2 et 3 périodes

LOW = Dernier prix minimum

LOW-1, LOW-2, LOW-3 = Derniers prix minimaux d'il y a 1, 2 et 3 périodes

Moyenne RVI

2- Calcul de la 2ème ligne :

RVIsignal = (RVIaverage + 2 * RVIaverage-1 + 2 * RVIaverage-2 + RVIaverage-3)/6

Nous avons maintenant compris le concept principal de cet indicateur après avoir appris à le calculer manuellement. Mais nous n'avons pas besoin de le faire car il est calculé dans le terminal de trading MetaTrader 5. Nous n’avons qu’à le choisir parmi les indicateurs disponibles. . Voici comment l'insérer dans le graphique :

Lors de l'ouverture du terminal MetaTrader 5 -> Insertion -> Indicateurs -> Oscillateurs -> Relative Vigor Index

Insertion du RVI

Après avoir appuyé sur le Relative Vigor Index, la fenêtre de ses paramètres est affichée :

Paramètres RVI

1- Détermine la période.

2- Détermine la couleur de la ligne RVI.

3- Détermine le style de la ligne RVI.

4- Détermine l'épaisseur de la ligne RVI.

5- Détermine la couleur de la ligne de signal.

6- Détermine le style de la ligne de signal.

7- Détermine l'épaisseur de la ligne de signal.

Après avoir défini tous les paramètres, l’indicateur ressemblera à celui-ci :

RVI attaché

Comme nous pouvons le voir dans le graphique précédent, l'indicateur RVI est attaché au graphique et comporte 2 lignes oscillant autour du niveau zéro.


Stratégie Relative Vigor Index

Après avoir appris le concept principal du RVI, nous apprendrons à l'utiliser en fonction de son concept principal au travers des stratégies simples. J’insiste encore ici : vous devez vous assurer de tester toute stratégie avant de l'utiliser sur votre compte réel pour être sûr qu'elle est adaptée à votre trading et qu’elle est rentable. Le concept principal ici est de partager des stratégies simples à des fins éducatives uniquement. Il est donc normal que vous constatiez qu'ils peuvent avoir besoin d'optimisations.

Sur la base de cette stratégie, nous devons obtenir des signaux d'achat et de clôture pendant une tendance haussière selon une condition spécifique. Lorsque la valeur actuelle du RVI et la valeur actuelle du signal RVI sont supérieures 0, et que la valeur actuelle du RVI est supérieure à la valeur actuelle du signal RVI, ce sera un signal d'achat. Inversement, lorsque la valeur actuelle du RVI et la valeur actuelle du signal RVI sont inférieures à 0, et que la valeur actuelle du RVI est inférieure à la valeur actuelle du signal RVI, ce sera un signal de clôture.

Plus simplement :

Valeur RVI > 0 et valeur du signal RVI > 0 et valeur RVI > valeur du signal RVI --> achat

Valeur RVI < 0 et valeur du signal RVI < 0 et valeur RVI < valeur du signal RVI --> clôture

Sur la base de cette stratégie, nous devons obtenir les signaux opposés de la précédente stratégie RVI Croisement - Tendance haussière, car nous devons obtenir des signaux de vente et de couverture. Lorsque la valeur actuelle du RVI et la valeur actuelle du signal RVI sont inférieures à 0, et que la valeur actuelle du RVI est inférieure à la valeur actuelle du signal RVI, il s'agira d'un signal court. Inversement, lorsque la valeur actuelle du RVI et la valeur actuelle du signal RVI sont supérieures à 0, et que la valeur actuelle du RVI est supérieure à la valeur actuelle du signal RVI, il s'agira d'un signal de couverture.

Plus simplement :

Valeur RVI < 0 et valeur du signal RVI < 0 et valeur RVI < valeur du signal RVI --> court

Valeur RVI > 0 et valeur du signal RVI > 0 et valeur RVI > valeur du signal RVI --> couverture 

Sur la base de cette stratégie, nous devons obtenir des signaux d'achat et de vente en fonction de conditions spécifiques. Nous devons obtenir un signal d'achat lorsque le cours de clôture est supérieur à la moyenne mobile sur 100 périodes et que la valeur actuelle du RVI est supérieure à la valeur actuelle du signal RVI. Dans l'autre scénario, nous devons obtenir un signal de vente lorsque le cours de clôture est inférieur à la moyenne mobile sur 100 périodes et que la valeur actuelle du RVI est inférieure à la valeur actuelle du signal RVI.

Plus simplement :

Cours de clôture > Moyenne mobile 100- et valeur RVI > valeur du signal RVI --> achat

Cours de clôture < Moyenne mobile 100- et valeur RVI < valeur du signal RVI --> vente


Plan de la stratégie Relative Vigor Index

Après avoir appris comment utiliser le RVI grâce à une stratégie, nous allons créer un plan étape par étape pour chaque stratégie afin de nous aider à créer un système de trading en douceur.

Selon cette stratégie, nous devons créer un système de trading qui donne des signaux d'achat et de clôture pendant la tendance haussière en vérifiant en permanence les valeurs suivantes :

Si la valeur actuelle du RVI est supérieure au niveau 0, que la valeur actuelle du signal RVI est supérieure au niveau zéro et que la valeur actuelle du RVI est supérieure à la valeur actuelle du signal RVI, nous avons besoin que le système de trading renvoie les valeurs suivantes sous forme de commentaire sur le graphique :

Dans l'autre scénario, si la valeur actuelle du RVI est inférieure à 0, que la valeur actuelle du signal RVI est inférieure à 0 et que la valeur actuelle du RVI est inférieure à la valeur actuelle du signal RVI, le système de trading renvoie les valeurs suivantes en commentaire sur le graphique :

Voici le plan étape par étape de cette stratégie :

Croisement RVI - Plan U

Selon cette stratégie, nous devons créer un système de trading capable de nous donner des signaux de vente à découvert et de couverture pendant la tendance baissière en vérifiant continuellement les mêmes valeurs de la stratégie précédente :

Mais les conditions seront légèrement différentes selon les signaux souhaités. Si la valeur actuelle du RVI et la valeur actuelle du signal RVI sont inférieures à 0, que la valeur du RVI est inférieure à la valeur du signal RVI, le système de trading doit renvoyer les valeurs suivantes sous la forme d’un commentaire sur le graphique :

D'autre part, si la valeur actuelle du RVI et la valeur actuelle du signal RVI sont supérieures à 0, et que la valeur du RVI est supérieure à la valeur du signal RVI, le système de trading doit renvoyer les valeurs suivantes sous forme de commentaire sur le graphique :

Voici le modèle de ce système de trading :

Croisement RVI - Plan D

Selon cette stratégie, nous devons créer un système de trading qui donne des signaux d'achat et de vente en vérifiant en permanence les valeurs suivantes :

Si le cours de clôture est supérieur à la MA sur 100 périodes et que la valeur actuelle du RVI est supérieure à la valeur actuelle du signal RVI, le système de trading doit renvoyer les valeurs suivantes sous forme de commentaire sur le graphique :

D'autre part, si le cours de clôture est inférieur à la MA sur 100 périodes et que la valeur actuelle du RVI est inférieure à la valeur actuelle du signal RVI, le système de trading doit renvoyer les valeurs suivantes sous forme de commentaire sur le graphique :

Voici le plan de cette stratégie :

Plan de Croisement RVI, MA

Système de trading Relative Vigor Index

Après avoir appris à utiliser le RVI à travers des stratégies simples et créé un plan étape par étape pour chacune, nous allons maintenant créer un système de trading pour chaque stratégie. Tout d’abord, nous allons créer un système de trading simple qui renvoie la valeur actuelle du RVI sous forme de commentaire sur le graphique. Ce qui suit est le code permettant de créer ce système étape par étape :

Création de 2 tableaux pour le RVI et le signal RVI d’éléments de type ’double’ :

   double rviArray[];
   double rviSignalArray[];

Définition de l'indicateur AS_SERIES sur les tableaux pour renvoyer vrai ou faux qui est une valeur booléenne à l'aide de la fonction "ArraySetAsSeries" :

   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

Définition du RVI à l'aide de la fonction "iRVI" qui renvoie le handle de l'indicateur Relative Vigor Index. Ses paramètres sont :

int rviDef = iRVI(_Symbol,_Period,10);

Récupération des données du buffer de l'indicateur RVI en utilisant la fonction "CopyBuffer". Ses paramètres sont : 

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);

Définition des valeurs du RVI et du signal RVI en utilisant la fonction "NormalizeDouble" pour renvoyer une valeur de type double. Ses paramètres sont :

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);

Utilisation de la fonction "comment" pour renvoyer la valeur de l'indicateur RVI actuel sous forme de commentaire sur le graphique.

   Comment("Relative Vigor Index Value is ",rviVal,"\n",
           "RVI Signal Value is ",rviSignalVal);

Voici le code complet :

//+------------------------------------------------------------------+
//|                                                   Simple RVI.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 rviArray[];
   double rviSignalArray[];

   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

   int rviDef = iRVI(_Symbol,_Period,10);

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);

   Comment("Relative Vigor Index Value is ",rviVal,"\n",
           "RVI Signal Value is ",rviSignalVal);

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

Après avoir compilé ce code, nous trouverons l'expert dans la fenêtre du Navigateur comme suit :

RVI dans le Navigateur

En double-cliquant sur l'expert pour l'exécuter dans le terminal de trading, la fenêtre suivante est affichée :

Fenêtre RVI Simple

En appuyant sur "OK" après avoir coché le paramètre "Autoriser le Trading Algorithmique", l'expert est attaché au graphique comme suit :

RVI Simple attaché

Nous sommes désormais prêts à générer des signaux basés sur ce système de trading. Nous obtiendrons donc un signal identique à celui-ci :

Signal RVI Simple

Comme nous pouvons le voir dans le coin supérieur gauche du graphique, nous avons un commentaire avec la valeur RVI actuelle.

Voici le code complet permettant de créer un système de trading basé sur cette stratégie :

//+------------------------------------------------------------------+
//|                                      RVI Crossover - 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 rviArray[];
   double rviSignalArray[];

   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

   int rviDef = iRVI(_Symbol,_Period,10);

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);

   if(rviVal>0 && rviSignalVal>0 && rviVal>rviSignalVal)
     {
      Comment("Buy Signal","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }
   if(rviVal<0 && rviSignalVal<0 && rviVal<rviSignalVal)
     {
      Comment("Close","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }


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

Différences dans ce code

Conditions de la stratégie :

En cas de signal d'achat

   if(rviVal>0 && rviSignalVal>0 && rviVal>rviSignalVal)
     {
      Comment("Buy Signal","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

En cas de fermeture

   if(rviVal<0 && rviSignalVal<0 && rviVal<rviSignalVal)
     {
      Comment("Close","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

Après avoir compilé le code et l'avoir exécuté dans le terminal de trading comme nous l’avons vu pour le système de trading simple RVI, l'expert est attaché au graphique comme suit :

Croisement RVI - U attaché

Nous pouvons ensuite obtenir les signaux souhaités basés sur ce système de trading comme suit :

En cas de signal d'achat :

 Croisement RVI - U - signal d'achat

Comme nous pouvons le voir sur le graphique dans le coin supérieur gauche, nous avons reçu un signal avec les valeurs suivantes :

En cas de signal de clôture :

 Croisement RVI - U - signal de clôture

Comme nous pouvons le voir sur le graphique dans le coin supérieur gauche, nous avons reçu un signal avec les valeurs suivantes :

Il est clair que ce signal est celui dont nous avons besoin en fonction de notre stratégie de trading et de ses conditions pendant la tendance haussière.

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

//+------------------------------------------------------------------+
//|                                    RVI Crossover - 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 rviArray[];
   double rviSignalArray[];

   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

   int rviDef = iRVI(_Symbol,_Period,10);

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);

   if(rviVal<0 && rviSignalVal<0 && rviVal<rviSignalVal)
     {
      Comment("Short Signal","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }
   if(rviVal>0 && rviSignalVal>0 && rviVal>rviSignalVal)
     {
      Comment("Cover","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }
  }
//+------------------------------------------------------------------+  

Différences dans ce code

Conditions de la stratégie :

En cas de signal court

   if(rviVal<0 && rviSignalVal<0 && rviVal<rviSignalVal)
     {
      Comment("Short Signal","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

En cas de couverture

   if(rviVal>0 && rviSignalVal>0 && rviVal>rviSignalVal)
     {
      Comment("Cover","\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

Après avoir compilé et exécuté ce code comme nous l’avons appris précédemment, l'expert est attaché au graphique comme suit :

Croisement RVI - D attaché

Nous sommes maintenant prêts à recevoir des signaux basés sur cette stratégie et sur ce système de trading. Voici des exemples de signaux issus des tests :

En cas de signal court :

Croisement RVI - D - signal court

Comme nous pouvons le voir sur le graphique dans le coin supérieur gauche, nous avons reçu un signal avec les valeurs suivantes :

En cas de couverture :

Croisement RVI - D - signal de couverture

Comme nous pouvons le voir, nous avons un signal avec les valeurs suivantes :

Nous avons maintenant créé un système de trading basé sur la stratégie Croisement RVI - Tendance baissière pour générer des signaux pendant la tendance baissière.

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

//+------------------------------------------------------------------+
//|                                           RVI & MA 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()
  {
   MqlRates pArray[];
   double maArray[];
   double rviArray[];
   double rviSignalArray[];

   int Data=CopyRates(_Symbol,_Period,0,1,pArray);
   ArraySetAsSeries(maArray,true);
   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

   int rviDef = iRVI(_Symbol,_Period,10);
   int maDef = iMA(_Symbol,_Period,100,0,MODE_EMA,PRICE_CLOSE);

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);
   CopyBuffer(maDef,0,0,3,maArray);

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);
   double maVal = NormalizeDouble(maArray[0],3);

   if(pArray[0].close>maVal && rviVal>rviSignalVal)
     {
      Comment("Buy Signal","\n",
              "Closing price is ",pArray[0].close,"\n",
              "MA Value is ",maVal,"\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }
   if(pArray[0].close<maVal && rviVal<rviSignalVal)
     {
      Comment("Sell Signal","\n",
              "Closing price is ",pArray[0].close,"\n",
              "MA Value is ",maVal,"\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }


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

Différences dans ce code

Création de 4 tableaux pArray, maArray, rviArray et rviSignalArray. Ils utiliseront des éléments de type ’double’, sauf pArray, qui utilisera des éléments de type MqlRates pour stocker les informations sur les prix, les volumes et les spreads.

   MqlRates pArray[];
   double maArray[];
   double rviArray[];
   double rviSignalArray[];

Définition de l'indicateur AS_SERIES sur les tableaux pour renvoyer true ou false à l'aide de la fonction "ArraySetAsSeries". Définition des données à l'aide de la fonction "CopyRates" pour obtenir les données historiques de la structure MqlRates. Ses paramètres sont :

   int Data=CopyRates(_Symbol,_Period,0,1,pArray);
   ArraySetAsSeries(maArray,true);
   ArraySetAsSeries(rviArray,true);
   ArraySetAsSeries(rviSignalArray,true);

Définition du RVI en utilisant la fonction iRVI et de la Moyenne Mobile en utilisant la fonction iMA pour obtenir un handle sur l'indicateur de moyenne mobile. Ses paramètres sont :

   int rviDef = iRVI(_Symbol,_Period,10);
   int maDef = iMA(_Symbol,_Period,100,0,MODE_EMA,PRICE_CLOSE);

Récupération des données du buffer des indicateurs RVI et MA en utilisant la fonction "CopyBuffer".

   CopyBuffer(rviDef,0,0,3,rviArray);
   CopyBuffer(rviDef,1,0,3,rviSignalArray);
   CopyBuffer(maDef,0,0,3,maArray);

Définition des valeurs du RVI, du signal RVI et de la valeur de la MM à l'aide de la fonction NormalizeDouble.

   double rviVal = NormalizeDouble(rviArray[0],3);
   double rviSignalVal = NormalizeDouble(rviSignalArray[0],3);
   double maVal = NormalizeDouble(maArray[0],3);

Conditions de la stratégie :

En cas de signal d'achat

   if(pArray[0].close>maVal && rviVal>rviSignalVal)
     {
      Comment("Buy Signal","\n",
              "Closing price is ",pArray[0].close,"\n",
              "MA Value is ",maVal,"\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

En cas de signal de vente

   if(pArray[0].close<maVal && rviVal<rviSignalVal)
     {
      Comment("Sell Signal","\n",
              "Closing price is ",pArray[0].close,"\n",
              "MA Value is ",maVal,"\n",
              "Relative Vigor Index Value is ",rviVal,"\n",
              "RVI Signal Value is ",rviSignalVal);
     }

Après avoir compilé ce code et exécuté l'expert dans le terminal, il est attaché au graphique comme suit :

Croisement RVI, MA attaché

Nous pouvons maintenant obtenir des signaux générés par ce système de trading, comme dans les exemples de tests suivants.

En cas de signal d'achat :

 Croisement RVI, MA - signal d'achat

Comme nous pouvons le voir dans le graphique précédent dans le coin supérieur gauche, nous avons un signal avec les valeurs suivantes :

En cas de signal de vente :

Croisement RVI, MA - signal de vente

Nous avons un signal avec les valeurs suivantes :

Nous avons désormais créé un système de trading pour chaque stratégie mentionnée pour générer un signal automatisé sur la base de leurs conditions.


Conclusion

Après avoir parcouru toutes les rubriques de cet article, nous avons compris cet indicateur en détail. Nous avons appris ce que c'est, ce qu'il mesure et comment le calculer manuellement pour comprendre son concept principal. Nous avons appris à l'utiliser à travers 3 stratégies simples :

Nous avons conçu un plan étape par étape pour chaque stratégie afin de nous aider à prendre des positions de façon fluide et facilement. Nous avons créé un système de trading pour chacune des stratégies mentionnées pour générer des signaux automatiques après les avoir exécutés dans MetaTrader 5.

J'espère que vous avez essayé d'appliquer ce que vous avez appris par vous-même pour tirer le meilleur parti de cet article et développer vos compétences en programmation. J'espère également que vous avez trouvé cet article utile pour améliorer vos résultats de trading et obtenir des informations utiles liées au sujet de cet article. Si vous souhaitez lire d'autres articles similaires pour apprendre à concevoir un système de trading basé sur les indicateurs techniques les plus populaires, vous pouvez lire mes autres articles de cette série.