Индикатор DEMA: формула, настройки и чтение

DEMA (Double Exponential Moving Average, Патрик Маллой, 1994) — сглаженная линия цены, построенная из двух экспоненциальных средних так, чтобы компенсировать часть запаздывания одиночной EMA. Она рассчитывается как удвоенная EMA цены закрытия минус EMA, применённая к этой первой EMA, и рисуется на ценовом графике.

Senzoukria · Индикаторы · Updated September 2026


DEMA Скользящие средние и волатильность, на ценовом графике.

Что измеряет DEMA

Обе ступени используют EMA из каталога: она инициализируется простым средним первых N значений, а затем обновляется с коэффициентом сглаживания 2 / (N + 1). Вторая ступень считается только по той части первой, которая действительно определена, поэтому, пока первая EMA ещё прогревается, никакие значения не придумываются. При периоде N результат доступен начиная с бара с индексом 2 × (N − 1) — вдвое позже, чем у обычной EMA. Если верхняя ступень после своего начала вернёт пропуск, реализация не интерполирует и не возвращает ничего, вместо того чтобы рисовать линию по повреждённым входным данным.

Формула — так, как она реализована

Это не привычное определение из других источников, а то, что вычисляет поставляемый код, задокументированное рядом с реализацией:

EMA_N appliquée au SUFFIXE défini d'une série à préfixe null (sortie d'un étage EMA/lissage précédent — suffixe contigu par construction). Permet EMA(EMA(x)) sans inventer de valeur pendant le warm-up de l'étage amont. Défensif : un null APRÈS le début du suffixe (étage amont incohérent) → tout null, on ne trace rien de faux. */ function emaOverSuffix( values: ReadonlyArray<number | null>, period: number, ): Array<number | null> { const out: Array<number | null> = new Array(values.length).fill(null); let start = 0; while (start < values.length && values[start] === null) start++; if (start >= values.length) return out; const defined: number[] = []; for (let i = start; i < values.length; i++) { const v = values[i]; if (v === null) return out; // suffixe non contigu → dégradation totale defined.push(v); } const e = emaSeries(defined, period); for (let j = 0; j < e.length; j++) out[start + j] = e[j]; return out; } /** Moindres carrés y = a + b·t sur la fenêtre de n valeurs se terminant à l'indice i (t = 0 pour la plus ancienne, t = n−1 pour la courante). Sommes fermées : Σt = n(n−1)/2, Σt² = n(n−1)(2n−1)/6. n = 1 → b = 0. */ function linFit( values: readonly number[], i: number, n: number, ): { a: number; b: number } { const sumT = (n * (n - 1)) / 2; const sumT2 = (n * (n - 1) * (2 * n - 1)) / 6; let sumY = 0; let sumTY = 0; for (let t = 0; t < n; t++) { const y = values[i - n + 1 + t]; sumY += y; sumTY += t * y; } const denom = n * sumT2 - sumT * sumT; // > 0 dès n ≥ 2 const b = denom > 0 ? (n * sumTY - sumT * sumY) / denom : 0; const a = (sumY - b * sumT) / n; return { a, b }; } function periodOf( params: Record<string, unknown>, key: string, fallback: number, floor = 1, ): number { return Math.max(floor, Math.floor(numParam(params, key, fallback))); } // ── Défs ──────────────────────────────────────────────────────────────────── /** DEMA (Patrick Mulloy, 1994) : DEMA_N = 2·EMA_N(close) − EMA_N(EMA_N(close)) EMA du catalogue : graine = SMA des N premiers échantillons, α = 2/(N+1) (parité TradingView/ATAS). Le double étage compense le lag de l'EMA simple. Défini à partir de l'indice 2(N−1) — null avant. Défaut N=20.

Как его читать

  • Линия разворачивается раньше, чем EMA того же периода, и сильнее проскакивает при резком развороте цены.
  • Вычитание сглаженной копии сглаживания позволяет линии ненадолго выходить за пределы диапазона последних закрытий; это свойство конструкции, а не сбой.
  • Полезное событие здесь — смена наклона. Пересечение ценой линии, которая уже экстраполирует, даёт больше шума.
  • Поставьте рядом DEMA и EMA одного периода: разрыв между ними растёт с силой текущего движения и закрывается в спокойных фазах.
  • На коротких периодах двойная ступень усиливает самые свежие данные, и линия часто меняет направление.

Параметры и значения по умолчанию

Период по умолчанию — 20, как у EMA в каталоге, допустимый диапазон — от 1 до 500. Короткий период делает компенсацию запаздывания агрессивной, а линию — дёрганой; длинный возвращает устойчивость ценой той отзывчивости, ради которой конструкция и создавалась. Увеличение периода также сдвигает первый нарисованный бар вправо вдвое дальше, чем у одиночной EMA.

DEMA — параметры, доступные в приложении, со значениями по умолчанию.
ПараметрТипПо умолчаниюДиапазон
Periodnumber201 – 500

Чего он не показывает

Снижение запаздывания оплачивается проскоком: после резкого движения, которое остановилось, DEMA может ещё бар-другой указывать в прежнем направлении дальше закрытий, которые его вызвали. Её единственный вход — цены закрытия, поэтому информация о стороне bid и ask в исполненном объёме до неё не доходит. Кроме того, ей нужна длинная непрерывная история, прежде чем она что-то покажет; это важно на только что загруженном графике или когда глубина истории по контракту ограничена тем, что предоставляет ваш поставщик данных.

  • SMA Скользящие средние и волатильность
  • EMA Скользящие средние и волатильность
  • WMA Скользящие средние и волатильность
  • Hull MA Скользящие средние и волатильность
  • ATR (Wilder) Скользящие средние и волатильность
  • Bollinger Скользящие средние и волатильность

Все индикаторы

Эта страница на других языках

Frequently asked questions

Чем DEMA отличается от дважды сглаженной скользящей средней?
Двойное применение EMA делает линию медленнее, а не быстрее. DEMA берёт удвоенную первую EMA и вычитает вторую, так что двойное сглаживание служит поправочным членом, а не дополнительной фильтрацией. Результат реагирует раньше, чем одиночная EMA того же периода.
Почему в начале графика DEMA пустая?
Каждой экспоненциальной ступени нужен собственный прогрев, и вторая начинается только там, где определена первая. При периоде по умолчанию 20 первое значение приходится на бар с индексом 38, и до этой точки ничего не оценивается.
Может ли DEMA подняться выше максимального из последних закрытий?
Да, и это ожидаемо. Поскольку вторая EMA вычитается из удвоенной первой, результат — экстраполяция, а не взвешенное среднее окна, поэтому он не ограничен закрытиями, по которым рассчитан.

Keep reading