Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
dt_FFT - библиотека для MetaTrader 5
- Просмотров:
- 3957
- Рейтинг:
- Опубликован:
- 2014.04.09 07:14
- Обновлен:
- 2023.03.16 17:34
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Реальный автор:
klot
Библиотека функций быстрого преобразования Фурье FFT.
Впервые эта библиотека была реализована на MQL4 и опубликована в CodeBase 02.10.2006.
В библиотеке реализовано семь функций быстрого преобразования Фурье:
- БПФ комплексной функции (прямое и обратное)
- БПФ вещественной функции (прямое и обратное)
- БПФ двух вещественных функций (только прямое)
- Быстрое дискретное синусное преобразование
- Быстрое дискретное косинусное преобразование
- Быстрая свертка с использованием БПФ
- Быстрая коррелляция с использованием БПФ.
1. БПФ комплексной функции (прямое и обратное)
void fastfouriertransform(double& a[], int nn, bool inversefft);
Алгоритм проводит быстрое преобразование Фурье комплексной функции, заданной nn отсчетами на действительной оси. В зависимости от переданных параметров, может выполняться как прямое, так и обратное преобразование.
Входные параметры:
- nn - Число значений функции. Должно быть степенью двойки!!! Алгоритм не проверяет правильность переданного значения.
- a - array [0 .. 2*nn-1] of Real. Значения функции. I-ому значению соответствуют элементы a[2*I] (вещественная часть) и a[2*I+1] (мнимая часть).
- InverseFFT - направление преобразования. True, если обратное, False, если прямое.
Выходные параметры:
- a - результат преобразования. Подробнее см. описание на сайте. http://alglib.sources.ru/fft/
2. БПФ вещественной функции (прямое и обратное)
void realfastfouriertransform(double& a[], int tnn, bool inversefft);
Алгоритм проводит быстрое преобразование Фурье вещественной функции, заданной n отсчетами на действительной оси. В зависимости от переданных параметров, может выполняться как прямое, так и обратное преобразование.
Входные параметры:
- tnn - Число значений функции. Должно быть степенью двойки !!! Алгоритм не проверяет правильность переданного значения.
- a - array [0 .. nn-1] of Real. Значения функции.
- InverseFFT - направление преобразования. True, если обратное, False, если прямое.
Выходные параметры:
- a - результат преобразования. Подробнее см. описание на сайте. http://alglib.sources.ru/fft/
3. БПФ двух вещественных функций (только прямое)
void tworealffts(double a1[], double a2[], double& a[], double& b[], int tn);
Алгоритм проводит быстрое преобразование Фурье двух вещественных функций, каждая из которых задана tn отсчетами на действительной оси. Алгоритм позволяет сэкономить время, но проводит только прямое преобразование.
Входные параметры:
- tn - Число значений функций. Должно быть степенью двойки. Алгоритм не проверяет правильность переданного значения.
- a1 - array [0 .. nn-1] of Real. Значения первой функции.
- a2 - array [0 .. nn-1] of Real. Значения второй функции.
Выходные параметры:
- a - Преобразование Фурье первой функции
- b - Преобразование Фурье второй функции (подробнее см. на сайте) http://alglib.sources.ru/fft/
4. Быстрое дискретное синусное преобразование
void fastsinetransform(double& a[], int tnn, bool inversefst);
Алгоритм проводит быстрое синусное преобразование вещественной функции, заданной tnn отсчетами на действительной оси. В зависимости от переданных параметров, может выполняться как прямое, так и обратное преобразование.
Входные параметры:
- nn - Число значений функции. Должно быть степенью двойки. Алгоритм не проверяет правильность переданного значения.
- a - array [0 .. nn-1] of Real. Значения функции.
- InverseFST - направление преобразования. True, если обратное, False, если прямое.
Выходные параметры:
- a - результат преобразования. Подробнее см. описание на сайте. http://alglib.sources.ru/fft/
5. Быстрое дискретное косинусное преобразование
void fastcosinetransform(double& a[],int tnn, bool inversefct);
Алгоритм проводит быстрое косинусное преобразование вещественной функции, заданной nn отсчетами на действительной оси. В зависимости от переданных параметров, может выполняться как прямое, так и обратное преобразование.
Входные параметры:
- tnn - Число значений функции минус один. Должно быть степенью двойки (например 1024). Алгоритм не проверяет правильность переданного значения.
- a - array [0..nn] of Real. Значения функции(например 1025).
Особенность подготовки массива для передачи в функцию:
int element_count2=ArrayResize(array,tnn1+1); //Для косинуса !!! - InverseFCT - направление преобразования. True, если обратное, False, если прямое.
Выходные параметры:
- a - результат преобразования. Подробнее см. описание на сайте. http://alglib.sources.ru/fft/
6. Быстрая свертка с использованием БПФ
void fastcosinetransform(double& a[],int tnn, bool inversefct);
Свертка. Одна из сворачиваемых функций трактуется как сигнал, с которым проводим свертку. Вторая считается откликом.
На входе:
- Signal - сигнал, с которым проводим свертку. Массив вещественных чисел, нумерация элементов от 0 до SignalLen-1.
- SignalLen - длина сигнала.
- Response - функция отклика. Состоит из двух частей, соответствующих положительным и отрицательным значениям аргумента.
Элементам массива с номерами от 0 до NegativeLen соответствуют значения отклика в точках от -NegativeLen до 0 соответственно.
Элементам массива с номерами от NegativeLen+1 до NegativeLen+PositiveLen соответствуют значения отклика в точках от 1 до PositiveLen соответственно. - NegativeLen - "Отрицательная длина" отклика.
- PositiveLen -"Положительная длина" отклика.
За пределами [-NegativeLen, PositiveLen] отклик равен нолю.
На выходе:
- Signal - значения свертки функции в точках от 0 до SignalLen-1.
7. Быстрая коррелляция с использованием БПФ
void fastcorellation(double& signal[], int signallen, double& pattern[], int patternlen);
На входе:
- Signal - массив-сигнал, с которым проводим корелляцию. Нумерация элементов от 0 до SignalLen-1
- SignalLen - длина сигнала.
- Pattern - массив-образец, корреляцию сигнала с которым мы ищем. Нумерация элементов от 0 до PatternLen-1
- PatternLen - длина образца
На выходе:
- Signal - значения корреляции в точках от 0 до SignalLen-1. Более подробно см описание на сайте. http://alglib.sources.ru/fft/
Индикатор DS_Stochastic с возможностью изменения таймфрейма индикатора во входных параметрах.
ang_AZad_C_HTFИндикатор ang_AZad_C с возможностью изменения таймфрейма индикатора во входных параметрах.
Индикатор является примером сглаживания ценового временного ряда путем фильтрации гармоник большего порядка.
i-SpectrAnalysis_RSIИндикатор является примером сглаживания временного ряда индикатора RSI путем фильтрации гармоник большего порядка.