Помогите разобраться с Фурье - страница 8

 
ANG3110 писал (а):
klot писал (а):
ANG3110 писал (а):
При hmax =2; будет простая МА, на заданном периоде, не совсем понятно, зачем тогда городить, полное FFT?

Не, я тоже заметил, полное FFT гораздо стабильнее (меньше перерисовывается).
А вообще думаю нужно фильтр
if(hmax>0) for(i=hmax;i<N;i++) data[i]=0.0;
какой-нибудь вумный придумать. Что бы он выборочно нужные гармоники оставлял, а не нужные обнулял. Тогда может будет како-нибудь смысл и стабильность.

Да еще, в НейрошеллеДейТрейдере там пять или шесть разных фильтров используется в FFTаддоне, жаль формул нету, можно было бы повозиться.
И еще, если ограничивать частоты не только сверху, но и снизу, можно выделять определенную полосу колебаний. Индикатор симпотично смотриться, напоминает стохастик.
Да бог с ним пускай перерисовывается, ценность Фурье, в том что если его настроить соответствующим образом, то он хорошо показывает время, где вероятны разворотные точки. А то что траектория амплитуды не очень совпадает, это не так страшно, как раз наоборот хорошо, можно учитывать скорость изменения фазы.

Да я и не возражаю собственно. :) Фаза так фаза, тоже можно легко посчитать.
после прямого FFT в массиве data в четной ячейке храниться реальная часть в нечетной мнимая,
фаза будет:
MathArctan(data[2*i+1]/data[2*i]);
амплитуда будет
MathSqrt(data[2*i+1]*data[2*i+1]+data[2*i]*data[2*i]);
опять же выбираем нужную гармонику и смотрим :)
можно суммировать фазы и амплитуды в заданной полосе частот и делать какие-нибудь выводы :) 
 
klot писал (а):

Да я и не возражаю собственно. :) Фаза так фаза, тоже можно легко посчитать.
после прямого FFT в массиве data в четной ячейке храниться реальная часть в нечетной мнимая,
фаза будет:
MathArctan(data[2*i+1]/data[2*i]);
амплитуда будет
MathSqrt(data[2*i+1]*data[2*i+1]+data[2*i]*data[2*i]);
опять же выбираем нужную гармонику и смотрим :)
можно суммировать фазы и амплитуды в заданной полосе частот и делать какие-нибудь выводы :)

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



А это 48-ми часовой спектр гармоник с шагом 1 час, построенный на текущее время.

 
ANG3110 писал (а):
klot писал (а):

Да я и не возражаю собственно. :) Фаза так фаза, тоже можно легко посчитать.
после прямого FFT в массиве data в четной ячейке храниться реальная часть в нечетной мнимая,
фаза будет:
MathArctan(data[2*i+1]/data[2*i]);
амплитуда будет
MathSqrt(data[2*i+1]*data[2*i+1]+data[2*i]*data[2*i]);
опять же выбираем нужную гармонику и смотрим :)
можно суммировать фазы и амплитуды в заданной полосе частот и делать какие-нибудь выводы :)
А у меня тоже красиво рисуется.
 На сегодняшний день, считаю эту систему плюс нейросеть, самой перспективной для форекса. Ну конечно сугубо ИМХО. :)
 

У меня собственно есть такая идея по поводу применения метода Фурье.

Метод Фурье дает достаточно хорошее приближение функции на интервале времени исключая некоторые окрестности концов (интервала). Было бы неплохо чтобы Фурье апроксимировал конец который отвечает за текущее время (t=0) так же хорошо как середину интервала. Кроме того хорошо бы было построить ряд Фурье так, чтобы он мог предсказывать будующее. Для этого можно применить следующую идею:

Будем строить ряд Фурье на интервале [T,-T] (-T - время которое еще не наступило, t=0 настоящее время)
Однако у нас нету никаких данных на интервале [0,-T]. Потому на нулевой итерации мы возьмем close[t]=close[0] (для t<0) и построем по этим данным ряд Фурье f на отрезке [T,-T]. И далее будем последовательно выполнять следующие итерации:

1) Строим на отрезке [eps,-T] апроксимацию ряда Фурье f степенной функцией g (eps>0)
2) Строим ряд Фурье для отрезка [T,-T] по f (на T>t>eps) + g (на eps>t>-T)

То есть будем последовательно апраксимировать получившуюся функцию сначало рядом Фурье, а потом степенной функцией. Есть предположение что невязка {получившейся прогнозируемой функции цены (t<0) + функциии цен истории (t>0)} c {рядом Фурье этой функции} будет минимальна (всмысле стремиться к нулю при увеличении кол-ва итераций). А это помоему и есть необходимое условие того что во первых конец [eps,0] будет хорошо совпадать с функцией цены, а во вторых мы получим прогноз на будующее.

 
shobvas писал (а):

У меня собственно есть такая идея по поводу применения метода Фурье.

