Prédire l'avenir avec les transformées de Fourier - page 2

 
ANG3110:

Seul l'indicateur ci-joint ne dessine rien.

C'est le cas. Faites défiler le graphique vers la gauche, vous verrez.

 

Dans le fil de discussion parallèle "Not Mashka's Business !", il y a une discussion sur les prévisions avec la "MA parfaite". Je pense que le lissage parfait ne peut être obtenu qu'en utilisant Fourier et le seuillage, comme cela est fait ici. L'estimation la plus précise se situe juste au milieu de la fenêtre d'échantillonnage. Vous devez effectuer des recherches similaires, mais en vous basant sur cet algorithme plutôt que sur l'AM.

Deuxièmement, vous pouvez justifier mathématiquement et précisément la valeur du seuil(porog), ce qui vous dispense d'essayer (de trouver la valeur optimale) de cette valeur.

Troisièmement, pour augmenter le temps de prévision, il faut accroître la précision des mesures de la valeur actuelle, ce qui est possible de deux façons : analyse simultanée de plusieurs devises, ou augmentation du nombre de fournisseurs de devis . Optimisation. DDE en VB (VBA)".

 

Pour voir l'avenir,

La case à cocher "Graphique décalé" doit être sélectionnée dans les paramètres de la fenêtre du graphique,

extern int InPast=0,

extern inttern Futur=100 pour le nombre de barres de la prévision.

 

Pour ce qui est du porog, je vais en principe refaire cette partie, car lorsqu'une fréquence dépasse le seuil, le graphique change brutalement, je vais peut-être le laisser tel qu'il était à klot, ou je ferai une décroissance douce.

 

Très drôle, idyuk, merci !

Je l'ai essayé dans le testeur, pour ainsi dire, en conditions réelles. Parfois, cela semble être la même chose, mais parfois c'est l'inverse, surtout avant les coups forts ou à la fin des coups forts.

Une situation très intéressante est celle où 3 indicateurs avec une puissance de deux différente, comme 8, 9 et 10, sont appliqués au graphique, et ils regardent souvent dans des directions différentes. Et si nous essayons d'utiliser la valeur moyenne de ces 3 indicateurs ?

L'avez-vous essayé ?

 
m_keeper:

En ce qui concerne le porog, en principe je vais refaire cette partie, car lorsqu'une fréquence franchit le seuil, le graphique change brusquement, je vais peut-être le laisser tel qu'il était à klot ou je vais faire une diminution douce.

Une dernière chose que j'aimerais faire, me débarrasser de la FFT (le degré de deux n'est pas le meilleur choix pour trouver la meilleure fenêtre). Mieux vaut une transformation discrète.

À propos du seuil, il existe des critères de Neumann Pearson, l'observateur idéal, recherchez-les. L'application de cette théorie permettra de s'affranchir de l'optimisation (recherche de la valeur optimale sur l'historique), et permettra de faire un seuil adaptatif, il y a pas mal de variantes de réalisation.

 

On dirait que le coin du numériseur est maintenant dans ce fil :), alors voici une question à laquelle je pense. Si vous prenez la densité spectrale moyenne pour le graphique des prix, vous obtenez ce genre d'image.


Vous pouvez voir que pour les basses fréquences, ce n'est pas un mauvais 1/f, mais pour les hautes fréquences, il y a une déviation notable de cette loi. Ce sujet a été discuté il y a quelque temps et la version principale a suggéré que nous ayons une sorte de bruit de numérisation. L'idée est qu'il pourrait être utile de filtrer cette composante. C'est-à-dire laisser un 1/f propre pour toute la gamme de fréquences. Et la question est de savoir comment y parvenir. L'idée est d'avoir une procédure qui prend en entrée un tableau de densité spectrale et qui sort les coefficients du filtre numérique. En principe, je peux penser à une fonction de pondération simple pour les amplitudes de Fourier, mais un filtre numérique serait plus économique à utiliser.
 

