Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

dt_FFT - библиотека для MetaTrader 5

Просмотров:
3865
Рейтинг:
(40)
Опубликован:
2014.04.09 07:14
Обновлен:
2023.03.16 17:34
\MQL5\Include\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Реальный автор:

klot

Библиотека функций быстрого преобразования Фурье FFT.

Впервые эта библиотека была реализована на MQL4 и опубликована в CodeBase 02.10.2006.

В библиотеке реализовано семь функций быстрого преобразования Фурье:

  1. БПФ комплексной функции (прямое и обратное)
  2. БПФ вещественной функции (прямое и обратное)
  3. БПФ двух вещественных функций (только прямое)
  4. Быстрое дискретное синусное преобразование
  5. Быстрое дискретное косинусное преобразование
  6. Быстрая свертка с использованием БПФ
  7. Быстрая коррелляция с использованием БПФ.

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, если прямое.

Выходные параметры:


2. БПФ вещественной функции (прямое и обратное)
void realfastfouriertransform(double& a[], int tnn, bool inversefft);

Алгоритм проводит быстрое преобразование Фурье вещественной функции, заданной n отсчетами на действительной оси. В зависимости от  переданных параметров, может выполняться как прямое, так и обратное преобразование.

Входные параметры:

  • tnn - Число значений функции. Должно быть степенью двойки !!! Алгоритм не проверяет правильность переданного значения.
  • a - array [0 .. nn-1] of Real. Значения функции.
  • InverseFFT - направление преобразования. True, если обратное, False, если прямое.

Выходные параметры:


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, если прямое.

Выходные параметры:


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, если прямое.

Выходные параметры:

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_HTF DS_Stochastic_HTF

Индикатор DS_Stochastic с возможностью изменения таймфрейма индикатора во входных параметрах.

ang_AZad_C_HTF ang_AZad_C_HTF

Индикатор ang_AZad_C с возможностью изменения таймфрейма индикатора во входных параметрах.

i-SpectrAnalysis i-SpectrAnalysis

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

i-SpectrAnalysis_RSI i-SpectrAnalysis_RSI

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