Aide avec Fourier - page 9

 
ANG3110 писал (а):

Ce n'est pas un mauvais résultat si on fait une colonne vertébrale pour la décomposition de Fourier. En particulier, nous pouvons facilement extrapoler la régression vers l'avant et tracer le Fourier relatif à celle-ci. Il est possible d'ajuster un mouving comme support et de tracer la somme des harmoniques, dans une fenêtre séparée, comme si le mouving continuait linéairement. Vous pouvez vous baser sur une moyenne à variation régulière comme T3 décalée d'une demi-période en arrière pour correspondre exactement aux données, et extrapoler la fin avec une parabole, qui est ajustée pour une valeur efficace minimale, et tracer le Fourier relatif à cette extrapolation. Mais dans tous les cas, il y a une forte probabilité de répéter les cycles si nous construisons plusieurs variantes de l'extrapolation de Fourier avec des périodes différentes et si nous optimisons chaque variante par rapport à la valeur efficace minimale. S'il y a une coïncidence dans les lectures de plusieurs variantes, elles peuvent être considérées comme probables. S'il y a une avance ou un retard supplémentaire, cela produira un signal de différence correctif qui pourra être utilisé pour l'auto-réglage ou le recalcul. Cela rappelle le détecteur FATF des récepteurs radio, qui est le plus efficace et le plus insensible aux interférences.
En fait, ce n'est pas un si gros problème de sortir des séries de Fourier sans penser à l'avance dans le temps pour que la fin soit proche de la série. C'est la sortie de Fourier des futures cotations qui est intéressante. Vous avez posté des captures d'écran de votre indicateur traçant la série de Fourier pour le temps futur, ce qui coïncide bien avec la réalité. Sur quels principes fonctionne-t-il ?
 
shobvas писал (а):

En fait, ce n'est pas un gros problème de sortir la série de Fourier sans s'avancer dans le temps, de sorte que la fin soit proche de la série. Il est intéressant de sortir la série de Fourier des futures cotations. Vous avez posté des captures d'écran de votre indicateur traçant la série de Fourier pour le temps futur, ce qui coïncide bien avec la réalité. Sur quels principes fonctionne-t-il ?
La décomposition s'y fait par rapport à LinearRegressin. Comme dans une radio, pour obtenir la meilleure audibilité, il est souhaitable de s'accorder sur un minimum de bruit et un maximum de signal, c'est-à-dire que l'accord se fait avec un minimum de RMS. Pour changer facilement la période - un script de ligne droite ou de canal de régression est appliqué. Les données finales sont capturées et transmises à l'indicateur. Ainsi, en déplaçant les lignes, nous changeons instantanément la période et recalculons l'ensemble du tableau. Le commentaire indique la RMS et les ajustements sont effectués en fonction de la RMS minimale plus un petit décalage à l'œil pour faire coïncider autant que possible les hautes et les basses. Nous avons également ajouté la possibilité de modifier le nombre d'harmoniques grâce à la fonction GetAsyncKeyState(int nVirtKey), puis en appuyant sur les flèches appropriées du clavier, nous pouvons rapidement ajouter ou soustraire le nombre d'harmoniques. La même chose est faite au moyen d'un script, qui dessine le tout. J'ai déjà écrit un peu sur les paramètres et les variantes auparavant. Pour différentes périodes et différentes plausibilités, le nombre d'harmoniques est pris différemment.
Mais des résultats plus ou moins satisfaisants peuvent être obtenus si l'harmonique minimale est de 12 à 24 heures et la période minimale de 2-3 jours ou plus. Ceci est pour la prévision quotidienne. Pour les prévisions globales, la technique est la même mais les périodes sont plus longues bien sûr. Selon l'échelle, les prévisions mensuelles et annuelles à long terme coïncident très bien avec les données réelles, surtout sur certaines fréquences, qui se répètent périodiquement avec un très haut degré de probabilité. Afin d'obtenir des statistiques sur ces fréquences - un analyseur de spectre intelligent est réalisé, qui peut également être traîné sur toute la plage de temps.
 
ANG3110 писал (а):
La décomposition y est faite par rapport à la LinearRegressin. La queue est comme une radio, pour obtenir la meilleure audibilité, il est souhaitable d'accorder pour un minimum de bruit et un maximum de signal, c'est-à-dire que l'accord se fait en fonction du minimum RMS. Pour changer facilement la période - un script de ligne droite ou de canal de régression est appliqué. Les données finales sont capturées et transmises à l'indicateur. Ainsi, en déplaçant les lignes, nous changeons instantanément la période et recalculons l'ensemble du tableau. Le commentaire indique la RMS et les ajustements sont effectués en fonction de la RMS minimale plus un petit décalage à l'œil pour faire coïncider autant que possible les hautes et les basses. Nous avons également ajouté la possibilité de modifier le nombre d'harmoniques grâce à la fonction GetAsyncKeyState(int nVirtKey), puis en appuyant sur les flèches appropriées du clavier, nous pouvons rapidement ajouter ou soustraire le nombre d'harmoniques. La même chose est faite au moyen d'un script, qui dessine le tout. J'ai déjà écrit un peu sur les paramètres et les variantes auparavant. Pour différentes périodes et différentes plausibilités, le nombre d'harmoniques est pris différemment.
Mais des résultats plus ou moins satisfaisants peuvent être obtenus si l'harmonique minimale est de 12 à 24 heures et la période minimale de 2-3 jours ou plus. Ceci est pour la prévision quotidienne. Pour les prévisions globales, la technique est la même mais les périodes sont plus longues bien sûr. Selon l'échelle, une longue échelle de temps, des mois et des années, donnera une très bonne correspondance avec les données réelles, en particulier avec certaines fréquences, qui se répètent périodiquement avec un très haut degré de probabilité. Afin d'obtenir des statistiques sur ces fréquences - un analyseur de spectre intelligent est réalisé, qui peut également être traîné sur toute la plage de temps.

Je ne comprends pas vraiment...
La série de Fourier est construite à partir de la différence de prix et de la valeur de la ligne de régression, non ?

Ce n'est pas très clair en ce qui concerne la queue cependant..... Quel est l'ajustement pour le RMS minimum ?
Merci d'avance pour les réponses =)
 
shobvas писал (а):
Je ne comprends pas vraiment...
Une série de Fourier est construite à partir de la différence de prix et de la valeur de la ligne de régression, non ?

Ce n'est pas très clair pour la queue, mais ..... Quel est l'ajustement pour le RMS minimum ?
Merci d'avance pour les réponses =)

Oui. D'abord nous calculons les coordonnées LR[i]. Puis tableau dc[i]=Close[i]-LR[i] ; A partir du tableau dc[i], construire Fourier fx[i]. Et ajoutez les coordonnées LR[i]. fx[i]=fx[i]+LR[i] ou fx[i]+=LR[i] ; Si nous extrapolons, nous calculons LR[i] et fx[i] avant et après i=0 (vous pouvez le faire vous-même).
La "queue" est ce qui est connu de i=T à i=0 ; Puisque nous pouvons déplacer, réduire ou étirer la période d'estimation (T) avec le script, nous recalculons automatiquement le RMS de la "queue" à chaque déplacement.
C'est-à-dire sq=0.0 ; for (int n=0 ; n<T ; n++) sq+=(Close[i0+n]-fx[n])*(Close[i0+n]-fx[n]) ; sq=MathSqrt(sq/T) ; et régler pour un RMS minimum (sq).
Dans mes captures d'écran, la "queue" est représentée en jaune et en vert, tandis que l'extrapolation est représentée en rouge et en bleu.
En général, au début, toutes ces constructions demandent beaucoup de temps et d'effort mental, et si vous ne vous sentez pas encore prêt, attendez de mûrir. Sinon, vous risquez de vous lasser de tout cela et vous ne serez pas satisfait des résultats.
 
ANG3110 писал (а):
Oui. D'abord nous calculons les coordonnées LR[i]. Puis tableau dc[i]=Close[i]-LR[i] ; A partir du tableau dc[i], construire Fourier fx[i]. Et ajoutez les coordonnées LR[i]. fx[i]=fx[i]+LR[i] ou fx[i]+=LR[i] ; Si nous extrapolons, nous calculons LR[i] et fx[i] avant et après i=0 (vous pouvez le faire vous-même).
La "queue" est ce qui est connu de i=T à i=0 ; Puisque nous pouvons déplacer, réduire ou étirer la période d'estimation (T) avec le script, nous recalculons automatiquement le RMS de la "queue" à chaque déplacement.
C'est-à-dire sq=0.0 ; for (int n=0 ; n<T ; n++) sq+=(Close[i0+n]-fx[n])*(Close[i0+n]-fx[n]) ; sq=MathSqrt(sq/T) ; et régler pour un RMS minimum (sq).
Dans mes captures d'écran, la "queue" est représentée en jaune et en vert, tandis que l'extrapolation est représentée en rouge et en bleu.
En général, au début, toutes ces constructions prennent beaucoup de temps et si vous ne vous sentez pas encore prêt, attendez d'être assez mûr, sinon vous risquez de vous lasser de tout cela et de ne pas être satisfait des résultats.

