Прогноз будущего при помощи Преобразований Фурье - страница 4

 
Кстати вчера я написал, что период левой полувоны должен быть короче, а правой длинее. И тогда бы экстраполяция тоже носила бы этот же закон. И сегодняшний день точно подтвердил это. Быстрое падение евро с последующей медленной, но интенсивной попыткой восстановления.
 

Разрешить использование DLL конечно стоит, сама dll подключается, а функций он в ней не видит.

правильно, пока в лоб считать буду, там может и mq5 выйдет, а в нём может и классы появятся.

 
m_keeper:

Я думаю нейронные сети нужно использывать там, где нельзя сделать вывод используя математический, статистический, дифференциальный или какой либо ещё анализ.


Логика в этом есть - НС не самый лёгкий во всех отношениях инструмент, поэтому сначала лучше выжать всё возможное из классических.


m_keeper:

Из моего индикатора пока лучше ничего не делай, он слишком недоделаный.

Но рисует красиво :)
 
ANG3110:
goldtrader:

А что если подать сигнал индикатора (точнее разность показания и текущей цены) на вход НС?

Можно я чуть отвечу на вопрос, хотя он задавался не мне, коли уж просмотриваю эту страницу.

Вообще-то вопрос не очень корректный, потому что сети бывают разные, с разным колличеством входов, и выходов.

Бавают апроксимирующие, классификационные, ассоциативные. С учителем или без.

Но если предполагать что имел ввиду автор, то конечно можно. Но удовлетворит ли результат?

Это понятно. У меня было более общее, а не конкретное предложение. Ответом m_keeper удовлетворён.

 

Провозился с индикатором ещё день

Заменил быстрые преобразования Фурье обычными, теперь окно можно любой длины задавать


Поэкспериментировал с размером окна, пытаясь "поймать волну", обнаружил много интересного

)если гармоники и есть, то их не больше трёх-четырёх

)эти гармоники неточно совпадают с соответствующими волнами рынка по частоте(странно былобы если совпали)

)от этого при движении окна образуются биения чтоли - фаза уходит

итого имеем на рынке сразу несколько негармонических частот

Выделить их можно, как писал ANG3110, по максимуму амплитуды

Думал про то чтобы увеличить период,чтобы иметь по больше гармоник в нужном мне диапозоне

)Если нужная частота и есть во всём диапазоне, то она то запаздывает,

то ускоряется(нелинейность видно сказывается), правильная фаза на конце не получается

)большой период неочень хорошо, много лишнего


Сейчас вот собственно на ум пришли две идеи

)Кто сказал что частоты должны быть гармониками главной частоты (Фурье наверно и сказал)

1/T 2/T 3/T почему бы не взять 10/10T 11/10T 12/10T, и мы получим большую плотность частот

в интерисующем нас диапазоне(низкие частоты)

) зачем вообще брать гармоники? Надо вычислить только главные частоты (амлитуду и фазу)

для всех длин диапазонов, меньших заданного. Думаю на графике амплитуд(предпологаю что будет

довольнотки гладким в диапазоне низких частот) надо взять локальные максимумы, и эти гармоники

уже могут дать прогноз


И ещё хочу спросить.

Какой критерий можно использовать для определения значимости амплитуды в завмсимости от частоты?

Ведь перед тем как искать локальные максимумы, спектор неплохобы было пронормировать.

 

PS Думаю на счёт только главных частот я загнул, надо хотябы 2-3 периода смотреть

 

Можно просто отнормализовать окно и отдельно отрезок прогноза, ci= (Close[i] - min)/(max - min); - это несколько улучшает дело, но незначительно. Добиться совпадение по амплитуде вообще довольно сложно. Здесь скорее более ценным является определение потенциальных точек разворота.


Там действительно оптимальным является 2-4 гармоники. Чтобы оперативно посмотреть что там происходит, я в свое время делал рисующий скрипт. Умудрился из отрезсков рисовать кривые. Тогда период можно менять мышкой, и все быстро и хорошо видно. Или другой способ, - делается индикатор, и к нему скрипт, для обновлений данных в окне, иначе функция start() индикатора не запускается. Можно в скрипте использовать канал регрессии, и передавать его параметры индикатору, при помощи глобальных переменных, а так же клавишами на клавиатуре менять число гармоник.

#import "user32.dll"
int GetAsyncKeyState(int nVirtKey);
int PostMessageA(int hWnd,int Msg,int wParam,int lParam);
#import
#define WM_COMMAND 0x0111


Тогда рисунок индикатора можно двигать мышкой. Попутно расчитывается СКО dc=Close[i]-fx; sq+=dc*dc; и в конце sq=MathSqrt(sq/T); и суммарные амплитуды MathSqrt(ak[k]*ak[k]+bk[k]*bk[k]);

Производится совмещение по экстремумам, сначала грубо на глаз, потом по минимуму СКО и максимуму amk;

Это для исследования, чтобы все оперативно посмотреть. Для автоматизации нужно немного по-другому, там на глаз ничего не делается.

Если фаза плывет, значит нет стоячей волны, и прогноз будет ухудшаться. Можно подложить мувинг или регрессию, тогда фаза стабильней. Но в принципе разности фаз нужно в автоматизации использовать для автоподстройки периода, как в радиоприемниках, используют, фазовую автоподстройку частоты.

Но это для одной частоты. Чтобы увеличить точность берутся большие и более маленькие периоды и число гармоник для всех них от 1 до 5, больше не целесообразно, и суммируются и выводится среднее. Но еще раз повторюсь, что при линейном масштабе времени добиться хорошего прогноза постоянно - почти не возможно. Скорее тогда нужно сочетать прогноз, и непрерывную автоподстройку. Вообщем автоматика не простая, хотя конечно если бы нормально получилось, то результаты торговли думаю были бы очень хорошие.


 
m_keeper:

И ещё хочу спросить.

Какой критерий можно использовать для определения значимости амплитуды в завмсимости от частоты?

Ведь перед тем как искать локальные максимумы, спектор неплохобы было пронормировать.

Может попробывать нормировку предложенную автором статьи (архив, стр.17).

Файлы:
1.zip  246 kb
 

Neutron

Что то не нашол я там нормальной нормировки.


to m_keeper

попробуй нормировку к суммарной энергии.

 

Построил периодограмму - на рисунке снизу


самое правое значение - амплитуда второй гармоники максимального периода

каждое следующее на единицу(один бар а не гармоника) меньше, и так до периода равному 12 гармоники максимального


Как я и ожидал график довольно гладкий и на нем видны чёткие локальные максимумы

каждый максимум соответствует уже посчитанной частоте и фазе, причём фаза в максимуме должна

иметь значение без всяких отклонений.


Осталось только всё это дело построить.

Причина обращения: