una strategia di trading basata sulla teoria dell'onda di Elliott - pagina 58

 
Ci sono molte cose nella vita che all'inizio sembrano importanti o non importanti. Come i risultati di un primitivo Expert Advisor, che secondo Avals doveva essere giustificato all'inizio, anche se l'idea intuitiva dietro è corretta. Ma è stato più facile per me metterlo alla prova nella realtà che cercare di confutarlo. Se dura fino alla fine dell'anno - allora probabilmente mi metterò a testarlo nel tester :)
<br / translate="no">
Riassunto:
Deposito/prelievo: 5.000,00 Credito: 0,00
P/L chiuso: 1 186.63 P/L fluttuante: 560.29 Margine: 961.62
Saldo: 6 186.63 Patrimonio netto: 6 746.92 Margine libero: 5 785.30

Utile lordo: 3 669.45 Perdita lorda: 2 482.82 Utile netto totale: 1 186.63
Fattore di profitto: 1,48 Payoff previsto: 23,27
Drawdown assoluto: 143.75 Drawdown massimo (%): 858.39 (13.20%)

Totale compravendite: 51 Posizioni corte (% won): 26 (42.31%) Posizioni lunghe (% won): 25 (56.00%)
Compravendite in profitto (% del totale): 25 (49.02%) Compravendite in perdita (% del totale): 26 (50.98%)
La più grande operazione di profitto: 540,94 operazione di perdita: -292,62
Commercio medio di profitto: 146.78 commercio di perdita: -95.49
Massimo vittorie consecutive ($): 6 (1.099,13) perdite consecutive ($): 4 (-744,95)
Massimo profitto consecutivo (conteggio): 1.099,13 (6) perdita consecutiva (conteggio): -744,95 (4)
Media vittorie consecutive: 2 sconfitte consecutive: 2
 
Ho modificato un po' il mio Expert Advisor in termini di rilassamento delle condizioni di entrata nel mercato e ho aggiunto un lotto variabile.
I risultati sono qui https://c.mql5.com/mql4/forum/2006/06/new_results.zip
La dimensione del lotto variava da 5 a 80 dollari.
L'algoritmo di entrata/uscita è stato sviluppato considerando EURUSD, quindi l'Expert Advisor ha mostrato notevoli risultati sullo storico per 3 anni. A causa dei grandi calcoli, ho semplicemente limitato il campione in cui i canali sono stimati a solo 300 barre nel tempo prevedibile. Sono 12,5 giorni di trading. In effetti, dovremmo considerare campioni molto più lunghi per aumentare l'affidabilità dei punti di ingresso. Eseguirò l'Expert Advisor ancora una volta a campioni lunghi per ottenere una prova sperimentale della mia ipotesi, ma richiede un certo tempo per il calcolo. Dopo aver ottenuto il risultato mostrato nel file per EURUSD, ho eseguito l'Expert Advisor con gli stessi parametri (compreso il parametro di trailing stop!) con cui è stato ottimizzato per EURUSD su GBPUSD e USDCAD. Naturalmente non siamo riusciti ad ottenere un risultato degno di nota su altre 2 coppie, ma penso che il risultato ottenuto sia comunque positivo. Posso quindi trarre due conclusioni. Il primo è che il sistema proposto da Vladislav può essere redditizio con un'accurata realizzazione tecnica. Forse Vladislav è riuscito a trovare le caratteristiche universali che funzionano su tutte le coppie di valute senza correzioni. Se confrontiamo queste 3 coppie di valute, possiamo rilevare le seguenti differenze. USDCAD ha movimenti più veloci rispetto a EURUSD. Ci vogliono 3 ore perché EURUSD superi 1,5 figure, ma USDCAD può impiegare circa un'ora e ci troveremo di fronte al problema di un ritardo almeno per il timeframe H1, per il quale abbiamo ottenuto il risultato. In generale, ho intenzione di continuare la ricerca in questa direzione. Ora considero di fondamentale importanza un ragionevole irrigidimento degli stop. Quando e di quanto tirarli su quando si fa trading. Poiché è ovvio che il trailing stop standard non permetterà di prendere molto. Lo analizzeremo ulteriormente.
 
