Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 4083
- Рейтинг:
- Опубликован:
- 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 с возможностью изменения таймфрейма индикатора во входных параметрах.

Индикатор является примером сглаживания ценового временного ряда путем фильтрации гармоник большего порядка.

Индикатор является примером сглаживания временного ряда индикатора RSI путем фильтрации гармоник большего порядка.