В библиотеке семь функций быстрого преобразования Фурье.
- БПФ комплексной функции (прямое и обратное) 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\ и скомпилировать. Библиотека включается в программу так: //+------------------------------------------------------------------+ //| My function | //+------------------------------------------------------------------+ //| #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 | //+------------------------------------------------------------------+ Функции могут использоваться в программах для анализа временных рядов - динамики изменения курсов валют, акций, поведения индикаторов тд.
|
Can we have this comment in English ? I don t have the chance to speak Russian
Spasiva
UKALGO
SergNF писал(а):
klot писал(а):
Кстати, может кто-нибудь соберет библиотечку нейросетевых функций
для MT4? Наверняка видел
http://forexsystems.ru/phpBB/viewtopic.php?t=47&postdays=0&postorder=asc&highlight=%ED%E5%E9%F0%EE%F1%E5%F2%FC&start=45&sid=ed93aa7e5c34e97dc495edb67d8257de
Здесь, среди прочего, обясняют как "нашинковать" dll'ки
А вообще, лично я, считаю, что лучше "откатать идеи" на каком-нибудь
более менее специализироанном пакете, и только при получении
приличных и достоверных результатов заниматься мелочами по
интеграции в MT4 и т.п. Благо двусторонний обмен (в том числе передача
сигналов В MT4), например, из NSDT налажен/отлажен полностью.
(Опять же про FFT - а стоило ли заморачиваться с кодированием,
не убедившись в эффективности методов, например, в MatLab'е. Или
все "на мази" и вопрос только и именно в "автоторговле"?
:) )
Может и лучше на специализированном софте, но во-первых нужно
знать принципы построения нейросетей, во-вторых нужно знать
этот специализированный софт ( тот же NSDT). Я сейчас равноудален
и от первого и от второго.
Поэтому мне проще начать с принципов построения нейросетей и
"обкатывать" идеи сразу в MT4. Кстати, на MQL4-е можно все
что угодно программировать...
klot, если ты имеешь ввиду файл #_i_SpecktrAnalis.mq4, то он почему-то отсутствует.
lsv писал(а):
Что-то не получилось с ходу разобраться в применении этих функций,
описания у них почему-то у всех одинаковые. Помогите, пожалуйста!
Как, например, имея значения Close 8-ми последних баров получить
их спектр, потом оставить первые 4 частоты (типа НЧ-фильтр) и
получить обратно сигнал?
Посмотрите тут я выложил пример 'Помогите разобраться с Фурье'
Что-то не получилось с ходу разобраться в применении этих функций,
описания у них почему-то у всех одинаковые. Помогите, пожалуйста!
Как, например, имея значения Close 8-ми последних баров получить
их спектр, потом оставить первые 4 частоты (типа НЧ-фильтр) и
получить обратно сигнал?
klot писал(а):
Кстати, может кто-нибудь соберет библиотечку нейросетевых функций
для MT4? Наверняка видел
http://forexsystems.ru/phpBB/viewtopic.php?t=47&postdays=0&postorder=asc&highlight=%ED%E5%E9%F0%EE%F1%E5%F2%FC&start=45&sid=ed93aa7e5c34e97dc495edb67d8257de
Здесь, среди прочего, обясняют как "нашинковать" dll'ки
А вообще, лично я, считаю, что лучше "откатать идеи" на каком-нибудь
более менее специализироанном пакете, и только при получении
приличных и достоверных результатов заниматься мелочами по
интеграции в MT4 и т.п. Благо двусторонний обмен (в том числе передача
сигналов В MT4), например, из NSDT налажен/отлажен полностью.
(Опять же про FFT - а стоило ли заморачиваться с кодированием,
не убедившись в эффективности методов, например, в MatLab'е. Или
все "на мази" и вопрос только и именно в "автоторговле"?
:) )
Кстати, может кто-нибудь соберет библиотечку нейросетевых функций
для MT4?
Предлагаю собрать что-то вроде SDK для МQL4!
|