Buon pomeriggio Solandr!

Potrebbe dirmi quali condizioni ha allentato?
 
Potrebbe dirmi quali condizioni ha allentato?

Ho ridotto la dimensione del campione per il calcolo e anche il periodo del calcolo dell'indicatore dei livelli di Murray. Se hai un campione breve, ci sono più alti e bassi locali che soddisfano il punto di ingresso. Inoltre, se i livelli di Murray sono calcolati per un periodo più breve, si trovano più vicini l'uno all'altro, aumentando la probabilità di entrare nel mercato. Confronta 31 scambi dal file precedente e 80 da quello nuovo. Di conseguenza, il numero di accordi è aumentato, ma la loro qualità è diminuita di conseguenza. Tuttavia, l'introduzione di una dimensione variabile del lotto come quella di Vladislav è stata in grado di superare il risultato ottenuto dal file precedente per lo stesso periodo di tempo con la stessa quantità di rischio.
 
Ho pubblicato nuovi risultati di test dell'Expert Advisor https://c.mql5.com/mql4/forum/2006/06/new_results2.zip
I risultati mostrano i dati ottenuti su EURUSD a diverse lunghezze di campione, su cui si svolge la ricerca dei canali. Ho testato le lunghezze di 300 e 1000 barre nel periodo H1. Come previsto, un campione più lungo ha migliorato il rapporto sul test dell'Expert Advisor. Tuttavia, non è molto significativo. L'aumento della lunghezza del campione di più di 3 volte ha portato a un aumento del profitto finale solo del 4%. Come previsto, il numero di accordi in un campione più lungo è diventato meno (del 19%), ma la qualità degli accordi è migliorata come evidenziato dalla crescita del 14% dell'indice di redditività. Di conseguenza, la diminuzione del numero di affari insieme all'aumento della redditività ha portato ad un certo aumento del profitto totale.

Questo file contiene anche i risultati dell'Expert Advisor sviluppato per EURUSD, scambiato su USDCHF e USDJPY su un time frame di 300 barre in H1. Sulla coppia di valute USDCHF il risultato ha un chiaro spostamento positivo. E il risultato di USDJPY ha vagato intorno allo zero per tutto il periodo di test. Allo stesso tempo, la quantità di transazioni eseguite è stata circa 3 volte inferiore a quella che si è avuta testando lo stesso periodo su altre coppie di valute. Sulla base di questo, posso concludere che la natura di USDJPY ha una differenza significativa da quelle coppie su cui sono già stati condotti dei test. Quindi, se la mia versione della strategia funziona per USDJPY, avrà bisogno di qualche sforzo e forse di un algoritmo di entrata/uscita rivisto per questa coppia.
A proposito, Vladislav per qualche motivo non fa trading su tutte le coppie nella demo (anche se non ci sono problemi tecnici o sono risolvibili), ma fa trading solo su 3 coppie - EURUSD, USDCHF, GBPUSD. E penso che forse non è solo per divertimento, ma ha delle ragioni per farlo.
 
Ciao a tutti, ho quasi finito con MTSinka ;) - Come ho detto prima, lunedì chiuderò l'accesso diretto all'account Lites - quello che viene usato per caricare sull'Empire. Potrei semplicemente cambiare la password dell'investitore e forse anche lasciarla per i test - non ha senso far funzionare il computer per niente: ho intenzione di testarlo sull'account reale. Cosa succederà dopo - lo vedremo.
Spero che molti siano passati alla realizzazione pratica?

Buona fortuna e buone tendenze.
 
Buon pomeriggio Vladislav!

Molto carino da parte tua tornare su questo thread.
Mentre eri via ci sono state molte discussioni su diverse questioni:

