une stratégie commerciale basée sur la théorie des vagues d'Elliott - page 58

 
Il y a beaucoup de choses dans la vie qui semblent importantes ou sans importance au premier abord. Comme les résultats d'un conseiller expert primitif, qui, selon Avals, a dû être justifié au début, bien que l'idée intuitive qui le sous-tend soit correcte. Mais il était plus facile pour moi de le mettre à l'épreuve dans la réalité que d'essayer de le réfuter. Si cela dure jusqu'à la fin de l'année, alors je pourrai probablement le tester dans le testeur :)
<br / translate="no">
Résumé :
Dépôt/retrait : 5 000,00 Facilité de crédit : 0,00
Transaction fermée P/L : 1 186.63 P/L flottant : 560.29 Marge : 961.62
Solde : 6 186,63 Capitaux propres : 6 746,92 Marge libre : 5 785,30

Bénéfice brut : 3 669,45 Perte brute : 2 482,82 Bénéfice net total : 1 186,63
Facteur de profit : 1.48 Gain attendu : 23.27
Drawdown absolu : 143.75 Drawdown maximal (%) : 858.39 (13.20%)

Total des transactions : 51 Positions courtes (% gagnées) : 26 (42.31%) Positions longues (% gagnées) : 25 (56.00%)
Transactions à profit (% du total) : 25 (49,02%) Transactions à perte (% du total) : 26 (50,98%)
Plus gros profit : 540.94 perte : -292.62
Moyenne des gains : 146.78 des pertes : -95.49
Maximum de gains consécutifs ($) : 6 (1,099.13) pertes consécutives ($) : 4 (-744.95)
Bénéfice consécutif maximal (compte) : 1,099.13 (6) perte consécutive (compte) : -744.95 (4)
Moyenne des victoires consécutives : 2 des défaites consécutives : 2
 
J'ai un peu modifié mon Expert Advisor en termes d'assouplissement des conditions d'entrée sur le marché et ajouté un lot variable.
Les résultats sont ici https://c.mql5.com/mql4/forum/2006/06/new_results.zip
La taille des lots variait de 5 à 80 dollars.
L'algorithme d'entrée/sortie a été développé en considérant l'EURUSD, ainsi le conseiller expert a montré des résultats considérables sur l'historique de 3 ans. En raison de l'ampleur des calculs, j'ai simplement limité l'échantillon dans lequel les canaux sont estimés à seulement 300 barres dans un temps prévisible. Cela représente 12,5 jours de bourse. En fait, nous devrions envisager des échantillons beaucoup plus longs pour augmenter la fiabilité d'un point d'entrée. Je vais exécuter le conseiller expert une fois de plus à des échantillons longs afin d'obtenir une preuve expérimentale de mon hypothèse, mais cela nécessitera un certain temps de calcul. Après avoir obtenu le résultat montré dans le fichier pour EURUSD, j'ai exécuté l'Expert Advisor avec les mêmes paramètres (y compris même le paramètre de trailing stop !) auxquels il a été optimisé pour EURUSD sur GBPUSD et USDCAD. Bien sûr, nous n'avons pas réussi à obtenir un résultat notable sur les 2 autres paires, mais je pense que le résultat obtenu est toujours biaisé positivement. Je peux donc tirer deux conclusions. La première est que le système proposé par Vladislav pourrait bien être rentable avec une réalisation technique précise. Peut-être Vladislav a-t-il réussi à trouver les caractéristiques universelles fonctionnant sur toutes les paires de devises sans correction. Si nous comparons ces 3 paires de devises, nous pouvons détecter les différences suivantes. L'USDCAD a des mouvements plus rapides que l'EURUSD. C'est-à-dire que s'il faut 3 heures à l'EURUSD pour passer les chiffres 1,5, il peut falloir 1 heure à l'USDCAD pour passer les chiffres 1,5, ce qui entraîne le grave problème d'un décalage, au moins pour la période H1, pour laquelle nous avons obtenu le résultat. D'une manière générale, je vais poursuivre mes recherches dans cette direction. Je considère désormais qu'un resserrement raisonnable des arrêts est d'une importance capitale. Quand et de combien les tirer vers le haut lors de la négociation. Comme il est évident que le stop suiveur standard ne permettra pas de prendre beaucoup. Analysons-la plus en détail.
 
Bonjour Solandr!

Pouvez-vous me dire quelles sont les conditions que vous avez assouplies ?
 
Pourriez-vous me dire quelles sont les conditions que vous avez assouplies ?

