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

 
m_keeper:

Сейчас пытаюсь определить по каким признакам можно определить ложные прогнозы

Ложные прогнозы определяются по увеличению ошибки СКО на последних, "концевых" барах. Взять первый попавшийся период и экстраполировать его вперед - это еще не прогноз. Это просто продление периодической составляющей которая была - вперед. Типа к переду едущей машины пририсовали половину задней части.

Чтобы попытаться сделать прогноз, нужно найти ряд резонансов в недалеком прошлом. То есть прогоняется определенное количество баров в прошлом и каждый раз рисуется наперед, и вычисляется ошибка прогноза по уже известным историческим данным. Потом период меняется, и прогон повторяется по новой. И опять вычисляется ошибка прогноза. Те периоды у которых ошибка была минимальная, принимаются как рабоче-прогнозные. Прорисовывается наперед их комбинации - суммы и просто периодичекие составляющие, и когда стали появляться новые данные, то вычисляется опять ошибка. В зависимости от ошибки период опять подстраивается уже по текущему прогнозу. Я просто пытаюсь об'яснить на пальцах.

Если говорить короче. На относительно не очень большой выборке данных в прошлом прогоняются различные периоды с определенным шагом. Все время расчитывается СКО экстраполяции. Находится период который наиболее хорошо кореллировал в недалеком прошлом и именно он прининается за рабочий. Это первый шаг в построении прогноза. Потом идет еще целый ряд шагов...


Вот на приведенном рисунке один из резонансов. Но это еще ничего не значит.

Нужно делать целый ряд прогназов, и по минимуму СКО выбирать наиболее хорошо кореллирующий.

А вообще без учета нелинейности пространства-времени, то есть постоянных искривлений их (то время сжимется и амплитуда растет, то амплитуда сжимается и время увеличивается - как ночью например), - получить приличный прогноз вряд ли удастся.


 

Погонял в тестере за март на M15

n=10

InPast=300

Futur=300

Gladkost=1

В большинстве случаев можно верить хотябы на день


Добавлена предварительная обработка RC фильтром с переменным уровнем фильтрации для гасения высоких частот

в хвосте окна. Принципиальных изменений это не дало, но в теории стало лучше(что это - можно посмотреть при Gladkost=0)


Прогноз резко меняется если на начало или конец окна приходится резкий спад или подъём

Скажем образоваласьь ступенька - фильтр воспринимает её как низкую частоту,

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

думаю с этим можно бороться работая не напрямую с ценами, а со скользящим средним

скажем с МА(20), а потом просто допрогнозировать 10 баров отстования которое даст МА


Что касается СКО идея правильная

Можно запустить два индикатора, один прогнозирует 100 последних известных баров, а второй на 100 баров в будущее

а СКО мерять между индикаторами на последних 100 барах, надо попробовать.

"нелинейности пространства-времени" - слйчайно не эквиобъёмные бары призваны решить эту проблему?

никогда с ними не работал. Думаешь поможет?

Файлы:
 
m_keeper:

"нелинейности пространства-времени" - слйчайно не эквиобъёмные бары призваны решить эту проблему?

никогда с ними не работал. Думаешь поможет?

Эквиоб'емные бары типа "теплее", но еще не совсем то. Вот на графике, что я привел, левая желтая полуволна движется интенсивно, амплитуда большая, но за короткое время. У правой зеленой части из-за увеличенного сопротивления, - путь пройден большой, и времени ушло больше, а амплитуда уменьшилась. То есть они не симметричны по времени. Чтобы было более хорошее совпадение, фактически на левой части период должен быть меньше, а на правой больше. То есть мы должны учитывать и длину всех приращений цены, типа длину веревки, а эта веревка согнута во многих местах.

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


И еще. Допустим есть периоды когда торгуют крупные "рыбы", типа банки, и прочие "крутые". Они не торгуют на 15-ти минутках, а обычно рассматривают минимум дневки и по ним принимают решения. А всякая мелочь, типа нас, колбасится от часовок, вплоть до тиков. Ну такая мелкая полубеспорядочная возня в попытке заработать хоть 3-копейки. Если в недалеком прошлом были скачки крупных "рыб", то есть более низкочастотные гармоники, то когда они опять начинают проявляться, несмотря на прогноз в коротком промежутке, - большая волна может просто снести маленькие. То есть фактически нужно учитывать много частот совпадения их по фазе или противоречия фаз, и это еще плюс наклоны, сопротивления, сжатия-растяжки. Это фактически для техники будущего, где представил что тебе нужно посчитать и компьютер управляемый мыслью сразу все сделает и нарисует. А сейчас мы будем вымучивать это все своми пальчиками, давя на кнопочки и продвигаться медленнее черепахи затрачивая уйму энергии... А дядьки с этого 666 - Форекса, будут только смеяться и набивать карманы. Шестерка - это крутишся, крутишся, захотел взлететь, заработать и бац, и слетел. Шестерка показывает траекторию движения. На Форексе слететь 3 раза ничего не стоит, вот и получается 666. Я лично уже слетал даже больше раз. А кто достиг, и закрепился типа Bettera - тот уже на 7-ке, и эти дядьки организовавшие 666, его побаиваются.

 
m_keeper:

Погонял в тестере за март на M15

В большинстве случаев можно верить хотябы на день

Это сильно.

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

 

Подскажите в чём дело

вот код бибдиотеки

#include <windows.h>
#define EXPORT extern "C" __declspec(dllexport) 

// Прототип экспортной функции...
EXPORT int __stdcall my_func(int i);

BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD dwReason, LPVOID lpReserved)
{
return TRUE;
}

EXPORT int __stdcall my_func(int i)
{
return i;
}

в индикаторе пишу

#import "tmp3.dll" int my_func(int i);

и
int ghh=1;
int ggg=my_func(ghh);

выдаёт ошибку

FFT_and_Future EURUSD,M30: cannot call function 'my_func' from dll 'tmp3.dll' (error 127)


Может тут какая-то хитрость есть?

я уже по разному прбывал

 
goldtrader:
m_keeper:

Погонял в тестере за март на M15

В большинстве случаев можно верить хотябы на день

Это сильно.

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

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

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

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

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

 
m_keeper:

Подскажите в чём дело

вот код бибдиотеки

Ты эту библиотеку __lib_FFT.mq4 хочешь сделать в виде DLL? Или что-то другое?

 

нет, я хочу подключить другую, но там всё на класах написано, так что переписывать под mq4 не вариант

я пробывал примеры с форума компилировать, но даже они не работают

у меня Visual studio 6

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

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

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

 
m_keeper:

нет, я хочу подключить другую, но там всё на класах написано, так что переписывать под mq4 не вариант

я пробывал примеры с форума компилировать, но даже они не работают

у меня Visual studio 6

И опция "Разрешить использование DLL", конечно включена? Там же в МТ4, есть пример как подключать DLL, как раз для VC++6.

Но если это касается проеобразования Фурье, то зачем такие сложности. Я же на предыдущей странице привел код. Это хоть и не БПФ, а классический вариант, но куда торопиться, если вопрос пока и так не очень осмыслен?

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