1.
Jhonny 16.06.06 16:48 <br / translate="no">
Vladislav, potresti rispondere ad alcune domande ....
1) Il livello di importanza dei criteri di selezione dei canali è lo stesso (cioè si trova la combinazione ottimale di questi criteri), o c'è una selezione coerente dai criteri più significativi a quelli meno significativi.
2) Avendo letto molti libri intelligenti, ho dimenticato cosa trovare :). Se ho capito bene che intendi sotto un concetto di energia potenziale funzionale, non è chiaro perché la cerchiamo visto che il risultato della ricerca sarà l'equazione (non valore, ma funzione!) di una traiettoria al movimento lungo la quale cambia l'energia potenziale (durante il movimento, invece che al raggiungimento di un punto finale!Capisco che il prezzo si muove proprio lungo questa traiettoria e abbiamo già scelto l'equazione che approssima questa traiettoria (equazione di regressione), resta solo da concludere quanto bene approssimiamo questa traiettoria. Ma se la cerchiamo comunque, potremmo effettivamente trovare una funzione quadratica e se i coefficienti В e С nell'equazione Ах^2+Вх+С sono uguali (o molto vicini) a quelli dell'equazione di regressione, forse questo è il canale necessario, anche se sono già andato in dubbio :)


2. La domanda sulla distribuzione nel canale...

Vladislav 13.03.06 21:38

....C'è anche un teorema del limite centrale, che dice che qualsiasi distribuzione convergente con gradi di libertà crescenti converge a una distribuzione normale (quindi non ci interessa molto cosa sia dentro, basta che converga ;)....

Ho capito questa frase per dire che accettiamo la distribuzione nel canale come normale e calcoliamo gli intervalli di confidenza usando la funzione di distribuzione normale. Ma c'erano altre opinioni logicamente valide...


solandr 18.06.06 08:42

Onestamente solo la differenza a diversi valori di N è ciò che mi interessa. La distribuzione di Student rimanendo qualitativamente la stessa nella forma, cambia i suoi parametri quantitativi con diversi gradi di libertà. Quando il numero di gradi di libertà è molto grande, dovrebbe coincidere con la distribuzione normale. Quando il numero di gradi di libertà è piccolo, differisce dalla distribuzione normale.
La distribuzione di Student ha diversi gradi di libertà:
Per una probabilità del 99%:
q(30 bar)=2.750
q(100 bar)=2.626
q(300 bar)=2.593
q(1000 bar)=2.581
Se pensate che la differenza del 6% tra il valore del quantile per 30 barre e 1000 barre non valga lo sforzo extra, allora è una vostra scelta personale. Io ho un'opinione leggermente diversa.


3. E un'altra domanda sul coefficiente Hurst


Jhonny 17.06.06 16:49

...In realtà ho un valore di Hearst >1 per i canali con campioni più piccoli di circa 80, quindi ci deve essere un errore da qualche parte...

Ma nella pagina http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380, c'è una dichiarazione del genere:
È solo che c'è un errore nel trovare l'indice per approssimazione lineare, pensatelo come 1

Possiamo considerare vera questa affermazione o è più probabile che ci sia un errore nel mio algoritmo?

P.S. Spero di non disturbarti troppo con queste domande e non vedo l'ora di avere tue notizie.
 
Buon pomeriggio Vladislav!

Molto carino da parte tua cercare di nuovo in questo thread.
Mentre eri via c'erano alcune domande che sono state attivamente discusse nel thread:

1.
Jhonny 16.06.06 16:48

Vladislav, potresti rispondere ad alcune domande ....
1) Livello di importanza dei criteri di selezione dei canali a voi uniformemente (cioè si trova una combinazione ottimale di questi criteri), o c'è una selezione consecutiva da criteri più significativi a meno significativi.

No, non lo è - ognuno ha il suo fattore di ponderazione.

2) Dopo aver letto un sacco di libri intelligenti ho dimenticato cosa dovrei trovare :). Se ho capito bene che intendi sotto un concetto di funzionale dell'energia potenziale, non è chiaro perché lo cerchiamo visto che il risultato della ricerca sarà l'equazione (non valore, ma funzione!) di una traiettoria al cui movimento cambia l'energia potenziale (durante il movimento, invece che al raggiungimento di un punto finale!Capisco che il prezzo si muove proprio lungo questa traiettoria e abbiamo già scelto l'equazione che approssima questa traiettoria (equazione di regressione), resta solo da concludere quanto bene approssimiamo questa traiettoria. Ma se la cerchiamo comunque, potremmo trovare una funzione quadratica e se i coefficienti В e С nell'equazione Ах^2+Вх+С sono uguali (o molto vicini) a quelli dell'equazione di regressione, forse questo è il canale necessario, anche se ho già iniziato a sentire il dubbio :)


