Ayuda con Fourier - página 9

 
ANG3110 писал (а):

No es un mal resultado si hacemos una columna vertebral para la descomposición de Fourier. En particular, podemos extrapolar fácilmente la regresión hacia adelante y trazar la Fourier relativa a ella. Es posible encajar un mouving como soporte y trazar la suma de armónicos, en una ventana separada, como si el mouving continuara linealmente. Se puede basar en una media que varíe suavemente, como la T3, desplazada medio período hacia atrás, de modo que se ajuste exactamente a los datos y extrapolar el final con una parábola, que se ajusta para un RMS mínimo, y en relación con esta extrapolación, construir la Fourier. Pero en cualquier caso, hay una alta probabilidad de que se repitan los ciclos si construimos varias variantes de la extrapolación de Fourier con diferentes períodos y optimizamos cada variante con respecto al RMS mínimo. Si hay coincidencia en las lecturas de varias variantes, pueden considerarse probables. Si hay más avance o retraso, se producirá una señal de diferencia correctiva que puede utilizarse para el autoajuste o el recálculo. Esto recuerda al detector FATF de los receptores de radio, que es el más eficaz e inmune a las interferencias.
En realidad no es un problema tan grande la salida de series de Fourier sin pensar en el tiempo para que el final sea cercano a la serie, lo interesante es la salida de Fourier de las citas futuras. Has puesto capturas de pantalla de tu indicador trazando la serie de Fourier para el tiempo futuro que coincide bien con la realidad. ¿En qué principios se basa?
 
shobvas писал (а):

Bueno, en realidad no es un problema tan grande para dar salida a la serie de Fourier sin adelantarse en el tiempo, de manera que el final fuera cercano a la serie. Es interesante dar salida a la Fourier de las citas futuras. Has puesto capturas de pantalla de tu indicador trazando la serie de Fourier para el tiempo futuro que coincide bien con la realidad. ¿En qué principios se basa?
La descomposición se hace en relación con LinearRegressin allí. Al igual que en una radio, para obtener la mejor audibilidad, es conveniente sintonizarla con un mínimo de ruido y un máximo de señal, es decir, la sintonización se realiza con un mínimo de RMS. Para cambiar fácilmente el período, se aplica un guión de línea recta o de canal de regresión. Los datos finales se capturan y se transmiten al indicador. Así, al mover las líneas, cambiamos instantáneamente el periodo y recalculamos toda la imagen. El comentario muestra el RMS y los ajustes se hacen de acuerdo con el RMS mínimo más un pequeño desplazamiento a ojo para hacer coincidir lo más posible los altos y los bajos. También hemos añadido la capacidad de cambiar el número de armónicos a través de la función GetAsyncKeyState(int nVirtKey), entonces pulsando las flechas apropiadas en el teclado podemos añadir o restar rápidamente el número de armónicos. Lo mismo se hace mediante el guión, que lo dibuja todo. Ya he escrito un poco sobre las configuraciones y variantes antes. Para diferentes periodos y diferentes verosimilitudes el número de armónicos se toma de forma diferente.
Pero pueden obtenerse resultados más o menos satisfactorios si el armónico mínimo es de 12 a 24 horas y el período mínimo de 2-3 días o más. Esto es para la previsión diaria. Para la previsión global, la técnica es la misma, pero los períodos son más largos, por supuesto. Según la escala, las previsiones mensuales y anuales de largo alcance coinciden muy bien con los datos reales, especialmente en algunas frecuencias, que se repiten periódicamente con un grado de probabilidad muy alto. Para obtener estadísticas sobre estas frecuencias, se hace un analizador de espectro inteligente, que también se puede arrastrar por todo el rango de tiempo.
 
ANG3110 писал (а):
La descomposición se hace en relación con LinearRegressin. La cola es como una radio, para conseguir la mejor audibilidad, es conveniente sintonizar para el mínimo ruido y la máxima señal, es decir, la sintonización se hace en función del mínimo RMS. Para cambiar fácilmente el período, se aplica un guión de línea recta o de canal de regresión. Los datos finales se capturan y se transmiten al indicador. Así, al mover las líneas, cambiamos instantáneamente el periodo y recalculamos toda la imagen. El comentario muestra el RMS y los ajustes se hacen de acuerdo con el RMS mínimo más un pequeño desplazamiento a ojo para hacer coincidir lo más posible los altos y los bajos. También hemos añadido la capacidad de cambiar el número de armónicos a través de la función GetAsyncKeyState(int nVirtKey), entonces pulsando las flechas apropiadas en el teclado podemos añadir o restar rápidamente el número de armónicos. Lo mismo se hace mediante el guión, que lo dibuja todo. Ya he escrito un poco sobre las configuraciones y variantes antes. Para diferentes periodos y diferentes verosimilitudes el número de armónicos se toma de forma diferente.
Pero pueden obtenerse resultados más o menos satisfactorios si el armónico mínimo es de 12 a 24 horas y el período mínimo de 2-3 días o más. Esto es para la previsión diaria. Para la previsión global, la técnica es la misma, pero los períodos son más largos, por supuesto. Según la escala, las previsiones mensuales y anuales de largo alcance coinciden muy bien con los datos reales, especialmente en algunas frecuencias, que se repiten periódicamente con un grado de probabilidad muy alto. Para obtener estadísticas sobre estas frecuencias, se hace un analizador de espectro inteligente, que también se puede arrastrar por todo el rango de tiempo.