Метод Фурье дает достаточно хорошее приближение функции на интервале времени исключая некоторые окрестности концов (интервала). Было бы неплохо чтобы Фурье апроксимировал конец который отвечает за текущее время (t=0) так же хорошо как середину интервала. Кроме того хорошо бы было построить ряд Фурье так, чтобы он мог предсказывать будующее. Для этого можно применить следующую идею:

Будем строить ряд Фурье на интервале [T,-T] (-T - время которое еще не наступило, t=0 настоящее время)
Однако у нас нету никаких данных на интервале [0,-T]. Потому на нулевой итерации мы возьмем close[t]=close[0] (для t<0) и построем по этим данным ряд Фурье f на отрезке [T,-T]. И далее будем последовательно выполнять следующие итерации:

1) Строим на отрезке [eps,-T] апроксимацию ряда Фурье f степенной функцией g (eps>0)
2) Строим ряд Фурье для отрезка [T,-T] по f (на T>t>eps) + g (на eps>t>-T)

То есть будем последовательно апраксимировать получившуюся функцию сначало рядом Фурье, а потом степенной функцией. Есть предположение что невязка {получившейся прогнозируемой функции цены (t<0) + функциии цен истории (t>0)} c {рядом Фурье этой функции} будет минимальна (всмысле стремиться к нулю при увеличении кол-ва итераций). А это помоему и есть необходимое условие того что во первых конец [eps,0] будет хорошо совпадать с функцией цены, а во вторых мы получим прогноз на будующее.


Зачем связываться с Фурье если можно очень просто отфильтровать ряд цен без знания индивидуальных гармоник. Например, фильтрация высокочастотных гармоник может происходить простой скользящей средней, либо цифровым фильтром. К сожалению, SMA, EMA и другие цифровые фильтры обладают задержкой. Тогда последний интервал ряда цен можно аппроксимировать степенной функцией. Эта идея реализована здесь:

'AFIRMA'

Осталось только экстраполировать степенную функцию. Но предсказание будет очень плохим. Вообще, экстраполяция цена ряда на основе подгонки плавных функций это пустая трата времени. Экстраполяция ряда Фурье тоже ни к чему не приведёт. Если экстраполировать косинусный ряд Фурье, то это по существу предполагать что в будущем цена будет двигаться по траектории, которая точная зеркальная копия прошлой траектории. Если экстраполировать синусный ряд Фурье, то это по существу предполагать что в будущем цена будет двигаться по траектории, которая перевёрнутая зеркальная копия прошлой траектории. Зачем тогда Фурье нужен? Решите для себя как старая траектория будет зеркально отображаться в будущее и в путь!
 
gpwr писал (а):
Осталось только экстраполировать степенную функцию. Но предсказание будет очень плохим. Вообще, экстраполяция цена ряда на основе подгонки плавных функций это пустая трата времени. Экстраполяция ряда Фурье тоже ни к чему не приведёт. Если экстраполировать косинусный ряд Фурье, то это по существу предполагать что в будущем цена будет двигаться по траектории, которая точная зеркальная копия прошлой траектории. Если экстраполировать синусный ряд Фурье, то это по существу предполагать что в будущем цена будет двигаться по траектории, которая перевёрнутая зеркальная копия прошлой траектории. Зачем тогда Фурье нужен? Решите для себя как старая траектория будет зеркально отображаться в будущее
и в путь!

Надо был внимательнее читать то что я написал.
Если строить ряд Фурье на отрезке [T,0] и попытаться по коефициентам гармоник вычислить значение в t<0 то действительно значение получится симметричное. Но я предлагал строить ряд Фурье для отрезка [T,-T], он очевидно не будет симметричен относительно 0!!! Для этого и нужны итерации чтобы ряд Фурье строить на таком отрезке.

gpwr писал (а):
Тогда последний интервал ряда цен можно аппроксимировать степенной функцией. Эта идея реализована здесь:

'AFIRMA'

Я видел этот индиктор. Индикатор неплохой. Но согласитесь что существует ряд Фурье который бы апроксимировал функцию на концах так же хорошо как посередине, просто его вот так влоб найти нельзя!
 
Вот картинка - фралтальная кривая Коха, сверху вниз пять этапов ее построения. Каждая прямая
делится на три участка и срединный участок соеденяется углом.




На бесконечной итерации она превращается в "пушистую снежинку"

Вот фрактальна кривая Мандельброта и этапы ее построения. Каждая прямая заменяется
зигзагом.



На бесконечной итерации она становит похожа на график котировок.

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

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

В своей работе Мультифрактальная прогулка по Уолл-Стрит
Манделброт предлагает для моделирования реальных котировок использовать
фракталы на основе деформированных зигзагов. Но помойму действительность еще
сложнее.

 
shobvas писал (а):
Но согласитесь что существует ряд Фурье который бы апроксимировал функцию на концах так же хорошо как посередине, просто его вот так влоб найти нельзя!