Ho già scritto molte volte su questo argomento. Quando cercate un campione per costruire un canale di regressione, vedrete che questo campione potrebbe non essere costruito nell'unico modo in questo momento. In qualche modo bisogna fare una selezione. Ho scelto questo come criterio principale - la logica è stata esposta sopra nel thread. L'algoritmo è semplice: costruisci, controlla, seleziona l'estremo.

2. Domanda sulla distribuzione nel canale...

Vladislav 13.03.06 21:38

....C'è anche un teorema del limite centrale che dice che qualsiasi distribuzione convergente con gradi di libertà crescenti converge a una distribuzione normale (quindi non ci interessa molto cosa sia dentro, basta che converga ;)....

Ho capito la frase nel senso che prendiamo la distribuzione nel canale come normale e calcoliamo gli intervalli di confidenza usando la funzione di distribuzione normale. Ma c'erano altre opinioni logicamente valide...


No - è considerato il peggiore convergente :) (converge anche a normale con l'aumento dei gradi di libertà). L'ho scritto e solandr l'ha capito molto bene.

solandr 18.06.06 08:42

Onestamente solo la differenza a diversi valori di N mi interessa. La distribuzione di Student rimanendo qualitativamente la stessa nella forma, cambia i suoi parametri quantitativi con diversi gradi di libertà. Quando il numero di gradi di libertà è molto grande, dovrebbe coincidere con la distribuzione normale. Quando il numero di gradi di libertà è piccolo, differisce dalla distribuzione normale.
La distribuzione di Student ha diversi gradi di libertà:
Per una probabilità del 99%:
q(30 bar)=2.750
q(100 bar)=2.626
q(300 bar)=2.593
q(1000 bar)=2.581
Se pensate che la differenza del 6% tra il valore del quantile per 30 barre e 1000 barre non valga lo sforzo extra, allora è una vostra scelta personale. Io ho un'opinione leggermente diversa.



3 E un'altra domanda sul coefficiente Hurst


Jhonny 17.06.06 16:49

...In realtà ho un valore Hearst >1 per i canali con campioni più piccoli di circa 80, quindi ci deve essere un errore da qualche parte...

Ma su http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380, c'è questa dichiarazione al riguardo:
è solo che c'è un errore nel trovare l'indice per approssimazione lineare, pensatelo come 1

Possiamo considerare vera questa affermazione o è più probabile che ci sia un errore nel mio algoritmo?

P.S. Spero di non disturbarti troppo con queste domande e non vedo l'ora di avere tue notizie.



Nei calcoli, naturalmente, sorge un errore. Il criterio principale è un valore sopra/sotto 0,5 (è nella versione della formula con k-valore 0,5, se lo si è spostato a zero o uno, quindi relativo al parametro di spostamento, rispettivamente). Per quanto riguarda l'errore nel tuo algoritmo - può essere ;). Chi altro può controllarlo se non voi?

Buona fortuna e buone tendenze.
 
Grazie Vladislav. Mi perdonerai, e sono già così sfacciato...
Ma la questione del funkitsonal, almeno per me, rimane aperta. Cercherò di inventare io stesso qualcosa in questo campo :). Grazie ancora!
 
Vengo su questo thread da molto tempo, ma allora non c'era ancora un quarto thread, che è dove sono iniziate tutte le cose interessanti. Grazie a tutti i partecipanti, ho imparato molte cose interessanti per me stesso. Ma, come si dice, molta conoscenza non è tanto una disgrazia, ma piuttosto delle domande.