Donc, le RMS minimum est fixé par T, est-ce que j'ai bien compris ?
Ou bien le nombre de fréquences harmoniques dans la décomposition de Fourier est ajusté par le minimum RMS ?

Cependant, la chose la plus intéressante, à savoir comment l'extrapolation de la fonction de Fourier est faite, vous ne l'avez toujours pas dit =)
 
shobvas писал (а):
Donc le minimum RMS est réglé sur T, n'est-ce pas ?
Ou bien le nombre de fréquences harmoniques dans la décomposition de Fourier est ajusté par le minimum RMS ?

Cependant, la chose la plus intéressante est la façon dont la fonction de Fourier est extrapolée =)
En calculant une régression linéaire, on obtient la formule LR[i]=b+a*i ;
Comme résultat du calcul de Fourier, nous aurons le nombre d'harmoniques N, les coefficients ak[k], bk[k], où k correspond au nombre d'harmoniques (k=0. ..N) ; et la formule pour le calcul de Fourier sum=0.0 ; for(k=0 ; k<=N ; k++) sum+=ak[k]*MathCos(w*k*i)+bk[k]*MathSin(w*k*i) ; fx[i]=sum ;
Maintenant, si nous voulons extrapoler, disons, une demi-période en avant, nous calculons
données de T à -T/2 ; for(int i=T ; i>=-T/2 ; i--), mais comme les tableaux ne doivent contenir que des index positifs, on met ce qui va de -1 à -T/2 dans le deuxième tableau, ou bien il existe une astuce pour contourner la division en 2 tableaux en décalant tous les éléments en arrière de +T/2, et ce décalage est pris en compte lors du dessin. Le reste de la description n'a de sens que si l'on a déjà de l'expérience dans ce type de construction. Dans les scripts, nous n'avons aucun problème à tirer vers l'avant. Dans les indicateurs, nous devrions utiliser SetIndexShift( ) ;
 

C'est-à-dire que vous calculez fx[i] à i<0 par la formule :

sum=0.0 ; for(k=0 ; k<=N ; k++) sum+=ak[k]*MathCos(w*k*i)+bk[k]*MathSin(w*k*i) ; fx[i]=sum ;

Comme ça ?

Et vous construisez la fonction de Fourier pour quelle période ? [T,0] ?

 
shobvas писал (а):

C'est-à-dire que vous calculez fx[i] à i<0 par la formule :

sum=0.0 ; for(k=0 ; k<=N ; k++) sum+=ak[k]*MathCos(w*k*i)+bk[k]*MathSin(w*k*i) ; fx[i]=sum ;

Comme ça ?

Et vous construisez la fonction de Fourier pour quelle période ? [T,0] ?

SetIndexShift(0,T/2) ;

pour (i=T ; i>=-T/2 ; i--)
{
somme=0.0 ;
for(int k=0 ; k<=N ; k++) sum+=ak[k]*MathCos(w*k*i)+bk[k]*MathSin(w*k*i) ;
fx[i+T/2]=sum+b+a*i ;
}
 

Comment sont calculés exactement les coefficients ak, bk ?

L'intégrale est prise sur quel intervalle ? De T à 0 ou quoi ?

 
shobvas писал (а):

Comment sont calculés exactement les coefficients ak, bk ?

L'intégrale est prise sur quel intervalle ? De T à 0 ou quoi ?


pour (int k=0 ; k<=N ; k++)
{
sum_cos=0.0 ;
sum_sin=0.0 ;
for (int i=0 ; i<T ; i++)
{
sum_cos+=(Close[i]-b-a*i)*MathCos(w*k*i) ;
sum_sin+=(Close[i]-b-a*i)*MathSin(w*k*i) ;
}
ak[k]=sum_cos*2/T ;
bk[k]=sum_sin*2/T ;
}
ak[0]=ak[0]/2 ;
Raison: