Predicción del futuro con transformadas de Fourier - página 2

 
ANG3110:

Sólo el indicador adjunto no dibuja nada.

Lo hace. Desplaza el gráfico hacia la izquierda y verás.

 

En el hilo paralelo "¡No es asunto de Mashka!" hay una discusión sobre la previsión con "MA perfecto". Creo que el alisado perfecto sólo puede obtenerse mediante Fourier y umbralización, como se hace aquí. La estimación más precisa se encuentra justo en el centro de la ventana de muestreo. Hay que hacer una investigación similar, pero basándose en este algoritmo y no en el MA.

En segundo lugar, se puede justificar matemáticamente con precisión el valor del umbral(porog), librándose así de probar (encontrar el valor óptimo) de este valor.

En tercer lugar, para aumentar el tiempo de previsión, es necesario aumentar la precisión de las mediciones del valor actual, es posible de dos maneras - el análisis simultáneo de múltiples monedas, o aumentar el número de proveedores de cotizaciones . Optimización. DDE en VB (VBA)'.

 

Para ver el futuro,

En la configuración de la ventana del gráfico debe estar seleccionada la casilla "Gráfico de desplazamiento",

extern int InPast=0,

extern inttern Futur=100 para cuántas barras la previsión

 

En cuanto a porog, en principio voy a rehacer esta parte, porque cuando una frecuencia supera el umbral, la gráfica cambia bruscamente, quizás lo deje como estaba en klot, o haga un descenso suave.

 

Divertido idyuk, ¡gracias!

Lo he probado en el probador, por así decirlo, en condiciones reales. A veces parece que es lo mismo, pero a veces es al revés, especialmente antes de los movimientos fuertes o al final de los mismos.

Una situación muy interesante es cuando se aplican al gráfico 3 indicadores con diferentes potencias de dos, como 8, 9 y 10, y a menudo miran en diferentes direcciones. ¿Y si intentamos utilizar el valor medio de estos 3 indicadores?

¿Lo has probado?

 
m_keeper:

En cuanto a porog, en principio voy a rehacer esta parte, ya que cuando alguna frecuencia cruza el umbral la gráfica cambia bruscamente, quizás lo deje como estaba en klot o haga un descenso suave.

Una cosa más que me gustaría hacer, para deshacerse de FFT (grado de dos no es la mejor opción para encontrar la mejor ventana). Mejor una transformación discreta.

Sobre el umbral, existen los criterios de Neumann Pearson, observador ideal, búsquelos. La aplicación de esta teoría permitirá alejarse de la optimización (encontrar el valor óptimo en la historia), y permitirá hacer un umbral adaptativo, hay bastantes variantes de realización.

 

Parece que el rincón del digitalizador está ahora en este hilo :), entonces aquí hay una pregunta de reflexión. Si se toma la densidad espectral media para el gráfico de precios, se obtiene este tipo de imagen


Puedes ver que para frecuencias bajas no es un 1/f malo, pero para frecuencias altas hay una desviación notable de esta ley. Esto se discutió hace algún tiempo y la versión principal sugería que tuviéramos algún tipo de ruido de digitalización. La idea es que podría ser útil filtrar este componente. Es decir, dejar un 1/f limpio para toda la gama de frecuencias. Y la cuestión es cómo hacerlo. La idea es tener algún procedimiento que tome como entrada una matriz de densidad espectral y dé como resultado los coeficientes del filtro digital. En principio, se me ocurre una función de ponderación sencilla para las amplitudes de Fourier, pero sería más económico utilizar un filtro digital.
 

La biblioteca contiene ahora el archivo __lib_FFT.mq4, mientras que el texto del indicador contiene #_lib_FFT.mq4, por eso no se dibuja.

 
Prival:
m_keeper:

En cuanto a porog, en principio voy a rehacer esta parte, ya que cuando alguna frecuencia cruza el umbral la gráfica cambia bruscamente, quizás lo deje como estaba en klot o haga un descenso suave.

Una cosa más que me gustaría hacer, para deshacerse de FFT (grado de dos no es la mejor opción para encontrar la mejor ventana). Mejor una transformación discreta.

Sobre el umbral, existen los criterios de Neumann Pearson, observador ideal, búsquelos. La aplicación de esta teoría permitirá alejarse de la optimización (encontrar el valor óptimo en la historia), y permitirá hacer un umbral adaptativo, hay bastantes opciones de implementación.

En principio, es muy fácil deshacerse del grado 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 - número de armónicos,

T - punto.


La ventana óptima, o más precisamente el período óptimo T es más fácil de elegir por 2 criterios, por el mínimo RMS y por el máximo de la suma de las amplitudes armónicas. Pero debido a las múltiples olas en el mercado, habrá varias ventanas óptimas.

Y también debes tener en cuenta que cuando intentas extrapolar, debido a los senos y cosenos periódicos, las componentes periódicas anteriores simplemente se sumarán al final y, aunque la probabilidad de repetición sea bastante alta, la fase y sobre todo la amplitud seguirán siendo diferentes y de hecho siempre debes ajustar la fase, como un detector de fase.


La definición de fase como MathArctan() no es buena debido a las propiedades de arctan, al menos se debe tener en cuenta +/- pi/2.

Es mejor definir la fase de una manera ligeramente diferente.

 

No es necesario alejarse de la FFT, de hecho no es necesario dividir la serie exactamente por la mitad, se divide para aumentar la velocidad de conteo, y no porque sea necesario dividir estrictamente por dos. Una vez trabajé con FFT que funciona con series de cualquier longitud, lo reescribiré para mql algún día.


Estoy tratando de averiguar qué características pueden indicar falsos positivos

aquí hay dos imágenes, con n=9 y n=10

En ambos casos, la cola de la ventana ha tocado un pico agudo que puede aparecer en el futuro.

Ahora estoy experimentando con el preprocesamiento de series, tal vez ayude.


Cambiada la condición de suavizado, ahora no hay saltos en el gráfico, todo funciona sin problemas.


En cuanto a que el gráfico se redibuje, no veo ningún problema.

Los precios de cierre no son el pasado, pero los eventos que los generaron - las ondas (en el caso de Fourier) - son el pasado

y aprendemos más y más sobre ellos con cada nuevo bar.

Archivos adjuntos:
Razón de la queja: