Адаптивные цифровые фильтры

 
Сейчас многие используют JMA и ее модификации, но на каких конкретно теоретических предпосылках они работают почти нигде не сказано. Если кто-нибудь знает - поделитесь, пожалуйста.
 

информации довольно много на эту тему, например, тут: http://prodav.narod.ru/dsp/index.html (раздел "адаптивная фильтрация цифровых данных")


Спросите так же Prival-а, он кажется, единственный специалист по ЦОС из нас, думаю, поможет в теории.

PS: что такое JMA?

 

С удовольствием бы помог. Но к сожалению не могу читать код MQL так же свободно как MathCad где формулы пишутся так как мы и привыкли видеть их в книгах. Единственное, что мне показалось (хотя я и не уверен) используется один из видов регрессии, что бы было понятнее

Есть линейная регрессия типа y(x)=ax+b. Можно коэффициенты а и b рассчитать разным способом, можно по МНК (вроде бы там не используется), а можно используя рекурсию, но что бы понять это надо четко разобраться в циклах (там я уже путаюсь, где, что, за чем вычисляется). Скорее всего там нелинейная регрессия, т.к. есть какие то if() при расчете + сам вид уравнения регрессии не понятен, сколько же там этих коэффициентов.

В принципе почти все индикаторы можно рассматривать как цифровые фильтры, та же обыкновенна МА, это цифровой фильтр. А слово адаптация обычно говорит о том что какие то параметры (коэффициенты в нутрии фильтра) должны меняться в зависимости от характеристик вх. сигнала. Поэтому в первую очередь к адаптивным цифровым фильтрам (ЦФ) я бы отнес АМА, FRAMA и им подобные (параметр усреднения (n), меняется в зависимости от оценки дисперсии входного процесса), почти все фильтры FFT, вейвлет у которых используется пороговая обработка (попытка согласовать параметры ЦФ со спектром входного полезного сигнала).

А вот SATL, FATL не являются адаптивными, т.к. 1 раз при проектировании были рассчитаны коэффициенты ЦФ, которые позволили согласовать переходную характеристику фильтра со спектром входного сигнала (АЧХ и ФЧХ), и в процессе работы эти коэффициенты не меняются. Это так называемые согласованные фильтры. Но есть идеал, то что называют в ЦОС оптимальный фильтр, построить его трудно, но возможно. Для этого необходимо знать спектры полезного сигнала и шума.

Не знаю помог чем либо или наоборот запутал :-), но в любом случае удачи.

 
2 grasn - спасибо большое за ссылку, материал очень неплохо подобран )

2 Prival - опыт работы с подобного рода цифровыми фильтрами у меня некоторый есть, но по принципу от "теории к практике" (фильтр Кауфмана), визуально результаты были очень даже хорошие, но вот статистика особых преимуществ не выявила. С JMA другое дело статистика несколько лучше, так как в алгоритм внесены, как мне кажется, некоторые оригинальые решения, вот именно их суть мне и хочется понять. Теперь придется на основании теории разбирать код и искать отличия ))
 
NightPaul:

2 grasn - спасибо большое за ссылку, материал очень неплохо подобран )

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

А попробуй сделать следующее, бери за основу АМА (кауфмана), но используй не простое усреднеение,  а регрессионную модель. Может так будет легче + все будет понятно + сам делаеш код. ИХМО такое обьединение методов может оказаться неплохим.
 
Кстати, неплохой вариант. Отпишу как будут рез-ты
 
Prival, давайте я код перепишу в формулы, а вы объясните.
 
Integer:
Prival, давайте я код перепишу в формулы, а вы объясните.

код чего, JMA. Или мне написать формулы как АМА переделать? На сколько мне говорит мой опыт программирования, лучше (и быстрее) написать свой код, чем разбираться с чужим и написать тоже самое (ну или что то очень похожее).
 

Коллеги, не сочтите меня слишком назойливым, но все же – что такое JMA? Свой адаптивный фильтр когда то пытался делать на основе алгоритма наименьших квадратов Уидроу-Хопфа, он вроде самый простой. После экспериментов остался уверен на 300%, что сделать адаптивный фильтр под временные ряды форекса не возможно в принципе, ибо чудес на свете не бывает, бывают правда кудесники. Главная причина – огромное влияние эффекта нестационарности: поверхность производительности фильтра все время меняется, следовательно меняются минимумы этой поверхности, да и проблема со сходимостью весовых коэффициентов. Но в общем – я не специалист, а всего самоучка в ЦОС-е.

PS: Если сделаете действительно адаптивный фильтр, плииз дайте посмотреть одним глазком :о)

 
2 Integer
        
Если не затруднит, было бы неплохо разобрать код JJMASeries из вот этой статьи 'Эффективные алгоритмы усреднения с минимальным лагом и их использование в индикаторах'

2 grash
      
 Вот что сам автор пишет про JMA ) - http://www.jurikres.com/catalog/ms_ama.htm#top
       Так как все это продается, нам достаюстся лишь деассемблированные коды, как я сам понимаю, а очень хочеться понять в чем там изюминка )

 

Там, кстати, легкий наезд и на фильтр Калмана (Prival, это специально для тебя):

JMA performs BETTER THAN OTHER SOPHISTICATED METHODS, including ...

Kalman's g, g-h, g-h-k filters, with or without fading memory
Savitzky-Golay filters, with or without fading memory
Kaufman's adaptive moving average (KAMA)
Chande's Variable Index Dynamic Average (VIDYA)
Double Exponential Moving Average (DEMA)
Triple Exponential Moving Average (T3)
Brown's Modified Moving Average (MMA)
Ehler's Modified Optical Elliptical Filter (MEF)
Ehler's Symmetrically weighted FIR filter
Hull Moving Average (HMA)

P.S. Кстати, внизу этой странички есть ссылка на фильтр Калмана.

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