Hypothèse basée sur Fourier - page 11

 
equantis >> :

C'est vrai, ça vaut le coup de garder...

Afin de clore le problème, je voudrais montrer une image avec des résultats typiques :

Bleu - prix

Rouge - prévision faite par le programme avec une transformation en cosinus à partir de 0

violet - la même courbe, mais calculée à partir du point de départ de la prévision (100)

Vert - prévision simple basée sur la courbe des prix (j'ai utilisé la fonction predict intégrée)



Comme je l'ai déjà écrit, l'astuce consiste à identifier le modèle. Le problème est vraiment compliqué, il ne peut être résolu à l'œil nu. Et sur le plan conceptuel, si je puis dire - la "prédiction dans le domaine des fréquences" est utilisée dans certaines tâches, mais très spécifiques.

 
grasn писал(а) >>

Comme je l'ai déjà écrit, l'astuce consiste à identifier le modèle. Le problème est vraiment compliqué, il ne peut être résolu à l'œil nu. Et sur le plan conceptuel, si je puis dire, la "prédiction dans le domaine des fréquences" est utilisée dans certaines tâches, mais de manière très spécifique.

J'ai passé presque un mois à démonter avec PF et tout cela en vain. J'ai essayé de prédire n'importe quoi, des séries temporelles, des moyennes mobiles, des indicateurs, mais tous les résultats étaient 50-50 (ou à peu près).

J'ai essayé d'appliquer votre idée avec la transformation discrète du cosinus. Malheureusement, après la transformation en cosinus inverse, j'ai obtenu l'image suivante : dans le signal restauré, la dernière barre (pour laquelle la prédiction a été faite) répète simplement l'avant-dernière barre (la dernière de l'ensemble d'entraînement) avec une certaine petite erreur.

Juste au cas où, je vais décrire un bref algorithme de ce que je faisais :

  1. Prise d'un ensemble de données de test commençant avec START = 1:FRAME
  2. Sélection d'une fenêtre WIND pour chaque ensemble de données (c'est-à-dire que l'échantillonnage a été effectué dans l'intervalle START:START+WIND)
  3. Pour chaque fenêtre, j'ai fait une transformation en cosinus.
  4. Tous les résultats ont été combinés dans une matrice de taille FRAME x WIND où les colonnes contiennent les coefficients de conversion en cosinus pour chaque fréquence et les lignes contiennent les coefficients d'une fréquence pour chaque ensemble de données de test.
  5. Pour chaque colonne de coefficients, un petit réseau neuronal a été formé, qui, sur la base de quatre valeurs précédentes, prédit très bien le changement à venir de la sinusoïde de 1 bar. Le réseau neuronal a été utilisé parce que la prédiction AR donnait de très mauvais résultats.

  1. Il a produit un ensemble de coefficients prédits pour l'ensemble des données prédites, où la dernière barre était la valeur souhaitée. Une transformation en cosinus inverse a été effectuée sur les coefficients prédits.

Maintenant une pause... hélas, il n'y a pas de miracles - la barre prédite avec une petite erreur a répété l'avant-dernière barre de la séquence de test. En analysant le résultat, j'ai découvert que la première mesure avait légèrement changé, tandis que toutes les autres étaient restées inchangées, se déplaçant juste d'une position (comme il se doit). Mais la dernière mesure ne fait que répéter l'avant-dernière au lieu de prédire. (Voir l'image ci-dessus).

Ce résultat peut être utile pour certains mathématiciens, mais pour la tâche de prédiction de l'EURUSD, il s'est avéré inutile. Hélas. Pourtant. )))

 
equantis >> :

J'ai passé presque un mois à essayer de régler les choses avec l'IP et tout cela pour rien. J'ai essayé de tout prédire : séries temporelles, moyenne mobile, indicateurs, et tous les résultats de prédiction étaient 50-50 (ou à peu près).

J'ai essayé d'appliquer votre idée avec la transformation discrète du cosinus. Malheureusement, après la transformation en cosinus inverse, j'ai obtenu l'image suivante : dans le signal restauré, la dernière barre (pour laquelle la prédiction a été faite) répète simplement l'avant-dernière barre (la dernière de l'ensemble d'entraînement) avec une certaine petite erreur.

