Библиотека функций быстрого преобразования Фурье FFT облегчает написание программ, где используется преобразования Фурье.
Оригинал тут http://alglib.sources.ru/fft/.
В библиотеке семь функций быстрого преобразования Фурье.
- БПФ комплексной функции (прямое и обратное)
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/
- БПФ вещественной функции (прямое и обратное)
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/
- БПФ двух вещественных функций (только прямое)
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/
- Быстрое дискретное синусное преобразование
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/
- Быстрое дискретное косинусное преобразование
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/
- Быстрая свертка с использованием БПФ
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.
- Быстрая коррелляция с использованием БПФ
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/
Файл нужно положить в c:\Program Files\MetaTrader 4\experts\libraries\ и скомпилировать.
Библиотека включается в программу так:
#import "#_lib_FFT.ex4" void fastfouriertransform(double& a[], int nn, bool inversefft); void realfastfouriertransform(double& a[], int tnn, bool inversefft); void fastcorellation(double& signal[], int signallen, double& pattern[], int patternlen); void fastconvolution(double& signal[], int signallen, double& response[], int negativelen, int positivelen); void fastsinetransform(double& a[], int tnn, bool inversefst); void fastcosinetransform(double& a[],int tnn, bool inversefct); void tworealffts(double a1[], double a2[], double& a[], double& b[], int tn); #import
Функции могут использоваться в программах для анализа временных рядов - динамики изменения курсов валют, акций, поведения индикаторов и т.д.
Show history
Переносит сделки из истории терминала на график в соответствии с имиджем, принятым в последней версии терминала. Все оптом. Прежние позиции удаляются с графика.
JK BullP AutoTrader
Советник JK_BullP_AutoTrader построен на индикаторе Bulls Power.
Коэффициент корреляции
Рассчитывает коэффициент корреляции первых N баров со всей остальной историей.
MAMy v.3 (модифицированный MAMy)
Простой индикатор построеный при помощи трёх скользящих средних.