Блог им. 3Qu

Совершенствуем Exponential Moving Average (EMA).

    • 16 января 2021, 00:04
    • |
    • 3Qu
  • Еще
На днях написал топик с описанием своей старой стратегии - Ретростратегия ретро ТС., снятой с эксплуатации в далеком 2014 г, которая, как оказалось, даже в упрощенном виде может работать и сегодня. Не собирался ее использовать, но в ходе обсуждений решил потратить на нее пару вечеров, восстановить по памяти до последней ее версии, и посмотреть, не стоит ли отложить текущие дела, и быстренько вывести ее на рынок.
В ходе восстановления пришлось также дорабатывать фильтры ФНЧ, простейшим из которых является ЕМА. Я дорабатывал свои фильтры, а вам покажу, что можно сделать с ЕМА, чтобы ее усовершенствовать и улучшить.
В комментариях к топику о ретростратегии упомянули некоего Jurik (jurikres.com) и его JMA. Думал, что он уже забыт, но, жив — курилка. То, что мы получим будет не хуже его индикаторов и подобрав периоды сглаживания можете сами в этом убедиться. Вообще, все поделки Jurikа — это где-то на уровне лабораторных работ студентов 4-го курса института по курсу ТАУиР. Наши сегодняшние тоже сложностью не отличаются, но может даже лучше, хотя бы потому, что не являются черными ящиками, и вы знаете как это устроено.

Выражение для ЕМА знают, пожалуй, все:
               Y(t) = a0*X(t) +b1*Y(t-1).
У нее много недостатков, одним из которых является большая групповая задержка. Попробуем исправить это, и для начала вычислим ошибку слежения ЕМА за котировками:
               delta = x(t) — Y(t-1).
Теперь добавим эту ошибку с некоторым коэффициентом Kos к X(t) (это называется — обратная связь), и получим выражение для нашей скорректированной ЕМА:
               Y(t) = a0*(X(t) + Kos*delta) +b1*Y(t-1).
Теоретически Kos может принимать значения от 0 до 1, но увлекаться не надо, обычно достаточно Kos от 0 до 0.3.
Все, можете смотреть что получится.

В рассмотренном выше случае мы использовали так называемую линейную обратную связь, когда корректирующий сигнал пропорционален сигналу ошибки. Далее мы рассмотрим нелинейную связь, когда и сам коэффициент Kos меняется пропорционально ошибке. Запишем это:
                delta_nl = Knl*abs(delta/y[t-1])*delta.
Здесь delta/y[t-1] сделано для того, чтобы delta_nl не изменялась от уровня цены, а зависела только от ее изменения.
В итоге, для нашей ЕМА с нелинейной обратной связью окончательно получим:
                Y(t) = a0*(X(t)+ delta_nl) +b1*Y(t-1).
С Knl тоже увлекаться не надо, но он здесь достаточно велик, у меня Knl= 1.0.

Теперь можем скомбинировать обе обратных связи в одном индикаторе:
                 Y(t) = a0*(X(t)+ Kos*delta + delta_nl) +b1*Y(t-1).
И наконец графики того, что у нас из этого получилось на единичном скачке 1(t) — это такой стандартный тест для всяческих подобных систем, по которому, глаз пристрелямши, можно оценивать характеристики системы.
Совершенствуем Exponential Moving Average (EMA).
LPF — типовой ФНЧ фильтр,
OS — ФНЧ с обратной связью
NL — ФНЧ с комбинированной связью (последний вариант в топике)
Смотрим выбросы — 10% — это оч небольшой выброс, реально, если и будет виден, то только на гэпах.
Теперь посмотрим те же самые индикаторы на реальных котировках фьючерса Si.
Совершенствуем Exponential Moving Average (EMA).
На графиках все так называемы периоды сглаживания одинаковы. Я выбирал значения Kos и Knl такими, которые оптимальны для моих целей. Для ваших применений значения Kos и Knl могут быть совсем другими, и, соответственно, и графики будут иметь несколько иной вид.
Сорри, но для тестов я использовал не ЕМА, а свои ФНЧ, но на ЕМА тоже должно получится, когда-то давно я пробовал.
Вот и все.
Удачи.
4.7К | ★18
24 комментария
А связь ФНЧ  обратная положительная или отрицательная? Я в Метастоке изобретал средние от противного как в ББ.Чем быстрее цена идет тем более отставание средней… чтобы защититься от ложных проколов.Вот коридор \ошибки\ работает против ББ (болинжера). Зачем это ему? Мне это было не понятно .
Кстати люблю аллигаторы Билла.На дневном они стирают влияние новостей и это очень полезно.
avatar
Делать тебе нече=))

avatar
Жирный трейдер из Лондона, типа того.)
avatar
МА с ОС это адаптивная скользящая средняя (AMA)?
avatar
SergMsk, без понятия, я не использую стандартные индикаторы ТА.
avatar
 Y(t) = a0*(X(t) + Kos*delta) +b1*Y(t-1).
->
 Y(t) = a0*(X(t)) +b1*Y(t-1) + a0*Kos*delta

где a0*Kos*delta
delta = x(t) — Y(t-1).

 Y(t) = a0*(X(t) + x(t) — Y(t-1).) +b1*Y(t-1).
 Y(t) = a0*(2*X(t)) — a0*Y(t-1) +b1*Y(t-1).         
где b1= 100-a0

 Y(t) = a0*(2*X(t)) — a0*Y(t-1) +(100-a0)*Y(t-1).         
 Y(t) = a0*(2*X(t)) + ((100)-(2*a0))*Y(t-1).        
 Y(t) = 2*(a0*(X(t)) + ((50)-(a0))*Y(t-1))
У тебя будет на простой линии ГОРИЗОНТАЛЬНО график выше всегда.
за счет коэффициента 2.

EMA = (CLOSE (i) * P) + (EMA (i — 1) * (100 — P), где:

CLOSE (i) — показатель цены закрытия периода,
EMA (i — 1) — значение скользящего среднего предыдущего периода,
P — доля использования значения цены.

avatar
Антон Б, какой еще 2? на горизонтальной линии дельта =0. Графике в топике смотрите.
avatar
3Qu, это дельта от ema будет равна 0.
а у тебя уже функция ema' от нее не будет равна 0.
avatar
Это все вариации МАСD на EMA, DMA,TEMA.  Они менее волатильные, но по сути это нахождение 1 и 2 производной от цены. Новых преимуществ не дает.
avatar
SergMsk, не вопрос. Не дает — не используем. Не нравится — не ешь.
avatar
SergMsk, производную от цены взять не так легко.
цена это не линия.
а точки(сделки) с разрывами! между ними.
либо точки закрытия периодов.
а значит производную от цены, как есть, не взять.

а только из АППРОКСИМИРУЮЩЕЙ функции.
А производная от Аппроксимации например из n точек степени n будет гарантированно функция со степенью n-1 c другими коэффициентами.

В первую очередь производная опишет качество аппроксимации.
А не качество линии.

Честная производная от цены будет  не определена.
Там везде разрывы во всех точках.
avatar
Осталось сделать период расчета переменным и получится система аг.
avatar
Все операции со случайной величиной на выходе дают случайную величину. Но
avatar
y(+1) =a*(x+k*x-k*y)+(1-a)*y = x*(1+k)*a + y*(1-a-a*k) =>

при z=a*(1+k) 

y(+1) = z*x+(1-z)*y

легко видеть, что это уравнение EWMA c коэффициентом а+аk, то есть с меньшим периодом и меньшей памятью. Если k=0.3, то это равносильно уменьшению периода на 30%.
avatar
Kot_Begemot, естественно, обратная связь всегда изменяет частотные характеристики объекта в целом по сравнению с исходным…
avatar
с ма с этими проблема только одна, при этих подгонах. Если заработала — выскочить до того как начала лосить.
Опираясь на чутье…
avatar
Уважаемый автор! Возможно у вас в формулы вкралась опечатка? 
     Классически подразумевается, что коэффициенты (в вашей формуле a0 и b1) связаны соотношением:     b1 = 1 — a0.
     И если вы хотите сделать обратную связь в формуле, то константу delta корректнее записать так (в ваших обозначениях): 
                      delta = x(t-1) — Y(t-1)
    (          у вас в формуле стоит x(t)       )
   
Владимиров Владимир, там нет опечатки. Обычно в системах регулирования сравниваются текущий входной сигнал с выходным сигналом системы, но и ваше выражение для каких-то применений вполне может иметь место. Возможно, что именно для ЕМА это будет даже интересней.
avatar
Владимиров Владимир, он получается тянет две функции
ema
и
ema'
и дельту из ema!!! запихивает в ema'


avatar
Антон Б, Вы про DMA? Вообще то похоже на то… Но тогда мне вообще не понятен практический смысл — DMA это сглаживание ЕМА. Или народ тут чисто математические приколы пишет?! 
Владимиров Владимир,
народ, в основном, не понимает.
тут 90% народу sma формулу не вспомнят.


avatar
Спорить не буду. Но отмечу, что в вашем варианте вы обратную связь делаете пропорционально разнице текущего значения цены и значения ЕМА на предыдущем баре. И плюсуете эту разницу (пусть с понижающим коэффициентом) в текущее значение ЕМА. Такая обратная связь что сглаживает то? В моем варианте, она будет уменьшать расхождение значений ЕМА и факта. Дальше можно сделать управление коэффициентом этого уточнения. Но основные проблемы сглаживающих средних от всех этих мероприятий никуда не исчезнут. Клад зарыт в другом месте )))
Владимиров Владимир, о кладах речь и не шла.)
Речь шла о примере применении линейной и нелинейной обратной связи. В данном случае к ЕМА.
avatar
Скользячку юрика изобрели заново

http://www.jurikres.com/catalog1/ms_ama.htm#top
avatar

Читайте на SMART-LAB:
Фото
Снижение военной премии в нефти: что это меняет для доллара и G10
Во второй половине понедельника – начале вторники рынки активно пересматривают премию за худший сценарий на энергетическом рынке, что цепочкой...
Фото
12 марта Группа Ренессанс страхование опубликует МСФО за 2025 год
Напоминаем, что 12 марта 2026 года RENI опубликует МСФО Группы за 2025 год, а также проведет День инвестора, чтобы рассказать о ситуации на...
Фото
📈 Новый выпуск облигаций МГКЛ уже торгуется на рынке
Биржевые облигации ПАО «МГКЛ» серии 001PS-02 начали торговаться на вторичном рынке после размещения. 💼 Выпуск доступен для неквалифицированных...
Фото
Гендиректор Инарктики продал свои акции компании. Что это может значить?
Вечером в пятницу (6 марта ) вышел сущфакт о том, что Соснов Илья Геннадьевич, гендиректор Инарктики, продал свои акции компании. В нашем...

теги блога 3Qu

....все тэги



UPDONW
Новый дизайн