J'ai réduit la taille de l'échantillon pour le calcul et aussi la période de calcul de l'indicateur des niveaux de Murray. Si vous avez un échantillon de petite taille, il y a plus de hauts et de bas locaux satisfaisant le point d'entrée. En outre, si les niveaux de Murray sont calculés pour une période plus courte, ils sont situés plus près les uns des autres, ce qui augmente la probabilité d'entrer sur le marché. Comparez 31 transactions du fichier précédent et 80 du nouveau fichier. En conséquence, le nombre de transactions a augmenté, mais leur qualité a diminué en conséquence. Cependant, l'introduction d'une taille de lot variable comme celle de Vladislav a permis de dépasser le résultat obtenu dans le fichier précédent pour la même période de temps avec le même montant de risque.
 
J'ai publié de nouveaux résultats de tests de l'Expert Advisor https://c.mql5.com/mql4/forum/2006/06/new_results2.zip.
Les résultats montrent les données obtenues sur EURUSD à différentes longueurs d'échantillon, sur lesquelles la recherche de canaux a lieu. J'ai testé les longueurs de 300 et 1000 barres à la période H1. Comme prévu, un échantillon plus long a amélioré le rapport sur le test du conseiller expert. Cependant, il n'est pas très significatif. L'augmentation de la longueur de l'échantillon par plus de 3 fois a conduit à une augmentation du bénéfice final de seulement 4%. Comme prévu, le nombre de transactions dans un échantillon plus long a diminué (de 19%), mais la qualité des transactions s'est améliorée, comme en témoigne la croissance de 14% de l'indice de rentabilité. Par conséquent, la diminution du nombre de transactions et l'augmentation de la rentabilité ont entraîné une certaine augmentation du bénéfice total.

Ce fichier contient également les résultats de l'Expert Advisor développé pour l'EURUSD, négocié sur l'USDCHF et l'USDJPY sur une échelle de temps de 300 barres sur H1. Sur la paire de devises USDCHF, le résultat est clairement positif. Et le résultat de l'USDJPY a erré autour de zéro pendant toute la période de test. Dans le même temps, le montant des transactions effectuées était environ 3 fois moins élevé que lors des tests effectués sur la même période sur d'autres paires de devises. Sur cette base, je peux conclure que la nature de l'USDJPY présente une différence significative par rapport aux paires sur lesquelles des tests ont déjà été effectués. Ainsi, si ma version de la stratégie fonctionne pour l'USDJPY, elle nécessitera quelques efforts et éventuellement un algorithme d'entrée/sortie révisé pour cette paire.
A propos, Vladislav pour une raison quelconque ne trade pas sur toutes les paires dans la démo (bien qu'il n'y ait pas de problèmes techniques ou qu'ils puissent être résolus), mais il trade seulement sur 3 paires - EURUSD, USDCHF, GBPUSD. Et je pense que ce n'est peut-être pas juste pour s'amuser, mais il a des raisons pour cela.
 
Bonjour à tous ! J'ai presque terminé avec MTSinka ;) - Comme je l'ai dit précédemment, je fermerai lundi l'accès direct au compte Lites - celui qui est utilisé pour télécharger sur l'Empire. Je vais peut-être juste changer le mot de passe de l'investisseur et peut-être même le laisser pour le test - il n'y a pas de raison de faire tourner l'ordinateur pour rien : je vais tester sur le vrai compte. Ce qui se passera ensuite - nous verrons.
J'espère que beaucoup sont passés à la réalisation pratique ?

Bonne chance et bonnes tendances.
 
Bonjour Vladislav!

C'est très gentil de votre part de revenir sur ce fil.
Pendant votre absence, il y a eu beaucoup de discussions sur plusieurs questions :

1.
Jhonny 16.06.06 16:48 <br / translate="no">
Vladislav, pouvez-vous s'il vous plaît répondre à quelques questions....
1) Le niveau d'importance des critères de sélection des canaux est le même (c'est-à-dire que vous trouvez la combinaison optimale de ces critères), ou il y a une sélection cohérente des critères les plus importants vers les moins importants.
2) Ayant lu beaucoup de livres intelligents, j'ai oublié ce qu'il fallait trouver :). Si j'ai bien compris que vous entendez par là un concept d'énergie potentielle fonctionnelle, on ne voit pas très bien pourquoi on le cherche puisque le résultat de la recherche sera l'équation (pas la valeur, mais la fonction !) d'une trajectoire en mouvement le long de laquelle le changement d'énergie potentielle (pendant le mouvement, et non pas à l'atteinte d'un point final !Je comprends que le prix évolue le long de cette même trajectoire et nous avons déjà choisi l'équation qui se rapproche de cette trajectoire (équation de régression), il ne reste plus qu'à conclure à quel point nous nous rapprochons de cette trajectoire. Mais si on la cherche quand même, on peut effectivement trouver une fonction quadratique et si les coefficients В et С dans l'équation Ах^2+Вх+С sont égaux (ou très proches) de ceux de l'équation de régression, c'est peut-être le canal nécessaire, bien que je sois déjà entré dans le doute :).