Juste au cas où, je vais décrire un bref algorithme de ce que je faisais :

  1. Prise d'un ensemble de données de test commençant avec START = 1:FRAME
  2. Sélection d'une fenêtre WIND pour chaque ensemble de données (c'est-à-dire que l'échantillonnage a été effectué dans l'intervalle START:START+WIND)
  3. Pour chaque fenêtre, j'ai fait une transformation en cosinus.
  4. Tous les résultats ont été combinés dans une matrice de taille FRAME x WIND où les colonnes contiennent les coefficients de conversion en cosinus pour chaque fréquence et les lignes contiennent les coefficients d'une fréquence pour chaque ensemble de données de test.
  5. Pour chaque colonne de coefficients, un petit réseau neuronal a été formé, qui, sur la base de quatre valeurs précédentes, prédit très bien le changement à venir de la sinusoïde de 1 bar. Le réseau neuronal a été utilisé parce que la prédiction AR donnait de très mauvais résultats.

  1. Il a produit un ensemble de coefficients prédits pour l'ensemble des données prédites, où la dernière barre était la valeur souhaitée. Une transformation en cosinus inverse a été effectuée sur les coefficients prédits.

Maintenant une pause... hélas, il n'y a pas de miracles - la barre prédite avec une petite erreur a répété l'avant-dernière barre de la séquence de test. En analysant le résultat, j'ai découvert que la première mesure avait légèrement changé, tandis que toutes les autres étaient restées inchangées, se déplaçant juste d'une position (comme il se doit). Mais la dernière mesure ne fait que répéter l'avant-dernière au lieu de prédire. (Voir l'image ci-dessus).

Ce résultat peut être utile pour certains mathématiciens, mais pour la tâche de prédiction de l'EURUSD, il s'est avéré inutile. Hélas. Pourtant. )))

Et je n'ai pas dit qu'il y aura un miracle. Il y a quelques incertitudes :

Un petit réseau neuronal a été formé pour chaque colonne avec des coefficients, qui prédisent très bien la variation à venir de 1 bar de la sinusoïde sur la base des quatre valeurs précédentes. Le réseau neuronal a été utilisé parce que la prédiction AR donnait de très mauvais résultats.

Je ne suis pas sûr qu'un NS sur 4 numéros d'une série aussi complexe puisse très bien prédire l'avenir. Très douteux. Et si c'est le cas, pourquoi y a-t-il un tel écart ? Et qu'est-ce que "onde sinusoïdale" a à voir avec ça. Quant au modèle AR, chaque courbure, est en fait un processus AR, très proche de celui-ci dans ses propriétés. L'identification d'un tel modèle est compliquée, de nombreuses méthodes sont utilisées (curieusement, plus compliquées que celles de NS) : backtracking et prédiction, critère d'Akiache, "valise", fonctions de transfert autorégressives, critères d'accord et de maximum de vraisemblance (et leurs variantes), corrélation mutuelle, approximation stochastique, filtrage (il est utilisé pour l'identification du modèle également).


Au moins l'idée est aussi bonne que la tienne. :о) Si ça n'a pas marché - ça n'a pas marché, et ça arrive, je suis sincèrement désolé pour votre temps, je ne peux pas aider à le rendre. Mais au fait, voici https://forum.mql4.com/ru/24888/page9 juste au cas où je vous aurais prévenu. Il y a beaucoup de subtilités dans ce modèle, dont certaines que j'ai modestement omises. L'une de ces subtilités est qu'il est inutile de prédire un seul comptage avec un tel modèle, tout simplement inutile. Vous n'obtiendrez tout simplement pas la précision que vous souhaitez, et vous ne l'obtiendrez jamais. Vous devez prédire au sens "statistique". C'est comme ça, en termes littéraires.


 

Grasn, en tout cas, merci beaucoup pour l'idée ! Le processus s'est déroulé de manière agréable et sans perte de temps ;)) Et le résultat est encore à venir !

grasn писал(а) >>

Je ne suis pas sûr que NS sur 4 numéros d'une série aussi complexe puisse bien prédire l'avenir. J'en doute fort. Et si c'est le cas, pourquoi y a-t-il un tel écart ? Et qu'est-ce que "onde sinusoïdale" a à voir avec ça.