Dopo aver letto ulteriore materiale sul calcolo dell'indice Hurst, mi sono imbattuto in uno studio di Feder. Ha sostenuto che la legge empirica - H=Log(R/S)/Log(0.5*N) funziona piuttosto male e dà dati relativamente corretti solo per piccoli campioni (anche se non è stato detto nulla sulla dimensione di questi campioni). Così, ho deciso di implementare il calcolo dell'indice di Hurst rigorosamente secondo i materiali metodici (sembra che si sia rivelato anche peggiore di quanto il signor Feder aveva avvertito).

Mi rendo conto che il codice potrebbe non essere il più ottimale in termini di prestazioni (un sacco di chiamate di funzione e tutto il resto), ma la cosa principale è l'altro - ho voluto chiarire se ho capito correttamente la logica del suo calcolo, perché i risultati mi sembrano discutibili, e ho deciso di chiedere alle persone competenti.

Nei miei calcoli ho preso in considerazione solo le formule dei manuali, niente di più.

L'implementazione è abbastanza semplice, sotto forma di uno script. Ci sono solo otto funzioni, di cui allego la descrizione qui sotto, così come i commenti nel codice sorgente. Ottenere l'array con i dati calcolati dalla funzione, implementata come segue. Ogni funzione riceve un array doppio out[]. L'array viene inizializzato nel corpo della funzione e i dati computazionali vengono scritti nell'array a seconda dello scopo della funzione.

void GetVn(double out[], int N, int i)
I forma "afflusso" - v[]. Prendo il prezzo di chiusura come afflusso. Il risultato viene scritto nell'array out[]

void SetArrayMv(double v[], double out[], int N)
Calcolo l'afflusso medio - mv[] per tutte le osservazioni. La funzione riceve l'afflusso e il numero di osservazioni - N

void SetArrayDv(double v[], double out[], double mv[], int N)
Calcolo la deviazione accumulata dell'afflusso - dv[]. Passo gli array "afflusso", "afflusso medio" e numero di osservazioni

void SetArrayR(double dv[], int N, double out[])
Calcolo lo spread - r[]. Passo l'afflusso e il numero di osservazioni alla funzione.

void SetArrayS(double v[], double mv[], double out[], int N)
Calcolo la deviazione standard s[]. Passo "afflusso", "afflusso medio" e numero di osservazioni

void SetArrayRS(double r[], double s[], double out[], int N)
calcolo lo spread normalizzato. Scrivo i valori di R/S nell'array rs[]. Passo le funzioni "spread", "deviazione standard" e numero di osservazioni

void LogN(double out[], int N)
Calcola il logaritmo dell'array da N

void GetLine(double x[],double y[], int N)
Calcolo i coefficienti della linea approssimativa.

//+------------------------------------------------------------------+
//|                                                        HERST.mq4 |
//+------------------------------------------------------------------+
#property copyright ""
#property link      "grasn@rambler.ru"

int start()
{
   int i=0;
   int N=100;

   double v[];                         // Приток
   
   double mv[];                        // Средний приток
   double dv[];                        // Накопившееся отклонение
   
   double r[];                         // Размах
   double s[];                         // Стандартное отклонение
   
   double rs[];                        // Нормированный размах
   double logN[];                      // логарифм от N
   
   GetVn(v, N, i);
   SetArrayMv(v, mv, N);
   SetArrayDv(v, dv, mv, N);

   SetArrayR(dv, N, r);
   SetArrayS(v, mv, s, N);
   SetArrayRS(r, s, rs, N);
   
   LogN(logN, N);
            
   GetLine(logN, rs, N);
   
   return(0);
}

// Приток
// ________________________________________________________________________________________
// "Приток".....................................................................double out[]
// Длина выборки......................................................................int N
// номер бара с которого выполняется выборка..........................................int i

void GetVn(double out[], int N, int i)
{
   int n;
   int k;      

   double x[];

   ArrayResize(x, N);
   ArrayInitialize(x, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);

   k=i+N-1;
      
   for(n=0; n<=N-1; n++)
   {
      x[n]=Close[k];
      k=k-1;
   }

   ArrayCopy(out, x, 0, 0, WHOLE_ARRAY);
      
   return(0);
}