La bibliothèque contient maintenant le fichier __lib_FFT.mq4, alors que le texte de l'indicateur contient #_lib_FFT.mq4, c'est pourquoi il n'est pas dessiné.

 
Prival:
m_keeper:

Pour ce qui est du porog, en principe je vais refaire cette partie, car lorsqu'une fréquence franchit le seuil, le graphique change brutalement, je vais peut-être le laisser tel qu'il était à klot ou je vais faire une diminution douce.

Une dernière chose que j'aimerais faire, me débarrasser de la FFT (le degré de deux n'est pas le meilleur choix pour trouver la meilleure fenêtre). Mieux vaut une transformation discrète.

À propos du seuil, il existe des critères de Neumann Pearson, l'observateur idéal, cherchez-les. L'application de cette théorie permettra de s'affranchir de l'optimisation (recherche de la valeur optimale sur l'historique), et permettra de faire un seuil adaptatif, il y a pas mal d'options de mise en œuvre.

En principe, il est très facile de se débarrasser du degré 2 :

w=2*pi/T;

for (int k=0; k<=N; k++)
   {                                                              
      sum_cos=0.0; 
      sum_sin=0.0;                                           
      for (int n=0; n<T; n++) 
      {
         sum_cos+=Close[n]*MathCos(k*n*w); 
         sum_sin+=Close[n]*MathSin(k*n*w);
      }
      ak[k]=sum_cos*2/T; 
      bk[k]=sum_sin*2/T;
   }
   ak[0]=ak[0]/2;
   //------------------------------------
   for (n=T-1; n>=0; n--)
   {                                                        
      sum=0.0;                                       
      for (k=0; k<=N; k++)
      {                                                             
         sum+=ak[k]*MathCos(k*n*w)+bk[k]*MathSin(k*n*w);
      }                                                             
      fx[n]=sum;
   }

N - nombre d'harmoniques,

T - période.


La fenêtre optimale, ou plus précisément la période optimale T, est la plus facile à choisir selon 2 critères, par RMS minimum et par maximum de la somme des amplitudes harmoniques. Mais en raison des multiples vagues sur le marché, il y aura plusieurs fenêtres optimales.

Et nous devons également garder à l'esprit que lorsque vous essayez d'extrapoler, en raison des sinus et des cosinus périodiques, les composantes périodiques précédentes seront simplement ajoutées à la fin et, même si la probabilité de répétition est assez élevée, la phase et surtout l'amplitude seront toujours différentes et en fait, vous devez toujours ajuster la phase, comme un détecteur de phase.


La définition de phase comme MathArctan() n'est pas bonne à cause des propriétés d'arctan, il faut au moins prendre en compte +/- pi/2.

Il est préférable de définir la phase d'une manière légèrement différente.

 

Il n'est pas nécessaire de s'affranchir de la FFT, en fait il n'est pas nécessaire de diviser la série exactement en deux, elle est divisée pour augmenter la vitesse de comptage, et non parce qu'il est nécessaire de diviser strictement par deux. J'ai déjà travaillé avec FFT qui fonctionne avec des séries de n'importe quelle longueur, je le réécrirai pour mql un peu plus tard.


J'essaie de trouver les caractéristiques qui peuvent indiquer des faux positifs.

voici deux images, avec n=9 et n=10

Dans les deux cas, la queue de fenêtre a atteint un pic aigu qui pourrait être celui de l'avenir.

Maintenant, j'expérimente le prétraitement des séries, peut-être que cela aidera.


J'ai changé la condition de lissage, il n'y a plus de sauts de graphique maintenant, tout fonctionne sans problème.


Pour ce qui est de la redéfinition du graphique, je ne vois pas de problème.

Les prix de clôture ne sont pas le passé, mais les événements qui les ont générés - les vagues (dans le cas de Fourier) - sont le passé.

et nous en apprenons de plus en plus sur eux à chaque nouvelle barre.

Dossiers :
Raison: