Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 18255
- Рейтинг:
- Опубликован:
- 2006.10.02 09:10
- Обновлен:
- 2016.11.22 07:33
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Библиотека функций быстрого преобразования Фурье 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](https://c.mql5.com/i/code/script.png)
Переносит сделки из истории терминала на график в соответствии с имиджем, принятым в последней версии терминала. Все оптом. Прежние позиции удаляются с графика.
![JK BullP AutoTrader](https://c.mql5.com/i/code/expert.png)
Советник JK_BullP_AutoTrader построен на индикаторе Bulls Power.
![Коэффициент корреляции](https://c.mql5.com/i/code/indicator.png)
Рассчитывает коэффициент корреляции первых N баров со всей остальной историей.
![MAMy v.3 (модифицированный MAMy)](https://c.mql5.com/i/code/indicator.png)
Простой индикатор построеный при помощи трёх скользящих средних.