// Средний приток 
// ________________________________________________________________________________________
// Приток ........................................................................double v[]
// Средний приток ..............................................................double out[]
// Число наблюдений...................................................................int N

void SetArrayMv(double v[], double out[], int N)
{
   int n;
   int i;
   
   double SUM;
   double mv[];

   ArrayResize(mv, N);
   ArrayInitialize(mv, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);
      
   for(n=0; n<=N-1; n++)
   {
      SUM=0.0;   
      
      for(i=0; i<=n; i++)
      {
         SUM=SUM+v[i];
      }
      
      mv[n]=(1.0/(n+1))*SUM;
   }
   
   ArrayCopy(out, mv, 0, 0, WHOLE_ARRAY);
 
   return(0);
}

// Накопившееся отклонение притока от среднего
// ________________________________________________________________________________________
// Приток ........................................................................double v[]
// Накопившееся отклонение притока..............................................double out[]
// Средний приток................................................................double mv[]
// Число наблюдений...................................................................int N

void SetArrayDv(double v[], double out[], double mv[], int N)
{
   int n;
   int i;
   
   double dv[];
   double SUM;

   ArrayResize(dv, N);
   ArrayInitialize(dv, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);

   for(n=0; n<=N-1; n++)
   {
      SUM=0.0;
      
      for(i=0; i<=n; i++)
      {
         SUM=SUM+(v[i]-mv[i]);
      }
      
      dv[n]=SUM;
   }
   
   ArrayCopy(out, dv, 0, 0, WHOLE_ARRAY);
      
   return(0);   
}

// Размах
// ________________________________________________________________________________________
// Накопившееся отклонение притока от среднего...................................double dv[]
// Размах.......................................................................double out[]
// Число наблюдений...................................................................int N

void SetArrayR(double dv[], int N, double out[])
{
   int n;
   
   int idMax;
   int idMin;
   
   double rn[];
      
   double max;
   double min;

   ArrayResize(rn, N);
   ArrayInitialize(rn, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);   

   for(n=1; n<=N; n++)
   {
      idMax=ArrayMaximum(dv, n, 0);
      idMin=ArrayMinimum(dv, n, 0);
      
      max=dv[idMax];
      min=dv[idMin];
      
      rn[n]=MathAbs(max-min);
   }
   
   ArrayCopy(out, rn, 0, 0, WHOLE_ARRAY);
   
   return(0);
}

// Стандартное отклонение
// ________________________________________________________________________________________
// Приток.........................................................................double v[]
// Среднее приток................................................................double mv[]
// Стандартное отклонение.......................................................double out[]
// Число наблюдений...................................................................int N

void SetArrayS(double v[], double mv[], double out[], int N)
{
   int n;
   int i;
   
   double sn[];
   double SUM;

   ArrayResize(sn, N);
   ArrayInitialize(sn, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);   
   
   for(n=0; n<=N-1; n++)
   {
      SUM=0.0;
      
      for(i=0; i<=n; i++)
      {
         SUM=SUM+MathPow((v[i]-mv[i]), 2);
      }
     
      sn[n]=MathSqrt((1.0/(n+1))*SUM);
   }
   
   ArrayCopy(out, sn, 0, 0, WHOLE_ARRAY);
   
   return(0);
}

// Нормированный размах
// ________________________________________________________________________________________
// Размах.........................................................................double r[]
// Стандартное отклонение.........................................................double s[]
// Нормированный размах.........................................................double out[]
// Число наблюдений...................................................................int N
void SetArrayRS(double r[], double s[], double out[], int N)
{
   int n;
   
   double rs[];

   ArrayResize(rs, N);
   ArrayInitialize(rs, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);  
      
   for(n=3; n<=N-1; n++)
   {  
      if(s[n]==0)
      {
         rs[n]=0.0;
      }
      else 
      {
         rs[n]=MathLog(r[n]/s[n]);
//         Print("rs ", rs[n]);
      }
   }
   
   ArrayCopy(out, rs, 0, 0, WHOLE_ARRAY);
   
   return(0);
}

