Index de Hearst - page 18

 
surfer >> :

J'ai juste fait une erreur à un endroit de l'indicateur.

Le facteur de pondération ne donne rien, c'est une différence de quelques millièmes.

Eh bien, le fait qu'il rebondisse, oui.

Avez-vous essayé la deuxième fonction ?

Des photos seraient bienvenues... non pas de l'indicateur mais de la ligne résultante elle-même.

 
TheXpert >> :

Avez-vous essayé la deuxième fonction ?

J'aimerais voir quelques photos... Non pas de l'indicateur mais de la ligne résultante.

Je n'ai pas essayé le second.

Je ne suis pas sûr des photos que vous voulez voir.

Je vous donne l'indicateur, peut-être qu'il montrera les photos :)


Dossiers :
ivar_2.mq4  5 kb
 
Prival >>:

Ерунда какая то с этим херстом. Добиться 0.5 не получилось (хотя давал на вход rnd()). Единицы тоже не получилось добиться, хотя подавал x(i)=i (ряд все время растет)

Файл прилагаю, версия маткада 14

Tout fonctionne si vous prenez n non pas de 1 à 10... mais au moins jusqu'à 3000.

Votre deuxième version du calcul est également correcte - encore une fois, alimentez plus de données...

 
tenyps писал(а) >>

Tout fonctionne si vous prenez n non pas de 1 à 10... mais au moins jusqu'à 3000.

Votre deuxième version du calcul est également correcte - encore une fois, alimentez plus de données...

Et ensuite ? Épinglé, pas de lien avec le quotient ou je rate quelque chose ?

 

Bonjour) J'ai lu partiellement toutes les pages, mais malheureusement je ne comprends pas tous les algorithmes. Une question similaire s'est déjà posée ici. D'après ce que j'ai compris, la syntaxe MQL4 et C est plus ou moins la même, mais les structures sont différentes, et il y a plus de "bibliothèques" avec différentes fonctions statistiques.

J'ai écrit l'algorithme en C, voici donc un peu de code :


double Herst( double *S, int n)

{

double *h1 = (double *) malloc(sizeof(double ) * n),

*h2 = (double *) malloc(sizeof(double ) * n),

*h = (double *) malloc(sizeof(double ) * n),

*Hn = (double *) malloc(sizeof(double ) * n),

h_ = 0, Rn = 0, Sn = 0, RSn = 0 ;

h[0] = 0, h[1] = 0, Hn[0] = 0, Hn[1] = 0 ;

if( h == NULL || Hn == NULL || h1 == NULL || h2 == NULL )

{

printf("Pas assez de mémoire !!!\n") ;

retourner -1 ;

}

for( int i = 1 ; i < n ; i++ ) h[i-1] = log( S[i] / S[i-1] ) ;

for(int i = 1 ; i < n ; i++ ) Hn[i] = Hn[i-1] + h[i-1] ;

if( (n - 1) != 0) h_ = Hn[n - 1] / ( n - 1 ) ;

h2[0] = (h[0] - h_) * (h[0] - h_)

h1[0] = (h[0] - h_) ;

for( int i = 1 ; i < n - 1 ; i++ )

{

h1[i] = h1[i-1] + (h[i] - h_) ;

h2[i] = h2[i-1] + (h[i] - h_) * (h[i] - h_) ;

}

qsort( (double *)h1, n-1, sizeof(T), Comp ) ;

Rn = h1[n - 2] - h1[0] ;

si( (n - 1) != 0 ) Sn = h2[n-2] / ( n - 1 ) ;

si( (n - 1) == 0 ) Sn = h2[n-2] ;

RSn = Rn / Sn ;

libre(h) ;

libre(hn) ;

libre(h1) ;

libre(h2) ;

retourner RSn ;

}


Puis les tableaux sont poussés dans les tableaux :

for( int i = n_min ; i < n ; i++ )

{

x1[i - n_min] = log( double( i * 0.5) )

y1[i - n_min] = log( Herst( S1, i ) ;

}

et une ligne droite est tracée en utilisant ANC.

Question - Il m'arrive de rencontrer une valeur supérieure à 1, mais très rarement. Je ne comprends pas quelle est l'erreur. J'ai vérifié l'ANC sur des lignes simples ( y=ax+b, pour a={0,0.5,1,2,3} et b = {-1,0,1,2} )

Que se passe-t-il si pour les 3-5 premières valeurs de l'échantillon, l'écart-type est de 0 ? Donc RS est égal à l'infini et ne tient pas compte de ces points ?

Oh, et la chose principale - ai-je raison de placer la séquence de points (au début pour n_min, puis pour le même n_min + la valeur suivante, etc.) ou dois-je diviser le segment de n en plusieurs parties égales et compter pour chacune ?

J'ai essayé de le découvrir moi-même, mais deux semaines plus tard, j'ai abandonné. L'algorithme est basé sur les livres suivants : "Fractal Analysis of Financial Markets" de Peters et "The Fundamentals of Financial Mathematics" de Shiryaev.

 
Disa >>:

День добрый) Прочитал частично все страницы, но к сожалению не все алгоритмы понял.


Pardonnez-moi de ne pas répondre à la question, mais cela pourrait vous être utile.
Avec un cas d'essai, cependant.
Strictement selon Peters "Fractal Analysis of Financial Markets".

Dossiers :
 
Vita >>:

Пардон, что не по вопросу ответ, но возможно пригодится.
С тестовым примером зато.

Le fichier de test lui-même. H~0.72

Dossiers :
brown72.txt  10 kb
 
J'ai fait une longue conversion pour accélérer le calcul,
et j'ai fini par obtenir cette formule simplifiée pour l'exposant de Hurst :
.
for(i=limit;i>=0;i--)
    {double LWma=iMA(NULL,0,period,0,MODE_LWMA,PRICE_CLOSE,i);
     double Sma=iMA(NULL,0,period,0,MODE_SMA ,PRICE_CLOSE,i);     
     double Bma=iBands(NULL,0,period,1,0,PRICE_CLOSE,MODE_PLUSDI,i);
     if(Bma!=Sma) e0[i]=(LWma - Sma)/(Bma-Sma);           
    } 
Il semble être logiquement correct,
bien que sans logarithmes.
 
Urain >>:
Долго преобразовывал чтоб ускорить расчёт,
в результате получил вот такую упрощённую формулу для показателя Херста :
логически вроде бы всё верно,
хотя без логарифмов.

Il ne s'agit pas d'une formule simplifiée de l'indice Hearst. Vous vous trompez.
Il existe de nombreuses façons de calculer le chiffre de Hearst et elles demandent toutes beaucoup de travail. Lequel avez-vous simplifié ?
Et votre formule peut être inférieure à zéro, ce qui n'est pas du tout utile.

 
Vita >>:

Это не упрощенная формула для показателя Херста. Вы заблуждаетесь.
Способов расчета показателя Херста много и все они трудоемки. Вы какую упрощали?
И ваша формула по ходу может быть меньше нуля, что совсем не кстати.

Ce ne sont pas les chiffres absolus qui comptent, c'est l'idée qui compte.

La formule montre le rapport entre le taux de régression (angle) et l'écart-type, ce qui, je pense, est dans l'esprit de Hirst.