Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 1697
- Avaliação:
- Publicado:
- 2016.11.04 12:37
- Atualizado:
- 2016.11.22 07:33
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Verdadeiro autor:
klot
Biblioteca da função de transformada rápida de Fourier FFT.
Esta biblioteca foi lançada na MQL4 e publicada no CodeBase, pela primeira vez, a 02.10.2006.
Na biblioteca foram lançadas sete funções baseadas na transformada rápida de Fourier FFT.
- FFT da função integral (direta e inversa)
- FFT de funções reais (direta e inversa)
- FFT de duas funções reais (apenas direta)
- Transformada discreta de seno rápida
- Transformada discreta de cosseno rápida
- Convolução rápida usando FFT
- Correlação rápida usando FFT.
1. FFT da função integral (direta e inversa)
void fastfouriertransform(double& a[], int nn, bool inversefft);
O algoritmo realiza uma transformação rápida de Fourier da função integral com nn dado pelas contas no eixo real. Dependendo dos parâmetros passados pode ser realizada tanto a transformação direta como a inversa.
Parâmetros de entrada:
- nn - Número de valores da função. Deve ser uma potência de dois! O algoritmo não verifica a validade do valor entregue.
- a - array [0 .. 2*nn-1] of Real. Valores da função. Ao primeiro valor correspondem os elementos a[2*I] (parte real) e a[2*I+1] (parte imaginária).
- InverseFFT - direção da conversão. True, se for inversa, False, se for direta.
Parâmetros de saída:
- a - resultado da conversão. Para obter detalhes, consulte a descrição no site. http://alglib.sources.ru/fft/
2. FFT de funções reais (direta e inversa)
void realfastfouriertransform(double& a[], int tnn, bool inversefft);
O algoritmo realiza uma transformação rápida de Fourier da função real com n dado pelas contas no eixo real. Dependendo dos parâmetros passados pode ser realizada tanto a transformação direta como a inversa.
Parâmetros de entrada:
- tnn - Número de valores da função. Deve ser uma potência de dois !!! O algoritmo não verifica a validade do valor entregue.
- a - array [0 .. nn-1] of Real. Valores da função.
- InverseFFT - direção da conversão. True, se for inversa, False, se for direta.
Parâmetros de saída:
- a - resultado da conversão. Para obter detalhes, consulte a descrição no site. http://alglib.sources.ru/fft/
3. FFT de duas funções reais (apenas direta)
void tworealffts(double a1[], double a2[], double& a[], double& b[], int tn);
O algoritmo realiza uma transformação rápida de Fourier de duas funções reais, a cada uma das quais é dada tn pelas contas no eixo real. O algoritmo permite poupar tempo, mas realiza apenas a conversão direta.
Parâmetros de entrada:
- tn - Número de valores da função. Deve ser uma potência de dois. O algoritmo não verifica a validade do valor entregue.
- a1 - array [0 .. nn-1] of Real. Valores da primeira função.
- a2 - array [0 .. nn-1] of Real. Valores da segunda função.
Parâmetros de saída:
- a - Transformada de Fourier da primeira função
- b - Transformada de Fourier da segunda função (mais detalhes no site) http://alglib.sources.ru/fft/
4. Transformada discreta de seno rápida
void fastsinetransform(double& a[], int tnn, bool inversefst);
O algoritmo realiza uma transformação rápida seno da função real com tnn dado pelas contas no eixo real. Dependendo dos parâmetros passados pode ser realizada tanto a transformação direta como a inversa.
Parâmetros de entrada:
- nn - Número de valores da função. Deve ser uma potência de dois. O algoritmo não verifica a validade do valor entregue.
- a - array [0 .. nn-1] of Real. Valores da função.
- InverseFST - direção da conversão. True, se for inversa, False, se for direta.
Parâmetros de saída:
- a - resultado da conversão. Para obter detalhes, consulte a descrição no site. http://alglib.sources.ru/fft/
5. Transformada discreta de cosseno rápida
void fastcosinetransform(double& a[],int tnn, bool inversefct);
O algoritmo realiza uma transformação rápida cosseno da função real com nn dado pelas contas no eixo real. Dependendo dos parâmetros passados pode ser realizada tanto a transformação direta como a inversa.
Parâmetros de entrada:
- tnn - Número de valores da função menos um. Deve ser uma potência de dois (exemplo 1024). O algoritmo não verifica a validade do valor entregue.
- a - array [0..nn] of Real. Valores da função (exemplo 1025).
Particularidade da preparação da matriz para passar para a função:
int element_count2=ArrayResize(array,tnn1+1); //Para o cosseno !!! - InverseFCT - direção da conversão. True, se for inversa, False, se for direta.
Parâmetros de saída:
- a - resultado da conversão. Para obter detalhes, consulte a descrição no site. http://alglib.sources.ru/fft/
6. Convolução rápida usando FFT
void fastcosinetransform(double& a[],int tnn, bool inversefct);
Convolução. Uma das funções dobráveis é estudada como um sinal, com o qual realizamos a convolução. A segunda é considerada como resposta.
Na entrada:
- Signal - sinal, com o qual realizamos a convolução. Matriz de números reais, numeração dos elementos de 0 a SignalLen-1.
- SignalLen - comprimento do sinal.
- Response - função de resposta. Consiste de duas partes que correspondem aos valores positivos e negativos do argumento.
Aos elementos da matriz com números de 0 a NegativeLen, correspondem os valores de resposta nos pontos de -NegativeLen a 0, respetivamente.
Aos elementos da matriz, com números de NegativeLen+1 a NegativeLen+PositiveLen, correspondem os valores de resposta nos pontos de 1 a PositiveLen, respetivamente. - NegativeLen - "Comprimento negativo" da resposta.
- PositiveLen - "Comprimento positivo" da resposta.
Fora dos limites [-NegativeLen, PositiveLen] a resposta é nula.
Na saída:
- Signal - valores da função de convolução nos pontos de 0 a SignalLen-1.
7. Correlação rápida usando FFT.
void fastcorellation(double& signal[], int signallen, double& pattern[], int patternlen);
Na entrada:
- Signal - sinal-matriz, com o qual realizamos a correlação. Numeração de elementos de 0 a SignalLen-1
- SignalLen - comprimento do sinal.
- Pattern - padrão-matriz, correlação do sinal com o qual estamos procurando. Numeração de elementos de 0 a PatternLen-1
- PatternLen - comprimento do sinal.
Na saída:
- Signal - valores da correlação nos pontos de 0 a SignalLen-1. Para mais detalhes, consulte a descrição no site. http://alglib.sources.ru/fft/
Traduzido do russo pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/ru/code/7000
![RAVI_Histogram](https://c.mql5.com/i/code/indicator.png)
Indicador Range Action Verification Index como histograma de força e direção da tendência atual.
![Exp_CandlesticksBW](https://c.mql5.com/i/code/expert.png)
O experto Exp_CandlesticksBW baseia-se nas alterações dos sinais do oscilador CandlesticksBW.
![VWAP Lite - Volume Weighted Average Price](https://c.mql5.com/i/code/indicator.png)
VWAP (Preço Médio Ponderado Por Volume) é um cálculo intra-diário utilizado principalmente por algoritmos e traders institucionais para avaliar onde um ativo está sendo negociado em relação à sua média ponderada pelo volume do dia.
![RJTX_Matches](https://c.mql5.com/i/code/indicator.png)
Este indicador ajuda a determinar o fim e o inicio da tendência com base na inclinação dos "fósforos" e da cor de suas cabeças.