// Логарифм N
// ________________________________________________________________________________________
// Логарифм N...................................................................double out[]
// Число наблюдений...................................................................int N
void LogN(double out[], int N)
{
   int n;
      
   double logN[];
   
   ArrayResize(logN, N);
   ArrayInitialize(logN, 0.0);

   ArrayResize(out, N);
   ArrayInitialize(out, 0.0);   
   
   for(n=3; n<=N-1; n++)
   {
      logN[n]=MathLog(n);
//      Print("n ", logN[n]);
   }
   
   ArrayCopy(out, logN, 0, 0, WHOLE_ARRAY);
   
   return(0);   
}

// Расчет коэффициентов аппроксимирующей линии
// ______________________________________________________________
// log(R/S).......................................................................double x[]
// log(N)................................................................................y[]
// Число наблюдений...................................................................int N
void GetLine(double x[],double y[], int N)
{
   double m=0;
   double b=0;
   double tan = 0;
      
   int size=N;
   double sum_x=0.0;
   double sum_y=0.0;
   double sum_xy=0.0;
   double sum_xx=0.0;
      
   for (int i=3; i<size; i++)
   {
      sum_x=sum_x+x[i];
      sum_y=sum_y+y[i];
      sum_xy=sum_xy+(x[i]*y[i]);
      sum_xx=sum_xx+(x[i]*x[i]);
   }

   m = (size*sum_xy - sum_x*sum_y) / (size*sum_xx - sum_x*sum_x);
   b = sum_y/size - m * sum_x / size;

           
   Print("Аппроксимирующая прямая: y(x)=", m, "x+", b);
   Print("Показатель Херста= ", m);
   
   return(0);
}



Ecco i grafici log(R/S) e log(N) per la serie casuale e per le quotazioni giornaliere EURUSD
La serie casuale è stata generata utilizzando MathRand() con i seguenti parametri.
N=100
Risultato:
H=0.5454
Y(x)=0.5454x+0.2653

All'aumentare di N, l'indice Hurst si avvicina a 0.5


Il calcolo EURUSD D1 è stato eseguito con i seguenti parametri:
i=0 (partendo da 27.06)
N=100

risultati del calcolo
H=1.0107 (perché è così grande?)
y(x)=1.0197x-0.5885



Ci sono alcune domande:
1. Cosa prendere per l'afflusso? Il prezzo pieno, la differenza di modulo, solo la differenza positiva? In altre parole, la nozione di "afflusso" nel metodo in questione ha qualche effetto sulla preparazione dei dati? O i dati da indagare devono essere presi come l'afflusso. Intuitivamente, per esempio, ho preso il prezzo di chiusura nei calcoli.

2. Come determinare lo spread normalizzato se i valori dello spread e soprattutto della deviazione standard sono zero. Questo è quasi sempre presente per piccoli indici di array. Nel caso in cui vengano rilevati degli zeri, per ora assegno anche zero allo spread normalizzato. È corretto? Per ora, abbandonate il calcolo dei primi valori.

3. Non mi piacciono i risultati stessi. Ecco un esempio di diverse varianti di calcolo per EURUSD:

Inflow (Close[] D1) su tutte le barre Hurst index 0.9069
Inflow (Close[] D1) i=0, N=200 Hurst index 0.8264

Le cifre sono troppo ottimistiche e i dati non coincidono con quelli di Vladislava (0.64 per tutta la serie), ma ci sono anche valori molto bassi. Per la differenza di prezzo di tutte le barre ottengo l'indice Hearst 0,5119

4. Sto calcolando correttamente l'afflusso medio. Un valore per tutte le iterazioni o dovrebbe cambiare a seconda dell'N corrente?

5. C'è la possibilità che io abbia fatto confusione e che la cifra sia calcolata in modo sbagliato. Per favore, spiegatemi dove ho sbagliato :o(

PS: Spero che i membri di questo forum mi aiutino a capire questo. Sarei molto grato a Vladislav se prendesse un momento e mi spiegasse dove sbaglio con una metodologia così semplice.