Да существует. Это полный ряд Фурье, то есть с синусами и косинусами. Но он тоже имеет недостаки. Частоты дискретного преобразования Фурье задаются по формуле 2*pi*k/N. То есть все синусы и косинусы в ряду Фурье будут повторять свои значения с периодичностью N баров: cos(2*pi*k/N*i)=cos(2*pi*k/N*(i+N)), sin(2*pi*k/N*i)=sin(2*pi*k/N*(i+N)). Значит экстраполяция ряда Фурье приведёт к повторению прошлого. Например, сегодняшняя цена повторится через N баров. Так как вы сами выбираете N то тем самым контролируете когда цена повторится. Опять же. Зачем тогда полный ряд Фурье нужен. Решите для себя через сколько баров цена повторится и начинайте торговлю.

Экстраполяция степенной функции тоже не имеет значения. Нельзя предсказать рынок путём подгонки каких-то функции под исторические данные. Нужно использовать либо статистические либо самообучающие методы. Почитайте книги по эконометрике и анализу временных рядов. Самым распространённым методом предсказания является метод Бокса-Дженкинса, основанный на авторегрессии. Проблема с этим методом в том что в его интервал достоверности можно вписать грузовик. Мне кажется что больше успехов следует ожидать от самообучающихся нейронных сетей.
 
gpwr писал (а):
shobvas писал (а):
Но согласитесь что существует ряд Фурье который бы апроксимировал функцию на концах так же хорошо как посередине, просто его вот так влоб найти нельзя!

Да существует. Это полный ряд Фурье, то есть с синусами и косинусами. Но он тоже имеет недостаки. Частоты дискретного преобразования Фурье задаются по формуле 2*pi*k/N. То есть все синусы и косинусы в ряду Фурье будут повторять свои значения с периодичностью N баров: cos(2*pi*k/N*i)=cos(2*pi*k/N*(i+N)), sin(2*pi*k/N*i)=sin(2*pi*k/N*(i+N)). Значит экстраполяция ряда Фурье приведёт к повторению прошлого. Например, сегодняшняя цена повторится через N баров. Так как вы сами выбираете N то тем самым контролируете когда цена повторится. Опять же. Зачем тогда полный ряд Фурье нужен. Решите для себя через сколько баров цена повторится и начинайте торговлю.

Экстраполяция степенной функции тоже не имеет значения. Нельзя предсказать рынок путём подгонки каких-то функции под исторические данные. Нужно использовать либо статистические либо самообучающие методы. Почитайте книги по эконометрике и анализу временных рядов. Самым распространённым методом предсказания является метод Бокса-Дженкинса, основанный на авторегрессии. Проблема с этим методом в том что в его интервал достоверности можно вписать грузовик. Мне кажется что больше успехов следует ожидать от самообучающихся нейронных сетей.

Неплохой результат дает, если мы для разложения Фурье делаем опору. В частности можно легко экстраполировать регрессию вперед, а Фурье строить относительно нее. Можно в виде опоры подкладывать мувинг и строить сумму гармоник, в отдельном окне, как-будто мувинг продолжается линейно. Можно на основе плавно изменяющейся средней типа Т3 сдвинутой на пол периоданазад, чтобы она точно совместилась с данными, а конец экстраполировать параболой, которая настраивается по минимуму СКО, и относительно этой экстраполяции строить Фурье. Но в любом случае высокая вероятность повтора циклов будет, если мы строим несколько вариантов экстраполяции Фурье с различными периодами и каждый вариант оптимизируем по минимуму СКО. Если происходит совпадение показаний нескольких вариантов, то их можно считать вероятными. Если в дальнейшем происходит опережение по фазе или отставание, то это будет давать корректирующий разностный сигнал, который можно использовать для автоподстройки или перерасчета. Это напоминает детектор с ФАПЧ (фазовой автоподстройкой частоты) в радиоприемных устройствах, который является самым эффективным и помехоустойчивым.
 
New писал (а):
Вот картинка - фралтальная кривая Коха, сверху вниз пять этапов ее построения. Каждая прямая
делится на три участка и срединный участок соеденяется углом.

...

Конечно никем не доказано, что реальные котировки подобны фрактальным функциям, но
тот факт что графики самоподобны, (т.е. если убрать масштабы становится невозможно
отличить например минутки от виклей) наводит все-же на мысль о их фракталоподобной
природе.
Фракталы тут не причем. Тема посвещена рядам Фурье. Зачем было столько флейма не по теме поднимать? Кроме того вы не поверите, но я с легкостью отличу минутки от 15минуток. а 15 минутки от часовиков.

gpwr писал (а):
Да существует. Это полный ряд Фурье, то есть с синусами и косинусами. Но он тоже имеет недостаки. Частоты дискретного преобразования Фурье задаются по формуле 2*pi*k/N. То есть все синусы и косинусы в ряду Фурье будут повторять свои значения с периодичностью N баров: cos(2*pi*k/N*i)=cos(2*pi*k/N*(i+N)), sin(2*pi*k/N*i)=sin(2*pi*k/N*(i+N)). Значит экстраполяция ряда Фурье приведёт к повторению прошлого.
Не вижу смысла второй раз объяснять почему не будет повторения и симметрии.
Причина обращения: