И снова о сглаживании по методу Юрика... - страница 2

 

Есть ещё информация!

Этот α-β фильтр имеет также название МЕМА, данное С.Н.Булашёвым в http://www.howtotrade.ru/phorum/read.php?3,6611

В заключение схема вычисления p. Этот параметр вычисляется на основе следующей величины, назовём её dm.

D(i) = x(i) - B(i-1)
d(i) = x(i) - b(i-1)

Далее всё для величин(i).

dm = max(|D|,|d|)

Вычисляется простая средняя c периодом 10:
sdm = SMA(dm, 10)

Накапливается 127 значений sdm. Из этих значений выбирается медианная половина длиной 65 и вычисляется её средняя.
В книге С.В. Булашёва "Статистика для трейдеров" эта величина называется среднее арифметическое по 50%-му интерквантильному промежутку. Обозначим эту величину как adm.

1<= p <=C1. Если значение p, вычисленное по следующей формуле, выходит за эти границы, то оно отбрасывается, и p принимает соответствующее граничное значение.

p = ( dm / adm ) ^C2

beta4 = C3^sqrt(p)
B = max( x - D * beta4, x )
b = min( x - d * beta4, x )


C1, C2, C3, ...  - константы, зависящие от периода N. Их значения можно подсмотреть в самой программе.

Уффф.
 

Так которая от Spiggy. Оптимизировано для понимания. Только немного не похожа на оригинал. В оригинале есть ошибка, попытка присвоить значение несуществующему элементу массива. Может еще есть какие-нибудь незначительные отличия. Но в общем суть можно понять. Где-то четверть кода была занята подсчетом одних и тех же констант. Половина - от заморочек с инициализацией. Еще немного - обслуживание закольцованых массивов.

Интересная фишка в нем - подсчет среднего по значениям находящимся в середине отсортированного ряда.

Файлы:
 
Woooow!!!! Предыдущий файл Integer, отжатый JMA, просто супер! Снимаю шляпу.
По сравнению с исходником - земля и небо. Рекомендую как образец для подражания.

Хочу добавить ещё пять копеек к α-β фильтру. Или уже называть его MEMA?

До сего дня у меня оставалось два вопроса:
1. Почему в Юрике alfa1 и beta1 в квадрате?
2. Какой функцией связать α и β (w и w2 по обозначениям автора)  из статьи  С.Н.Булашёва? (Этот вопрос автор оставлял открытым)

Ответ оказался один: уменьшение задержки (лага).

Посмотрим на формулу задержки. Мы увидим, что чем больше α и β (w и w2), тем задержка меньше.
Увеличивать α и β, есстественно, мы можем только до известного предела. Пределом же этим будет обращение дискриминанта в 0, и a=b.
Что даёт нам чудесную по простоте формулку:

√α+√β=1


P.S. Как легко заметить, отслеживание границ B и b, необходимых для вычисления величины dm (UpperBound и LowerBound, MaxAbsDif в обозначениях Integer), идёт по схеме Parabolic SAR. Изучая алгоритм Юрика, невольно задаёшься вопросом, а какая схема в алгоритме Юрика не используется? Такое ощущение, что в него запихнуты все известные алгоритмы форекса. Надо отдать ему должное - это всё чудесным образом ещё и работает.

 
MEMA(x, α, β) оказалась проще, чем могло показаться на первый взгляд.

EMA(EMA(x, α₀), α₁) = MEMA(x, α₀α₁, β₀β₁)

MEMA оказалась не только суммой EMA, но и их произведением.
Таким образом, Юрик это

 JMA(x) = EMA1(EMA1(EMA1(x) + phase*EMA0(x - EMA1(x))))

При таком количестве EMA волей неволей станешь гладким.
 
EfremoffPaul:
 При таком количестве EMA волей неволей станешь гладким.
Неа, пробовал делать последовательное экспоненциальное сглаживание, даже штук 20 сглаживаний с незначительным коэффициентом, не получалось догнать Юрика.
 
EfremoffPaul: При таком количестве EMA волей неволей станешь гладким.

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

Джурик не такой, он умнее.

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