ProRealTime
Pour discuter sur l’interface de ProRealTime Software, nos configurations graphiques...

Re: Calcul RSI PRT

par BeerIsDead » 12 Mar 2019 20:50

J'ai l'impression qu'il manque la prise en compte de la moyenne précédente, pour la calcul des moyennes. J'illustre mes propos sur la base d'un RSI 14 périodes:

Code: Tout sélectionner
Moyenne_Hausse_RSI = Hausse_RSI / Periode_RSI;


Ca c'est bon pour le premier passage (le cas if (!isSeedInitialized) { de mon code). Ainsi dés que tu as tes 14 premières valeurs (si c'est du RSI 14 par exemple), tu peux calculer ta première moyenne.

Ensuite il faut faire quelque chose comme :

Code: Tout sélectionner
Moyenne_Hausse_RSI = Moyenne_Hausse_RSI_Precedente * 13 + Number(ecart_Hausse_RSI) / Periode_RSI;


Je sais pas si je suis clair ? En somme 1) initialiser la première valeur de chaque moyenne, à partir des 14 premières close ensuite 2) réutiliser à chaque fois la moyenne précédente * 13 + nouvelle valeur / 14.

Re: Calcul RSI PRT

par BeerIsDead » 12 Mar 2019 20:55

En somme c'est ce que je fais dans mon code Java, mais te prends pas la tête sur ce code c'est pas super compréhensible si on connaît pas Java (notamment Java 8)

Re: Calcul RSI PRT

par pingoo67 » 13 Mar 2019 12:25

Merci pour ton aide ca m'a fait comprendre mon erreur. Je reprenais non pas la somme n-1 + la valeur en cours mais la somme n-1 + la moyenne en cours....

Je vais modifier ma fonction et tester :)

Re: Calcul RSI PRT

par BeerIsDead » 13 Mar 2019 13:07

Ok bon hésite pas si t'as besoin alors. ;) content d'être utile aussi.

Re: Calcul RSI PRT

par Jim » 13 Mar 2019 21:07

Sur mon PRT le code du RSI est dispo dans un indicateur qui s'intitule "Exemple : RSI" et qui est éditable. Peut-être que vous l'avez aussi ?

Re: Calcul RSI PRT

par BeerIsDead » 13 Mar 2019 21:19

:o Bien vu Jim. J'avais zappé ça :mercichinois:

Re: Calcul RSI PRT

par pingoo67 » 15 Mar 2019 09:01

Merci pour votre aide j'ai enfin réussi à retrouver le bon resultat.
Je partage ma fonction même si elle n'est pas super propre :)

Code: Tout sélectionner
function Calc_RSI_V2(close, heure, Periode_RSI, UT){
   compteur_RSI_V2 = compteur_RSI_V2+1;
   compteur_RSI_Moins_V2 = compteur_RSI_V2-1;
   Periode_RSI_Moins = Periode_RSI-1;
   Tab_Valeur[compteur_RSI_V2] = close; // On envoi les niveau de cloture dans un tableau

   // Calcul de l'ecart UP et DOWN actuel
   if (compteur_RSI_V2 > 1) { // Si on a minimum deux valeur dans le tableau
      Ecart_Valeur = Tab_Valeur[compteur_RSI_V2]-Tab_Valeur[compteur_RSI_Moins_V2];
      if (Ecart_Valeur >= 0) {
         UP[compteur_RSI_V2] = Ecart_Valeur;
         DOWN[compteur_RSI_V2] = 0;
      } else if (Ecart_Valeur < 0) {
         DOWN[compteur_RSI_V2] = Ecart_Valeur*-1;
         UP[compteur_RSI_V2] = 0;
      }
   }
   
   var UP_Aff = document.getElementById("UP_Aff");
   UP_Aff.value = UP[compteur_RSI_V2];
   var DOWN_Aff = document.getElementById("DOWN_Aff");
   DOWN_Aff.value = DOWN[compteur_RSI_V2];
   
   // On verifi si on a assez de valeur pour lancer le calcul de l'indicateur
   if (compteur_RSI_V2 >= Periode_RSI+2) { // Calcul RSI en cours
      var Activation_RSI = document.getElementById("Activation_RSI");
      Activation_RSI.value = "Active";
      
      var Debut_RSI_V2 = compteur_RSI_V2-Periode_RSI;
      var Somme_UP = 0;
      var Somme_DOWN = 0;
      var UP_Boucle = 0;
      var DOWN_Boucle = 0;
      
      if (compteur_RSI_V2 == Periode_RSI+2) { // On fait la premiere moyenne
         for (var i=Debut_RSI_V2; i<=compteur_RSI_V2; i++) { // Boucle recuperation valeurs dans un tableau
            UP_Boucle = UP[i];
            DOWN_Boucle = DOWN[i];
            Somme_UP = Number(Somme_UP)+Number(UP_Boucle);
            Somme_DOWN = Number(Somme_DOWN)+Number(DOWN_Boucle);
         }
         AvgGain[compteur_RSI_V2] = Somme_UP/Periode_RSI;
         AvgLoss[compteur_RSI_V2] = Somme_DOWN/Periode_RSI;
      } else {
         AvgGain[compteur_RSI_V2] = (AvgGain[compteur_RSI_Moins_V2]*Periode_RSI_Moins+UP[compteur_RSI_V2])/Periode_RSI;
         AvgLoss[compteur_RSI_V2] = (AvgLoss[compteur_RSI_Moins_V2]*Periode_RSI_Moins+DOWN[compteur_RSI_V2])/Periode_RSI;
      }
      
      RS[compteur_RSI_V2] = AvgGain[compteur_RSI_V2]/AvgLoss[compteur_RSI_V2];
      
      if (AvgLoss[compteur_RSI_V2] == 0) {
         RSI_V2[compteur_RSI_V2] = 100;
      } else {
         RSI_V2[compteur_RSI_V2] = (100-(100/(1+RS[compteur_RSI_V2])));
      }
      var RSI_Aff = document.getElementById("Calcul_RSI");
      RSI_Aff.value = RSI_V2[compteur_RSI_V2];
      
   } else {
      // Profondeur pas suffisante
      var Activation_RSI = document.getElementById("Activation_RSI");
      Activation_RSI.value = "En cours de chargement";
   }

}

Articles en relation
Calcul de Range auto
par PalmierVener » 25 Mar 2018 01:06 (0 Réponses)
PRT : fonction ATAN (calcul d'angle)
par GOLDENBOY » 17 Aoû 2015 20:19 (6 Réponses)
Puissance de calcul ; Qui fait quoi ?
par Burzum » 18 Sep 2016 11:13 (14 Réponses)
PRT Soft a modifié sa méthode de calcul des PPJ Future DAX
Fichier(s) joint(s) par Nicola » 23 Oct 2016 21:26 (5 Réponses)

ProRealTime

Alors partagez-le 5 fois c'est bon pour la santé