Indice Hearst - pagina 18

 
surfer >> :

Ho solo fatto un errore in un punto dell'indicatore.

Il fattore di ponderazione non dà nulla, è una differenza di millesimi.

Beh, il fatto che rimbalza, sì.

Avete provato la seconda funzione?

Le foto sarebbero belle da vedere... non dell'indicatore ma della linea risultante stessa.

 
TheXpert >> :

Avete provato la seconda funzione?

Mi piacerebbe vedere qualche foto... Non dell'indicatore ma della linea risultante.

Non ho provato il secondo.

Non sono sicuro delle immagini che volete vedere.

Ti sto dando l'indicatore, forse mostrerà le foto :)


File:
ivar_2.mq4  5 kb
 
Prival >>:

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

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

Tutto funziona se si prende n non da 1 a 10...ma almeno fino a 3000

La tua seconda versione del calcolo è anche corretta - di nuovo, inserisci più dati...

 
tenyps писал(а) >>

Tutto funziona se si prende n non da 1 a 10...ma almeno fino a 3000

La tua seconda versione del calcolo è anche corretta - di nuovo, inserisci più dati...

E poi? Appuntato, nessuna connessione con il quoziente o mi manca qualcosa?

 

Buon pomeriggio) Ho letto parzialmente tutte le pagine, ma purtroppo non capisco tutti gli algoritmi. Una domanda simile è già volata qui. Per quanto ho capito la sintassi di MQL4 e C è più o meno la stessa, ma le strutture sono diverse, e ci sono più "librerie" con diverse funzioni statistiche.

Ho scritto l'algoritmo in C, quindi ecco un po' di codice:


doppio Herst( doppio *S, int n)

{

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

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

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

*Hn = (doppio *) 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("Non c'è abbastanza memoria!!!\n");

ritorno -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];

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

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

RSn = Rn / Sn;

libero(h);

libero(hn);

libero(h1);

libero(h2);

ritorno RSn;

}


Poi gli array vengono infilati negli array:

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

}

e una linea retta è disegnata usando ANC.

Domanda - Di tanto in tanto incontro un valore superiore a 1, ma molto raramente. Non riesco a capire quale sia l'errore. Ho controllato ANC su linee semplici (y=ax+b, per a={0,0.5,1,2,3} e b = {-1,0,1,2})

E se per i primi 3-5 valori campione la deviazione standard è 0? Quindi RS è uguale all'infinito e semplicemente non considera questi punti?

Oh, e la cosa principale - ho ragione nello stare la sequenza di punti (all'inizio per n_min, poi per lo stesso n_min + il prossimo valore, ecc.) o dovrei dividere il segmento di n in alcune parti uguali e contare per ciascuna?

Ho cercato di capirlo da solo, ma dopo due settimane ho rinunciato. L'algoritmo è stato basato sui seguenti libri - "Fractal Analysis of Financial Markets" di Peters e "The Fundamentals of Financial Mathematics" di Shiryaev.

 
Disa >>:

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


Perdonatemi se non rispondo alla domanda, ma potrebbe tornarvi utile.
Con un caso di prova, però.
Rigorosamente secondo Peters "Analisi frattale dei mercati finanziari".

File:
 
Vita >>:

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

Il file di prova stesso. H~0.72

File:
brown72.txt  10 kb
 
Ho fatto una lunga conversione per accelerare il calcolo,
e ho finito con questa formula semplificata per l'esponente di 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);           
    } 
Sembra essere logicamente corretto,
anche se senza logaritmi.
 
Urain >>:
Долго преобразовывал чтоб ускорить расчёт,
в результате получил вот такую упрощённую формулу для показателя Херста :
логически вроде бы всё верно,
хотя без логарифмов.

Questa non è una formula semplificata per l'indice Hearst. Vi sbagliate.
Ci sono molti modi per calcolare la cifra di Hearst e sono tutti ad alta intensità di lavoro. Quale hai semplificato?
E la vostra formula può essere inferiore a zero, il che non è affatto utile.

 
Vita >>:

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

Non si tratta dei numeri assoluti, ma dell'idea.

La formula mostra il rapporto tra il tasso di regressione (angolo) e la deviazione standard, che penso sia nello spirito di Hirst.

Motivazione: