Exposant de Hurst avec R/S
Forums › ProRealTime forum Français › Support ProBuilder › Exposant de Hurst avec R/S
- This topic has 13 replies, 2 voices, and was last updated 6 years ago by Alf639.
-
-
04/01/2018 at 10:21 AM #66901
bonjour,
Je voudrais calculer le rescaled range (https://en.wikipedia.org/wiki/Rescaled_range) pour arriver à l’exposant de Hurst (mémoire longue) sur une période glissante de n périodes
Je n’arrive pas à programmer les boucles qui servent à :
1- calculer les écarts à la moyenne sur n périodes (passées bien sûr),
2- faire pour chaque période le cumul de ces écarts,
3- prendre les maxi et mini de cette somme (toujours sur n périodes).
Merci d’avance pour votre aide.
04/03/2018 at 7:35 AM #66981Il y a déjà quelques topics au sujet des formules de Hurst, mais je pense que ta demande fait référence à ce type d’indicateur:
https://www.prorealcode.com/topic/indicateur-fractal-bands-conversion-mq4-vers-prorealtime/
https://www.prorealcode.com/prorealtime-indicators/fractal-bands/
On peut trouver pas mal de choses avec l’outil de recherche du site.
04/05/2018 at 2:30 PM #6730904/05/2018 at 3:05 PM #67311Le rescaled range, ça n’est pas la première partie du FDI (Fractal Dimension Index) ?: https://www.prorealcode.com/prorealtime-indicators/fractal-dimension-index-fdi/
04/05/2018 at 3:58 PM #67314Euh…non. Pour le calcul du R/S, on prend la moyenne (des rentabilités et pas des prix car il faut que la série soit stationnaire) sur la période considérée. Ensuite on calcule les écarts à la moyenne pour chaque période. On fait la somme de ces écarts puis on prend le plus grand et le plus petit de ces écarts. Etc, etc.
Dans le FDI, c’est le cours le plus haut et le plus bas qui sont à la base du calcul.
Merci pour l’aide…
04/05/2018 at 4:18 PM #67316En lisant la description du lien Wikipedia, je comprends que le range de la série est la valeur la plus haute moins la valeur la plus basse (notion statistique élémentaire). Puis de diviser ce résultat par l’écart type de cette même série pour obtenir le “rescaled range”.
Avec ta dernière description je pense que je pourrai m’en sortir, mais que prends-tu en considération pour les valeurs de début et fin de périodes et revenu pour la “rentabilité” ?
04/05/2018 at 4:48 PM #67322On “stationnarise” la série des cours en travaillant sur (prix – prix de la période précédente)/prix de la période précédente (rentabilité ou return).
Je n’ai pas vraiment compris la question pour valeurs de début et de fin de période… Ce que j’entendais par période, c’est un jour sur graphique daily, une heure sur graphique horaire, etc.
Je ne sais pas si j’ai été assez clair…
04/06/2018 at 10:03 AM #67407Voilà ce que j’ai fais:
123456789101112131415161718192021period = 100MAtype = 1rent = (customclose-customclose[1])/customclose[1]if barindex>period thenavg = average[period,MAtype](rent)//SQUAREROOT[(summation(from d = 1 to n)(Close-Moving average on n days)²]ecart = SQR(summation[period](square(rent-avg)))sum = summation[period](ecart)hh = highest[period](sum)ll = lowest[period](sum)diff = hh-llendifreturn diffIci on retourne que la différence “diff”, je ne sais pas par quelle valeur il faut la diviser ensuite, par ecart ou par sum?
04/08/2018 at 4:02 PM #67551Bonjour,
Gros merci pour la proposition de code et désolé pour la réponse tardive.
Ca me parait bien, je me demande pourquoi je suis parti dans des boucles quand j’ai essayé de le faire !!
C’est un détail mais, pour l’écart à la moyenne, on prend les valeurs réelles négatives ou positives (pas besoin de carré/racine ou valeur absolue). Par ailleurs, il ne me semble pas conforme d’utiliser summation dans le calcul de ecart. Ecart est la différence, pour chaque observation sur la période (period), entre rent et la moyenne des rent. Si je comprends bien, le langage Prorealtime calcule l’historique de cette valeur automatiquement et on peut alors faire la somme
diff doit donner le Rescaled range (R/S) après les petites modif décrites à la ligne précédente. Pour obtenir R/S, il suffit de diviser diff par l’écart-type des rent calculé sur la même période.
Ensuite, on obtient l’exposant de Hurst en divisant le log de R/S par le log de period.
Pour info, si on suit Chamoli and al., 2007 (Computers & Geosciences 33), il faudrait éviter de choisir une période plus petite que 180 observations.
Encore merci.
04/09/2018 at 9:29 AM #67588Bonjour,
J’ai essayé de de faire les modifs à partir de votre code (cf. ci-dessous) mais j’ai le même problème qu’avec ce que j’avais fait : les valeurs initiales de l’exposant de Hurst sont très basses voire négatives, ce qui est plus qu’improbable ! Ensuite, il y a une hausse progressive pour aller vers des valeurs très réalistes.
1234567891011121314151617181920212223//duree calcul Hurst exponent per = 160rent = (close - close[1])/close[1]if barindex>per thenavg = average[per](rent)ecart = rent-avgsum = summation[per](ecart)hh = highest[per](sum)ll = lowest[per](sum)diff = hh-llstdret = STD[per](rent)endifrs = diff / stdrethu = LOG(rs) / LOG(per)b = 0.5RETURN hu AS "Exposant de Hurst", b AS "0,5"04/09/2018 at 9:57 AM #6759404/09/2018 at 3:45 PM #67761Au-dessus de 0,5, les valeurs faibles (fortes) de variation de l’indice tendent à être suivies par des valeurs faibles (fortes) (persistance), au-dessous, de 0,5, c’est le contraire (anti-persistance). A 0,5, c’est une marche au hasard. Plus l’écart à 0,5 est important, plus la caractéristique est marquée. Le domaine de définition est environ -0,9<=>+0,9.
N’avez-vous pas des valeurs curieuses (très faibles) sur les premiers calculs, juste après que la condition sur barindex soit remplie ?
04/09/2018 at 4:03 PM #6776204/09/2018 at 4:22 PM #67766Je crois que j’ai compris. Il y a probablement un souci avec le calcul de sum. Ce n’est pas très facile à expliquer mais, si on prend un calcul sur 200 périodes, sum[199] (1er calcul pour 200 périodes) est égale à ecart puis sum[198] est égale à sum[199] + ecart[198], etc, etc. Ensuite, on prend le max et le min de sum sur les 200 calculs.
-
AuthorPosts
Find exclusive trading pro-tools on