2. La question de la distribution dans le canal...

Vladislav 13.03.06 21:38

....Il existe également un théorème de la limite centrale, qui dit que toute distribution convergente avec des degrés de liberté croissants converge vers une distribution normale (on ne se soucie donc pas vraiment de ce qu'elle contient, du moment qu'elle converge ;).....

J'ai compris que cette phrase signifiait que nous acceptons la distribution dans le canal comme normale et que nous calculons les intervalles de confiance en utilisant la fonction de distribution normale. Mais il y avait d'autres opinions logiques...


solandr 18.06.06 08:42

Honnêtement, c'est la différence entre les différentes valeurs de N qui m'intéresse. La distribution de Student restant qualitativement la même dans sa forme, elle change ses paramètres quantitatifs avec différents degrés de liberté. Lorsque le nombre de degrés de liberté est très grand, il devrait coïncider avec la distribution normale. Lorsque le nombre de degrés de liberté est faible, elle diffère de la distribution normale.
La distribution de Student a différents degrés de liberté :
Pour une probabilité de 99% :
q(30 bars)=2.750
q(100 bars)=2.626
q(300 bars)=2.593
q(1000 bars)=2.581
Si vous pensez que la différence de 6% entre la valeur du quantile pour 30 barres et 1000 barres ne vaut pas l'effort supplémentaire, c'est votre choix personnel. J'ai une opinion légèrement différente.


3. Et encore une question sur le coefficient de Hurst.


Jhonny 17.06.06 16:49

...En fait, j'ai une valeur Hearst >1 pour les canaux dont les échantillons sont inférieurs à 80 environ, il doit donc y avoir une erreur quelque part...

Mais sur la page http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380, il y a une déclaration à ce sujet :
C'est juste qu'il y a une erreur dans la recherche de l'indice par approximation linéaire, pensez-y comme 1

Peut-on considérer cette affirmation comme vraie ou est-il plus probable que mon algorithme comporte une erreur ?

P.S. J'espère que je ne vous dérange pas trop avec ces questions et je me réjouis d'avoir de vos nouvelles.
 
Bonjour Vladislav!

C'est très gentil de votre part de revenir sur ce fil.
Pendant votre absence, quelques questions ont été activement discutées dans le fil de discussion :

1.
Jhonny 16.06.06 16:48

Vladislav, pouvez-vous s'il vous plaît répondre à quelques questions....
1) Le niveau d'importance des critères de sélection des chaînes chez vous de manière uniforme (c'est-à-dire que vous trouvez une combinaison optimale de ces critères), ou bien il y a une sélection consécutive des critères les plus importants aux moins importants.

Non, chacun a son propre facteur de pondération.

2) Après avoir lu beaucoup de livres intelligents, j'ai oublié ce que je devais trouver :). Si j'ai bien compris que vous entendez par là un concept de fonction de l'énergie potentielle, on ne voit pas bien pourquoi on le cherche puisque le résultat de la recherche sera l'équation (pas la valeur, mais la fonction !) d'une trajectoire à laquelle le mouvement change d'énergie potentielle (pendant le mouvement, au lieu de l'atteinte d'un point final !).Je comprends que le prix évolue le long de cette même trajectoire et nous avons déjà choisi l'équation qui se rapproche de cette trajectoire (équation de régression), il ne reste plus qu'à conclure à quel point nous nous rapprochons de cette trajectoire. Mais si on la cherche quand même, on peut trouver une fonction quadratique et si les coefficients В et С dans l'équation Ах^2+Вх+С sont égaux (ou très proches) de ceux de l'équation de régression, peut-être est-ce le canal nécessaire, bien que je commence déjà à avoir des doutes :).