Realmente no entiendo esto...
La serie de Fourier se construye a partir de la diferencia de precio y el valor de la línea de regresión, ¿no?

No está muy claro lo de la cola aunque.... ¿Cuál es el ajuste del RMS mínimo?
Gracias de antemano por las respuestas =)
 
shobvas писал (а):
Realmente no entiendo...
Una serie de Fourier se construye a partir de la diferencia de precios y el valor de la línea de regresión, ¿no?

No está muy claro lo de la cola, aunque.... ¿Cuál es el ajuste para el RMS mínimo?
Gracias de antemano por las respuestas =)

Sí. Primero calculamos las coordenadas LR[i]. Entonces la matriz dc[i]=Cerrar[i]-LR[i]; A partir de la matriz dc[i] construye la Fourier fx[i]. Y añade las coordenadas LR[i]. fx[i]=fx[i]+LR[i] o fx[i]+=LR[i]; Si extrapolamos, calculamos LR[i] y fx[i] antes y después de i=0 (puedes cogerlo tú mismo).
La "cola" es lo que se conoce desde i=T hasta i=0; como podemos desplazar, encoger o estirar el periodo de estimación (T) con el script, recalculamos automáticamente el RMS de la "cola" con cada desplazamiento.
Es decir, 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); y se establece para el RMS mínimo (sq).
En mis capturas de pantalla, la "cola" se muestra en amarillo y verde, mientras que la extrapolación se muestra en rojo y azul.
Por lo general, al principio todas estas construcciones requieren mucho tiempo y esfuerzo mental, y si crees que aún no estás preparado, espera a madurar. De lo contrario, es posible que se canse de todo y no esté contento con los resultados.
 
ANG3110 писал (а):
Sí. Primero calculamos las coordenadas LR[i]. Entonces la matriz dc[i]=Cerrar[i]-LR[i]; A partir de la matriz dc[i] construye la Fourier fx[i]. Y añade las coordenadas LR[i]. fx[i]=fx[i]+LR[i] o fx[i]+=LR[i]; Si extrapolamos, calculamos LR[i] y fx[i] antes y después de i=0 (puedes cogerlo tú mismo).
La "cola" es lo que se conoce desde i=T hasta i=0; como podemos desplazar, encoger o estirar el periodo de estimación (T) con el script, recalculamos automáticamente el RMS de la "cola" con cada desplazamiento.
Es decir, 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); y se establece para el RMS mínimo (sq).
En mis capturas de pantalla, la "cola" se muestra en amarillo y verde, mientras que la extrapolación se muestra en rojo y azul.
En general, al principio todas estas construcciones llevan mucho tiempo y si crees que aún no estás preparado, espera hasta que tengas la suficiente madurez. De lo contrario, puede que te canses de todo y no estés contento con los resultados.

Entonces, el RMS mínimo lo fija T, ¿lo he entendido bien?
¿O el número de frecuencias armónicas en la descomposición de Fourier se ajusta por el RMS mínimo?

Sin embargo, lo más interesante, es decir, cómo se hace la extrapolación de la función de Fourier, todavía no lo has contado =)
 
shobvas писал (а):
Así que el RMS mínimo se establece en T, ¿estoy en lo cierto?
¿O el número de frecuencias armónicas en la descomposición de Fourier se ajusta por el RMS mínimo?

Sin embargo, lo más interesante es cómo se realiza la extrapolación de la función de Fourier =)
Como resultado del cálculo de una regresión lineal tendremos la fórmula LR[i]=b+a*i;
Como resultado del cálculo de Fourier tendremos el número de armónicos N, los coeficientes ak[k],bk[k], donde k corresponde al número de armónicos (k=0. ..N); y la fórmula para el cálculo 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;
Ahora bien, si queremos extrapolar, por ejemplo, medio período hacia adelante, calculamos
datos de T a -T/2; for(int i=T; i>=-T/2; i--), pero como los arrays deben contener sólo índices positivos, ponemos lo que va de -1 a -T/2 en el segundo array, o hay un truco para evitar la división en 2 arrays desplazando todos los elementos en +T/2 hacia atrás, y este desplazamiento se tiene en cuenta al dibujar. El resto de la descripción sólo tiene sentido si ya tenemos experiencia en este tipo de construcciones. En los scripts, no tenemos ningún problema para dibujar hacia delante. En los indicadores, debemos utilizar SetIndexShift( );
 

Es decir, se calcula fx[i] en i<0 por la fórmula:

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;

¿Así?

¿Y para qué período construyes la función de Fourier? [T,0]?

 
shobvas писал (а):

Es decir, se calcula fx[i] en i<0 por la fórmula:

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;

¿Así?

¿Y se construye la función de Fourier para qué período? [T,0]?

SetIndexShift(0,T/2);

for (i=T; i>=-T/2; i--)
{
suma=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]=suma+b+a*i;
}
 

¿Cómo se calculan exactamente los coeficientes ak, bk?

¿La integral se toma sobre qué intervalo? ¿De T a 0 o qué?

 
shobvas писал (а):

¿Cómo se calculan exactamente los coeficientes ak, bk?

¿La integral se toma en qué intervalo? ¿De T a 0 o qué?


for (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]=suma_cos*2/T;
bk[k]=suma_sin*2/T;
}
ak[0]=ak[0]/2;