1. Si l'on considère la variation de chaque coefficient DCT, comme vous l'avez écrit, cela ressemble beaucoup à une sorte de "courbe-sinusoïde" (avec une fréquence correspondant au numéro d'ordre du coefficient, surtout pour les oscillations à haute fréquence), qui changera d'amplitude avec le temps. J'ai essayé d'utiliser la RA pour prédire "de face", à peu près comme dans votre exemple dans Matcad.

Si l'on considère la prédiction de "curvulina" pour 1 barre, alors AR (du moins j'ai essayé toutes les formules que j'ai dans Matlab) donne des résultats très imprécis, surtout pour les "curvulina-sinusoïdes" avec des périodes impaires (bien que je ne les ai peut-être pas toutes essayées). Dans ce cas, un simple réseau neuronal (dans Matlab, il est implémenté avec la fonction newlind (je pense que ce n'est même pas un réseau neuronal, mais juste un solveur pour un ensemble d'équations linéaires), lorsqu'il est prédit par 1 point, donne de très bons résultats (visuellement).

2. J'ai l'air plutôt bien, sur 50 barres il prédit exactement (presque exactement) 48 barres et les déplace d'une position vers la gauche, ne faisant qu'une erreur (je ne sais pas pourquoi) et la dernière (je suis désolé, je faisais tout pour). Apparemment, les "micro erreurs" de la prédiction sur chaque "curveline" s'additionnent de cette manière dans la conversion inverse.

J'ai essayé de "tricher" avec l'algorithme en essayant de cacher la dernière barre à l'intérieur du segment de test (j'ai fait un simple décalage circulaire), mais ce sont toujours les dernières et premières barres qui étaient fausses.

3. A propos, j'ai essayé de prédire non seulement la clôture (comme la série la plus mal prédite), mais aussi le haut/bas/ouvert, et la différence et même les minimums-maximums du zigzag. (Comme exemple de série, avec un axe temporel déformé). Comme le résultat est le même, la conclusion est évidente : cette méthode ne fait que déplacer N-2 mesures vers la gauche d'une mesure "de front", mais ne prévoit pas les zigzags.

Quant au modèle AR, chaque courbe est en fait un processus AR, très proche de celui-ci par ses propriétés. L'identification d'un tel modèle est compliquée, de nombreuses méthodes sont utilisées (étrangement, plus compliquées que NS) : inversion et prédiction, critère d'Akiache, "valise", fonctions de transfert autorégressives, critères d'accord et de maximum de vraisemblance (et leurs variantes), corrélation mutuelle, approximation stochastique, filtrage (qui est également utilisé pour l'identification du modèle).

Merci une deuxième fois - beaucoup de nouveaux noms - plus à essayer !

Il y a beaucoup de subtilités dans ce modèle, dont certaines que j'ai humblement omises. L'une de ces subtilités est qu'il est inutile de prédire un seul échantillon par un tel modèle, c'est tout simplement inutile. Vous n'obtiendrez tout simplement pas la précision que vous souhaitez, et vous ne l'obtiendrez jamais. Vous devez prédire au sens "statistique". C'est comme ça, en termes littéraires.

Merci une troisième fois, essayons dans un sens "statistique"))

 

Heureux d'avoir pu vous aider. Bonne chance :o)


À propos, j'essaierai de publier une prévision dans le fil de discussion "Test du système de prévision en temps réel", ici à proximité. Si je le fais d'ici lundi, sinon je le posterai plus tard. Alors, "contactez-nous".

 
2 grasn:

1. Une idée m'est venue à l'esprit : si j'applique deux fois la transformée en cosinus (d'abord sur la section test et ensuite sur chacune des "courbes" qui ressemblent tant à des ondes sinusoïdales), cela ne va-t-il pas "améliorer" les propriétés prédictives du processus ? Je vais essayer de vous donner les résultats demain.

2. Bien sûr, dans le cas de la prédiction à long terme de certains types de processus, l'AR sera meilleur, bien que la superposition de deux sinusoïdes puisse être interpolée par un réseau neuronal.

3. Ai-je bien compris (j'ai lu votre post quelque part), que pour cette méthode il est préférable de prédire ln(Xi/Xi-1) au lieu de Close lui-même ?

 
equantis >> :

1. Une idée m'est venue à l'esprit : si j'applique deux fois la transformée en cosinus (d'abord sur la section test et ensuite sur chacune des "courbes" qui ressemblent tant à des ondes sinusoïdales), cela ne va-t-il pas "améliorer" les propriétés prédictives du processus ? Je vais essayer de vous donner les résultats demain.

2. Bien sûr, dans le cas de la prédiction à long terme de certains types de processus, l'AR sera meilleur, bien que la superposition de deux sinusoïdes puisse être interpolée par un réseau neuronal.

3. Ai-je bien compris (j'ai lu votre post quelque part), que pour cette méthode il est préférable de prédire ln(Xi/Xi-1) plutôt que Close lui-même ?

1. il faut l'essayer.

2. le fait est que la dynamique par fréquences n'a pas de périodes, c'est un processus compliqué et pas du tout une superposition d'ondes sinusoïdales.

3. oui, c'est l'une des options pour amener à une rangée stationnaire.