J'ai déjà écrit sur ce sujet à plusieurs reprises. Lorsque vous recherchez un échantillon pour construire un canal de régression, vous verrez que cet échantillon n'est peut-être pas construit de la seule manière possible à ce moment-là. D'une manière ou d'une autre, une sélection doit être faite. C'est le critère principal que j'ai choisi - le raisonnement a été exposé plus haut dans le fil de discussion. L'algorithme est simple : construire, vérifier, sélectionner l'extrême.

2. Question sur la distribution dans le canal...

Vladislav 13.03.06 21:38

....Il existe également un théorème de la limite centrale qui dit que toute distribution convergente avec des degrés de liberté croissants converge vers une distribution normale (donc on ne se soucie pas vraiment de ce qu'elle contient, du moment qu'elle converge ;).....

J'ai compris que cette phrase signifiait que nous considérons la distribution dans le canal comme normale et que nous calculons les intervalles de confiance en utilisant la fonction de distribution normale. Mais il y avait d'autres opinions logiques...


Non - il est considéré comme le pire convergent :) (elle converge également vers la normale avec des degrés de liberté croissants). J'ai écrit à ce sujet et Solandr l'a très bien compris.

solandr 18.06.06 08:42

Honnêtement, c'est juste la différence à différentes valeurs de N qui m'intéresse. La distribution de Student restant qualitativement la même dans sa forme, elle change ses paramètres quantitatifs avec différents degrés de liberté. Lorsque le nombre de degrés de liberté est très grand, il devrait coïncider avec la distribution normale. Lorsque le nombre de degrés de liberté est faible, elle diffère de la distribution normale.
La distribution de Student a différents degrés de liberté :
Pour une probabilité de 99% :
q(30 bars)=2.750
q(100 bars)=2.626
q(300 bars)=2.593
q(1000 bars)=2.581
Si vous pensez que la différence de 6% entre la valeur du quantile pour 30 barres et 1000 barres ne vaut pas l'effort supplémentaire, c'est votre choix personnel. J'ai une opinion légèrement différente.



3 Et une autre question sur le coefficient de Hurst.


Jhonny 17.06.06 16:49

...En fait, j'ai une valeur Hearst >1 pour les canaux dont les échantillons sont inférieurs à 80 environ, il doit donc y avoir une erreur quelque part...

Mais sur http://www.xaoc.ru/index.php?option=com_forum&Itemid=0&page=viewtopic&p=2380, il y a cette déclaration à ce sujet :
c'est juste qu'il y a une erreur en trouvant l'indice par approximation linéaire, pensez-y comme 1

Peut-on considérer cette affirmation comme vraie ou est-il plus probable que mon algorithme comporte une erreur ?

P.S. J'espère que je ne vous ennuie pas trop avec ces questions et je me réjouis d'avoir de vos nouvelles.



Dans les calculs, bien sûr, une erreur se produit. Le critère principal est une valeur supérieure/inférieure à 0,5 (c'est dans la version de la formule avec la valeur k de 0,5, si vous l'avez décalée à zéro ou à un, alors respectivement par rapport au paramètre de décalage). En ce qui concerne l'erreur dans votre algorithme - c'est possible ;). Qui d'autre que vous peut le vérifier ?

Bonne chance et bonnes tendances.
 
Merci Vladislav. Vous me pardonnerez, et je suis déjà si effronté...
Mais la question du funkitsonal, du moins pour moi, reste ouverte. Je vais essayer d'inventer moi-même quelque chose dans ce domaine :). Merci encore !
 
Je viens sur ce fil depuis longtemps, mais il n'y avait pas encore de quatrième fil, et c'est là que toutes les choses intéressantes ont commencé. Merci à tous les participants, j'ai appris beaucoup de choses intéressantes pour moi-même. Mais comme on dit, beaucoup de connaissances, c'est beaucoup moins de malheurs, mais plutôt des questions.

Après avoir lu des documents supplémentaires sur le calcul de l'indice de Hurst, je suis tombé sur une étude de Feder. Il a affirmé que la loi empirique - H=Log(R/S)/Log(0,5*N) fonctionne plutôt mal et ne donne des données relativement correctes que pour de petits échantillons (bien que rien ne soit dit sur la taille de ces échantillons). J'ai donc décidé de mettre en œuvre le calcul de l'indice Hearst en suivant strictement les matériaux méthodiques (il semble que cela se soit avéré encore pire que ce que M. Feder avait annoncé).

Je me rends compte que le code n'est peut-être pas le plus optimal en termes de performances (beaucoup d'appels de fonctions et tout), mais l'essentiel est autre - je voulais clarifier si j'avais bien compris la logique de son calcul, car les résultats me semblent discutables, et j'ai décidé de demander à des personnes bien informées.

Dans mes calculs, je n'ai pris en compte que les formules des manuels, rien de plus.

La mise en œuvre est assez simple, sous la forme d'un script. Il n'y a que huit fonctions, dont je joins la description ci-dessous, ainsi que des commentaires dans le code source. Récupération du tableau contenant les données calculées par la fonction, implémentée comme suit. Chaque fonction reçoit un tableau double out[]. Le tableau est initialisé dans le corps de la fonction et les données de calcul sont écrites dans le tableau en fonction de l'objectif de la fonction.

void GetVn(double out[], int N, int i)
I forme "inflow" - v[]. Je prends le prix de clôture comme entrée. Le résultat est écrit dans le tableau out[]

void SetArrayMv(double v[], double out[], int N)
Je calcule le débit entrant moyen - mv[] pour toutes les observations. La fonction reçoit le flux entrant et le nombre d'observations - N

void SetArrayDv(double v[], double out[], double mv[], int N)
Je calcule la déviation accumulée du flux entrant - dv[]. Je passe les tableaux "inflow", "inflow moyen" et le nombre d'observations

void SetArrayR(double dv[], int N, double out[])
Je calcule l'écart - r[]. Je passe le débit entrant et le nombre d'observations à la fonction.

void SetArrayS(double v[], double mv[], double out[], int N)
Je calcule l'écart type s[]. Je passe "inflow", "mean inflow" et le nombre d'observations

void SetArrayRS(double r[], double s[], double out[], int N)
Je calcule l'écart normalisé. J'écris les valeurs de R/S dans le tableau rs[]. Je passe les fonctions "spread", "standard deviation" et le nombre d'observations

void LogN(double out[], int N)
Calcule le logarithme du tableau à partir de N

void GetLine(double x[],double y[], int N)
Je calcule les coefficients de la ligne d'approximation.

//+------------------------------------------------------------------+
//|                                                        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);
}



Voici les graphiques log(R/S) et log(N) pour la série aléatoire et pour les cotations quotidiennes de l'EURUSD
La série aléatoire a été générée à l'aide de MathRand() avec les paramètres suivants.
N=100
Résultat :
H=0.5454
Y(x)=0.5454x+0.2653

Au fur et à mesure que N augmente, l'indice de Hurst se rapproche de 0.5


Le calcul EURUSD D1 a été effectué avec les paramètres suivants :
i=0 (à partir de 27.06)
N=100

résultats du calcul
H=1,0107 (pourquoi est-ce si énorme ?)
y(x)=1,0197x-0,5885



Il y a quelques questions :
1. Que prendre pour l'afflux ? Le prix total, la différence modulo, seulement la différence positive ? En d'autres termes, la notion d'"influx" dans la méthode en question a-t-elle un effet sur la préparation préalable des données ? Ou bien faut-il considérer les données à examiner comme l'afflux. Par exemple, j'ai intuitivement pris le prix de clôture dans les calculs.

2. Comment déterminer le spread normalisé si les valeurs du spread et surtout de l'écart-type sont nulles. Ceci est presque toujours présent pour les petits index de tableaux. Au cas où des zéros seraient détectés, pour l'instant, j'attribue également un zéro à l'écart normalisé. Est-ce correct ? Pour l'instant, abandonnez le calcul des premières valeurs.

3. Je n'aime pas les résultats eux-mêmes. Voici un exemple de plusieurs variantes de calcul pour EURUSD :

Inflow (Close[] D1) sur toutes les barres Indice Hurst 0.9069
Inflow (Close[] D1) i=0, N=200 Indice Hurst 0.8264

Les chiffres sont trop optimistes et les données ne coïncident pas avec celles de Vladislava (0.64 pour toute la série), mais il y a aussi des valeurs très basses. Pour la différence de prix de toutes les barres, j'obtiens l'indice de Hearst 0.5119

4. Est-ce que je calcule correctement la moyenne des entrées. Une seule valeur pour toutes les itérations ou doit-elle changer en fonction du N actuel ?

5. Il est possible que j'aie tout mélangé et que le chiffre soit calculé de manière erronée. Veuillez m'expliquer où je me suis trompé :o(

PS : J'espère que les membres de ce forum m'aideront à comprendre. Je serais très reconnaissant à Vladislav de prendre un moment pour m'expliquer où je me trompe avec une méthodologie aussi simple.