Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Visualizaciones:
1124
Ranking:
(40)
Publicado:
2016.03.08 14:26
Actualizado:
2016.11.22 07:33
\MQL5\Include\
dt_fft.mqh (26.02 KB) ver
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

Autor real:

klot

Biblioteca de funciones de la transformada rápida de Fourier FFT.

Esta biblioteca se implementó por primera vez en MQL4 y fue publicada en CodeBase el 02.10.2006.

En la biblioteca hay implementadas siete funciones de la transformada rápida de Fourier:

  1. FFT de una función compleja (directa e inversa)
  2. FFT de una función real (directa e inversa)
  3. FFT de dos funciones reales (solo directa)
  4. Transformación de seno discreta rápida
  5. Transformación de coseno discreta rápida
  6. Simplificación rápida usando FFT
  7. Correlación rápida usando FFT

1. FFT de una función compleja (directa e inversa)
void fastfouriertransform(double& a[], int nn, bool inversefft);

El algoritmo muestra la transformada rápida de Fourier de una función compleja, definida por nn recuentos en el eje real. Dependiendo de los parámetros transmitidos, se puede ejecutar tanto la transformación directa, como la transformación inversa.

Parámetros de entrada:

  • nn - Número de valores de la función. ¡¡¡Deberá ser una potencia dos!!! El algoritmo no comprueba si el valor transmitido es correcto.
  • a - array [0 .. 2*nn-1] of Real. Valores de la función. Los elementos a[2*I] (parte real) y a[2*I+1] (parte imaginaria) corresponden al primer valor.
  • InverseFFT - dirección de la transformación. True, si es inversa, False, si es directa.

Parámetros de entrada:

  • a - resultados de la transformación. Para más detalles, ver la descripción en la página. http://www.alglib.net/

2. FFT de una función real (directa e inversa)
void realfastfouriertransform(double& a[], int tnn, bool inversefft);

El algoritmo ejecuta la transformada rápida de Fourier de una función real, definida por n recuentos en el eje real. Dependiendo de  los parámetros transmitidos, se puede ejecutar tanto la transformación directa, como la transformación inversa.

Parámetros de entrada:

  • tnn - Número de valores de la función. ¡¡¡Deberá ser una potencia dos!!! El algoritmo no comprueba si el valor transmitido es correcto.
  • a - array [0 .. nn-1] of Real. Valores de la función.
  • InverseFFT - dirección de la transformación. True, si es inversa, False, si es directa.

Parámetros de entrada:

  • a - resultados de la transformación. Para más detalles, ver la descripción en la página. http://www.alglib.net/

3. FFT de dos funciones reales (solo directa)
void tworealffts(double a1[], double a2[], double& a[], double& b[], int tn);

El algoritmo ejecuta la transformada rápida de Fourier de dos funciones reales, cada una de las cuales es definida por tn recuentos en el eje real. El algoritmo permite ahorrar tiempo, pero realiza solo la transformación directa.

Parámetros de entrada:

  • tn - Número de valores de la función. Deberá ser una potencia dos. El algoritmo no comprueba si el valor transmitido es correcto.
  • a1 - array [0 .. nn-1] of Real. Valor de la primera función.
  • a2 - array [0 .. nn-1] of Real. Valor de la segunda función.

Parámetros de entrada:

  • a - Transformada de Fourier de la primera función
  • b - Transformada de Fourier de la segunda función (para más detalles, mirar en la página) http://www.alglib.net/


4. Transformación de seno discreta rápida
void fastsinetransform(double& a[], int tnn, bool inversefst);

El algoritmo ejecuta la transformación de seno rápida de una función real, definida por tnn recuentos en el eje real. Dependiendo de los parámetros transmitidos, se puede ejecutar tanto la transformación directa, como la transformación inversa.

Parámetros de entrada:

  • nn - Número de valores de la función. Deberá ser una potencia dos. El algoritmo no comprueba si el valor transmitido es correcto.
  • a - array [0 .. nn-1] of Real. Valores de la función.
  • InverseFST - dirección de la transformación. True, si es inversa, False, si es directa.

Parámetros de entrada:

  • a - resultados de la transformación. Para más detalles, ver la descripción en la página. http://www.alglib.net/

5. Transformación de coseno discreta rápida
void fastcosinetransform(double& a[],int tnn, bool inversefct);

El algoritmo ejecuta la transformación de coseno rápida de una función real, definida por nn recuentos en el eje real. Dependiendo de los parámetros transmitidos, se puede ejecutar tanto la transformación directa, como la transformación inversa.

Parámetros de entrada:

  • tnn - Número de valores de la función menos uno. Deberá ser una potencia dos (por ejemplo 1024). El algoritmo no comprueba si el valor transmitido es correcto.
  • a - array [0..nn] of Real. Valor de la función (por ejemplo 1025).
    Peculiaridades de la preparación de la matriz para la transmisión a la función:
    int element_count2=ArrayResize(array,tnn1+1); //¡¡¡ Para el coseno !!!
  • InverseFCT - dirección de la transformación. True, si es inversa, False, si es directa.

Parámetros de entrada:

  • a - resultados de la transformación. Para más detalles, ver la descripción en la página. http://www.alglib.net/

6. Simplificación rápida con FFT
void fastcosinetransform(double& a[],int tnn, bool inversefct);

Simplificación. Una de las funciones se asume como señal con la que vamos a realizar la simplificación. La segunda, se considera la respuesta.

En la entrada:

  • Signal - señal con la que realizamos la simplificación. Matriz de los números reales, enumeración de los elementos de 0 a SignalLen-1.
  • SignalLen - longitud de la señal.
  • Response - función de la respuesta. Consta de dos partes, que se corresponden con los valores positivo y negativo del argumento.
    A los elementos de la matriz con los números del 0 a NegativeLen les corresponden los valores de la respuesta en los puntos de -NegativeLen a 0, respectivamente.
    A los elementos de la matriz con los números de NegativeLen+1 a NegativeLen+PositiveLen les corresponden los valores de la respuesta en los puntos de 1 a PositiveLen, respectivamente.
  • NegativeLen - "Longitud negativa" de la respuesta.
  • PositiveLen -"Longitud positiva" de la respuesta.
    Más allá de los límites de [-NegativeLen, PositiveLen], la respuesta es igual a cero.

En la salida:

  • Signal - valores de simplifición de la función en los puntos de 0 a SignalLen-1.


7. Correlación rápida usando FFT
void fastcorellation(double& signal[], int signallen,  double& pattern[],  int patternlen);

En la entrada:

  • Signal - matriz-señal con la que realizamos la correlación. Numeración de los elementos de 0 a SignalLen-1
  • SignalLen - longitud de la señal.
  • Pattern - matriz-patrón, correlación de la señal con la que buscamos. Numeración de los elementos de 0 a PatternLen-1
  • PatternLen - longitud del patrón

En la salida:

  • Signal - valores de la correlación en los puntos de 0 a SignalLen-1. Para más detalles, mirar la descripción en la página. http://www.alglib.net/

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/7000

Horizontal lines for max/min prices of the last 2 years Horizontal lines for max/min prices of the last 2 years

Ejemplo de representación de líneas horizontales en los precios máximos y mínimos en los 2 últimos años.

Inverted Chart View Inverted Chart View

El indicador muestra el gráfico invertido, para encontrar los mejores momentos de venta.

SilverTrend_CrazyChart_HTF SilverTrend_CrazyChart_HTF

Indicador SilverTrend_CrazyChart con posibilidad de cambiar el marco temporal del indicador en los parámetros de entrada.

SMTP Mail Library SMTP Mail Library

Biblioteca para enviar mensajes de correo.