JMA (Jurik’s Moving Average) — Скользящая средняя Юрика

Скользящая средняя Юрика (Jurik’s Moving Average, JMA) — адаптивная скользящая средняя, разработанная компанией Jurik Research под руководством известного трейдера Марком Юриком (Mark Jurik). JMA позиционируется как более гладкая, с меньшей запаздываемостью и меньшим «шумом», чем стандартные скользящие средние (SMA, EMA) и многие другие адаптивные фильтры. Индикатор JMA представляет собой тип взвешенной скользящей средней, которая придаёт больший вес последним рыночным данным, а не прошлым историческим данным. Таким образом, Jurik Moving Average можно использовать для более легкого определения тенденций.
Теория, лежащая в основе скользящей средней Юрика, состоит из двух частей. Первая часть учитывает ценовые разрывы. JMA сглаживает данные временного ряда, в результате чего получается график, который легко читать и понимать. Когда речь идет о ценовых разрывах, этот индикатор выделяется тем, что он не создает запаздывания по сравнению с другими техническими инструментами. Другая часть этого индикатора учитывает фильтр шумоподавления. Было обнаружено, что JMA считывает информацию уникальным образом, адаптируя механизм нелинейной фильтрации. Результатом работы этого механизма является отсутствие запаздывания и точность. Он даже учитывает проскакивания и недоскакивания в ценовых разрывах.

Некоторые особенности JMA:
Адаптивность к изменению волатильности. Индикатор подстраивается под скорость движения рынка: становится медленнее, когда рынок движется медленно, и быстрее, когда рынок движется быстро.
Коррекция фазы. JMA быстро корректирует свою фазу при резких поворотах рынка, чтобы синхронизироваться с ценовым действием. Это одна из ключевых особенностей, которая делает индикатор уникальным.
Меньшее запаздывание. JMA использует запатентованный адаптивный алгоритм, чтобы устранить запаздывание, при этом сохраняя сглаженную линию индикатора.
Снижение ложных сигналов. Индикатор помогает уменьшить ложные сигналы (уменьшение числа ложных пересечений и «шипов»), которые могут привести к плохим сделкам.
Сглаживающий эффект: Как и в случае с любым другим скользящим средним, JMA сглаживает данные о ценах, чтобы можно было легко визуализировать направление тенденции. Индикатор прокладывает плавную линию, которая следует за основными колебаниями цен.
JMA особенно полезен на быстро меняющихся или нестабильных рынках, где традиционные скользящие средние могут реагировать слишком медленно или генерировать ложные сигналы.
Применение: используется как трендовый индикатор (определение направления тренда и фильтрация сигналов), для построения сигналов при пересечении с ценой или другими средними, а также как базовый фильтр для других индикаторов.
Ниже приведен пример скользящего среднего Юрика (оранжевый цвет) и простого скользящего среднего за 200 дней (синий цвет). Как видите, Юрик МА гораздо отзывчивее.

Расчет индикатора Jurik’s Moving Average
Важно: точная формула JMA коммерчески защищена и не полностью раскрыта. Ниже — обобщённое описание принципов работы и приближённая схема, основанная на публичных описаниях и обратном анализе.
Ключевые идеи:
— JMA строится как рекурсивный фильтр с переменным коэффициентом сглаживания, который зависит от локальной «жёсткости» сигнала (волатильности/шумности) и настроечного параметра, обычно называемого «phase» или «length» / «speed» / «power».
— Фильтр сочетает идеи коррекции от фазы (phase control) и адаптивной дисперсии (volatility weighting). При этом достигается компромисс между гладкостью и задержкой: пользователь может управлять параметрами, чтобы уменьшать lag или увеличивать сглаживание.
— В реализации используются несколько этапов фильтрации (последовательные рекурсивные фильтры) и коррекции фазы (phase adjustment), иногда с применением полиномиальной аппроксимации и механизмов подавления выбросов.
Параметры (в разных реализациях):
— Length (n) — базовый период/ширина окна (аналогичен длине скользящей средней).
— Phase (p) — смещение/фаза, влияет на задержку и синхронность с ценой. Может быть положительным или отрицательным (в некоторых реализациях ограничен диапазоном).
— Power / Volatility / Sensitivity — дополнительный параметр, влияющий на адаптацию к волатильности и дополнительную степень сглаживания.
Приближённая рекурсивная схема (концептуальная):
1. Вычисление базового сигнала — например, простая или экспоненциальная скользящая средняя от цены (Close) с периодом n. Это даёт первичный уровень сглаживания.
2. Оценка локальной «жёсткости» или шума — на основе отклонений цены от базового сигнала, либо на основе скользящего стандартного отклонения/усреднённого абсолютного отклонения. Этот компонент задаёт адаптивный коэффициент сглаживания α(i), который меняется во времени.
3. Применение рекурсивного сглаживания с переменным α:
JMA(i) = α(i) * Price(i) + (1 − α(i)) * JMA(i−1) (упрощённый вид)
Но в реальной JMA используются более сложные выражения с несколькими стадиями и фазовой коррекцией, чтобы уменьшить искажения фазы.
4. Фазовая коррекция (phase control) — дополнительный шаг, корректирующий значение, чтобы подвинуть сигнал вперёд или назад относительно цены без значительного увеличения шума. Это достигается через комбинацию текущих и прошлых значений JMA и, возможно, производных.
Пример приближённой реализации (упрощение для понимания; не эквивалент оригиналу):
— Шаг 1: EMA1 = EMA(price, n)
— Шаг 2: NoiseMetric = EMA(|price − EMA1|, n) (оценка местного шума)
— Шаг 3: α(i) = f(n, NoiseMetric(i), phase, power) (функция, ограниченная [0,1])
— Шаг 4: JMA(i) = α(i)*price(i) + (1−α(i))*JMA(i−1)
— Шаг 5: (опционально) пройти ещё одну/две стадии фильтрации и выполнить фазовую корректировку.
Вот еще вариант формул по индикатору JMA, 3 этапа сглаживания Юрика
1-й этап — предварительное сглаживание с помощью адаптивной EMA:
MA1 = (1-alpha)*Price + alpha*MA1[1];
2-й этап — еще одно предварительное сглаживание фильтром Kalman:
Det0 = (Price — MA1)*(1-beta) + beta*Det0[1];
MA2 = MA1 + PR*Det0;
3-й этап — окончательное сглаживание с помощью уникального адаптивного фильтра Юрика:
Det1 = (MA2 — JMA[1]) * (1-alpha)2 + alpha2 * Det1[1];
JMA = JMA[1] + Det1;
где:
— Price — Ряд цен
— alpha — динамический коэффициент
— beta — периодический коэффициент = 0,45*(Length-1)/(0.45*(Length-1)+2)
— PR — Соотношение фаз: PR = Phase/100 + 1.5 (if Phase < -100 then PR=0.5, if Phase > 100 then PR=2.5).
Динамический коэффициент — это периодический коэффициент (beta), повышенный до степени (pow):
alpha = beta ^ Pow,
где:
— pow = rVolty ^ pow1
— rVolty — относительная волатильность цен
— pow1 — степень относительной волатильности по следующей формуле:
pow1 = len1 — 2 (если pow1 < 0.5 то pow1 = 0.5),
где:
len1 — дополнительный периодический коэффициент:
len1 = Log(квадратный корень(len))/Log(2,0) + 2 (если len1 < 0, то len1 = 0).
Таким образом, вы можете видеть, что динамический фактор основан на относительной волатильности цен, что обеспечивает требуемую адаптивность для данного вида ценового фильтра.
Формула для определения относительной волатильности цен такова: rVolty = Volty/AvgVolty
(если rVolty > len1^(1/pow1), то rVolty = len1^(1/pow1), если rVolty < 1, то rVolty = 1),
где:
— Volty — волатильность цены, основанная на расчете так называемых диапазонов Jurik (VisualMode = 1).
— AvgVolty — средняя волатильность, для расчета которой Jurik использует достаточно сложный алгоритм:
AvgVolty = Среднее значение(vSum,AvgLen),
где:
— vSum — возрастающая сумма (Volty — Volty[10])/10;
— AvgLen — период среднего значения (Юрик использует 65).
Формула для определения волатильности цен такова:
Volty = max между Abs(del1) и Abs(del2), если Abs(del1) = Abs(del2), то Volty = 0,
где:
— del1 — расстояние между ценой и верхним диапазоном del1 = Цена — верхний диапазон (del1 = Price — UpperBand)
— del2 — расстояние между ценой и нижним диапазоном del2 = Цена — нижний диапазон (del2 = Price — LowerBand)
Полосы Юрика отличаются от любых известных ценовых диапазонов, таких как Боллинджер, Кельтнер, Дончиан, Фрактал и т.д.:
если del1 > 0, то верхняя полоса = Цена, в противном случае Верхняя полоса UpperBand = Price — Kv*del1
если del2 < 0, то нижняя полоса = Цена, в противном случае Нижняя полоса LowerBand = Price - Kv*del2,
где:
— Kv — коэффициент волатильности, Kv = bet ^ SquareRoot(pow2).

Реализация Jurik Moving Average для Amibroker:
function JMA( array, per )
{ s1=0;
for( i = 0; i < per; i++ )
s1 += (per-2*i-1)/2 * Ref(array,-i);
return MA(array,per) + (per/2+1)*S1 / ((per+1)*per);
}
k=Param("Period",15,1,100,1);
J=JMA(C,k);
Как использовать индикатор Jurik’s Moving Average
Тенденции-продолжение колеблющихся сделок: Это сделки, целью которых является улавливание отдельных импульсных волн в направлении основного тренда. Учитывая эффект минимальной задержки JMA, наклон индикатора можно использовать для определения того, когда после возврата к уровню поддержки/сопротивления возникает колебание импульса новостей.
Прорывные сделки: JMA можно использовать для подтверждения ценового прорыва в любом направлении. Если цена вырвется вверх, индикатор JMA должен быть наклонен вверх, причем цена выше него. Для прорыва вниз JMA должно быть наклонено вниз, а цена ниже него.
Пересечение двух скользящих JMA с коротким и длинным периодом, как обычные скользящие.
Динамический уровень по JMA. В связи с тем, что данный индикатор имеет свою адаптивность, скользящую можно использоать как динамический уровень для входа в сделку на отбой от скользящей по направлению тренда.
Фильтр тренда. Цена выше скользящей JMA - сигналы в лонг разрешены, наоборот, цена ниже JMA- разрешены сигналы в шорт.
На следующей картинке показано преимущество JMA, позволяющее избежать чрезмерной торговли при сохранении своевременности сигналов.




















