Индикаторы: Экстраполяция цен методом Фурье

 

Экстраполяция цен методом Фурье:

Этот индикатор описывает цены рядом Фурье и экстраполирует их в будущее.

Данный индикатор использует алгоритм вычисления частот Куина-Фернандеса (Quinn-Fernandes). Производит фиттинг гармоник одну за другой до тех пор, пока не будет обработано H гармоник. После фиттинга новой гармоники, алгоритм вычисляет остаток между обновленной моделью и реальными значениями и производит фиттинг новой гармоники к остатку.

Индикатор рисует две кривые: синим цветом показаны смоделированные значения цен в прошлом, красным - предсказанные значения цен в будущем.

Экстраполяция цен методом Фурье

Автор: Vladimir

 

Подглючивает



 
Urain:

Подглючивает



Спасибо. Вижу почему так получается. Код исправил. Надо подождать пока не опубликуют.
 
gpwr:
Спасибо. Вижу почему так получается. Код исправил. Надо подождать пока не опубликуют.

Просто с каждым новым баром нужно переинициализировать  массив предсказания чтоб история не накапливалась.

А то заполнение ушло вперёд а этот бар так и осталя заполненым с прошлого бара,и никто его не обнуляет.

 
Urain:

Просто с каждым новым баром нужно переинициализировать  массив предсказания чтоб история не накапливалась.

А то заполнение ушло вперёд а этот бар так и осталя заполненым с прошлого бара,и никто его не обнуляет.

 

Да, правильно. Пока ждём публикации новой версии индикатора, в старой нужно зделать такое изменение.

Вместо

   if(prev_calculated==0) 
   {
      ArrayInitialize(xm,EMPTY_VALUE);
      ArrayInitialize(ym,EMPTY_VALUE);
   }
нужно убрать if(..)

 

ArrayInitialize(xm,EMPTY_VALUE);
ArrayInitialize(ym,EMPTY_VALUE);
 
gpwr:
Спасибо. Вижу почему так получается. Код исправил. Надо подождать пока не опубликуют.
Не вижу новой версии индикатора, публиковать нечего. Вы что-то меняли?
 

Rosh:
Не вижу новой версии индикатора, публиковать нечего. Вы что-то меняли?

 

 

Да, менял. Сейчас вижу что оба экстраполятора (Фурье и АР) получили новые версии кода. Спасибо. Больше ничего делать не нужно.

 

Индикатор интересный только уж очень противоречивый!

На 30М


а уже на H1:



 
gisip:

Индикатор интересный только уж очень противоречивый!

На 30М


а уже на H1:



 

Вы правильно заметили что он противоречивый. Предсказания меняются в зависимости от длинны истории, на которой происходит подгонка Фурье ряда. При переходе он М30 на H1 при сохранении Npast как раз это и происходит. Вы можете попробовать уменьшить Npast  в 2 раза при таком переходе чтобы сохранить длинну истории.

Кстати, изменение предсказаний в зависимости от длинны истории присуще всем экстраполяторам, с которыми я сталкивался. Поэтому длинну истории (Npast) надо выбирать с учётом каких-то критериев. Например, на одном из mql4 форумах, кто-то предлагал вписывать ряд Фурье только к ценам движущимся внутри канала (момент входа цены в канал даёт начало истории и величину Npast). Можно также попробовать добавить отсутствующие бары за суботу и воскресение и другие праздники, чтобы ряд Фурье вписывался в календарное время. Можно также попробовать применить этот ряд к тикам. Prival вроде этим занимался и он был убежден в правильности такого тикового подхода.

Prival, у Вас интерес к рядам Фурье не потерян? 

 
gpwr:...

Prival, у Вас интерес к рядам Фурье не потерян? 

Нет не потерялся. Только есть там один огромный камень, об него все разбивается. Вы как электронщик меня поймете. Постараюсь последовательно это изложить.

1. Если допустить, что цена непрерывна (аналоговый сигнал), она не зависит от того поступают ли к нам котировки или нет. Допустим это суббота или воскресенье, спрос на евро или доллар никуда не делся…

2. Тогда поступающие к нам котировки это есть не что иное как работа АЦП. Причем АЦП в худшем его проявлении.

3. Вспомните работу АЦП, есть шумы квантования и шумы дискретизации. Допустим у Сергиенко А.Б. Цифровая обработка сигналов 2002 г. Эффектам которые проявляються при квантовании посвящена  целая глава №7, вот например, многие считают что шума нет. А на самом деле

Он есть, раз есть - его надо обрабатывать. Если бы были только шумы квантования. Это было бы великолепно, но есть еще одно, то от которого любой электронщик бежит как черт от ладана, это..

4. Шумы дискретизации, и они есть, тики к нам приходят не с точностью работы кварцевого генератора, следовательно частота дискретизации является случайной величиной. Попробуйте спрогнозировать простую синусоиду, которая оцифрована с переменным дельта тэ… А теперь просто подумайте, бары нам дают иллюзию константы дельта тэ, которой на самом деле нет. А ведь 95% всех алгоритмов, считают, что дельта тэ константа, иначе все сыпеться, как карточный домик...

Многие практикующие трейдеры, не опускаются ниже периода М5, они интуитивно  чувствуют, что там ошибка – относительная ошибка дискретизации (относительно начала - конец бара) становиться большой, чем выше тайм фрейм,  тем меньше эта ошибка оказывает влияние. Я как то рассчитывал, если не применять специальных мер, то нижний предел, где то в районе 3-х минут, дальше шумы сильно возрастают…

Я вижу единственный выход, тики, аппроксимация, и нарезание уже с нужным дельта тэ,  но без истории тиков, построить надежный автомат, практически нереально…малейший сбой, и снова сиди копи тики, пока не накопишь для принятия решения… а время уже упущено, тебя уже раздели…или раздевают…

Сам Фурье прекрасный инструмент для построения адаптивных фильтров, но нужно очень хорошо понимать, что там, как и почему происходит, даже это https://www.mql5.com/ru/code/120 не просто так придумали,  это цифра, это ЦОС, целая область знаний, навыков и умений. Не будь её,  ни компов, ни сотовых, ни телевизоров не было бы

З.Ы. как то длинно все получилось, но в 2-х словах не опишешь. Может я и неправ. Я тут только что Ниробе написал https://www.mql5.com/ru/forum/120788/page380 а теперь для себя повторю.

Мыслю — следовательно существую. Во все времена "мыслить" неизбежно означало "инакомыслить", сомневаться, делать выбор. Удачи вам в «инакомыслии».

 
Prival:

Нет не потерялся. Только есть там один огромный камень, об него все разбивается. Вы как электронщик меня поймете. Постараюсь последовательно это изложить.

Доступно всё описали. Спасибо. Насчёт вариации шага дискретизации dt. Вы считаете что она случайна или имеет какой предсказуемый характер? Если вариация dt предсказуема, то можно вписать в неё ряд фурье. Получаем два вложенных ряда фурье: первый для самих цен и второй для временного шага dt. В таком случае получаем что-то похожее на частотно (или фазово) модулированный сигнал:

гармоника h(t) = mh + ah*cos(wh*t) + bh*sin(wh*t)

время t =  mt + at*cos(wt*t) + bt*sin(wt*t)

итого h(t) = mh + a*cos(wh*(mt+at*cos(wt*t)+bt*sin(wt*t)) + ...

Есть аж целое направление в Фурье анализе называемое nonuniform fourier transform.

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