Indicatore DEMA: formula, impostazioni e lettura

La DEMA (Double Exponential Moving Average, Patrick Mulloy, 1994) è una linea di prezzo smussata costruita con due medie esponenziali combinate in modo da annullare una parte del ritardo di una singola EMA. Si calcola come il doppio della EMA della chiusura meno la EMA applicata a quella prima EMA, e si disegna sul grafico dei prezzi.

Senzoukria · Indicatori · Updated September 2026


DEMA Medie e volatilità, sul grafico dei prezzi.

Che cosa misura DEMA

Entrambi gli stadi usano la EMA del catalogo: inizializzata con la media semplice dei primi N campioni, poi aggiornata con un fattore di smussamento di 2 / (N + 1). Il secondo stadio lavora solo sulla parte del primo effettivamente definita, quindi nessun valore viene inventato mentre la prima EMA è ancora in fase di avvio. Con un periodo N il risultato è quindi disponibile a partire dalla barra di indice 2 x (N - 1), il doppio dell'avvio di una EMA semplice. Se lo stadio a monte restituisse un buco dopo il proprio inizio, l'implementazione rifiuta di interpolare e non restituisce nulla, invece di disegnare una linea basata su un input difettoso.

La formula, così come è implementata

Non è la definizione consueta altrove: è ciò che calcola il codice distribuito, documentato accanto alla sua implementazione:

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.

Come leggerlo

  • Aspettati che la linea giri prima di una EMA dello stesso periodo, e che vada più in eccesso quando il prezzo inverte bruscamente.
  • Sottrarre una copia smussata dello smussamento permette alla linea di uscire brevemente dall'intervallo delle chiusure recenti: è una proprietà della costruzione, non un errore.
  • L'evento utile qui è il cambio di pendenza. L'incrocio del prezzo con una linea che già estrapola è quello più rumoroso.
  • Metti fianco a fianco DEMA ed EMA con lo stesso periodo: la distanza tra le due si allarga con la forza del movimento in corso e si chiude nelle fasi calme.
  • Con periodi brevi il doppio stadio amplifica i dati più recenti, e la linea cambia spesso direzione.

Parametri e valori predefiniti

Il periodo è 20 di default, lo stesso della EMA del catalogo, e va da 1 a 500. Un periodo breve rende aggressiva la compensazione del ritardo e la linea nervosa; uno lungo ridà stabilità a scapito della reattività per cui la costruzione è nata. Aumentare il periodo sposta anche la prima barra disegnata due volte più a destra rispetto a una EMA singola.

DEMA — parametri disponibili nell’applicazione, con i valori predefiniti.
ParametroTipoPredefinitoIntervallo
Periodnumber201 – 500

Ciò che non mostra

La riduzione del ritardo si paga con l'eccesso: dopo un movimento rapido che si ferma, la DEMA può continuare a puntare nella vecchia direzione per una o due barre oltre le chiusure che l'hanno prodotta. Il suo unico input sono le chiusure, quindi nulla del lato bid e ask del volume scambiato le arriva. Le serve inoltre uno storico lungo e senza interruzioni prima di produrre qualcosa, il che conta su un grafico appena caricato o quando la profondità di storico disponibile per quel contratto è limitata da ciò che fornisce il tuo provider di dati.

Vedi tutti gli indicatori

Questa pagina in altre lingue

Frequently asked questions

In cosa la DEMA è diversa da una media mobile smussata due volte?
Applicare due volte una EMA rende la linea più lenta, non più veloce. La DEMA prende il doppio della prima EMA e sottrae la seconda, quindi il doppio smussamento serve da termine correttivo e non da filtro aggiuntivo. Il risultato reagisce prima di una singola EMA dello stesso periodo.
Perché la DEMA è vuota all'inizio del mio grafico?
Ogni stadio esponenziale ha bisogno del proprio avvio, e il secondo parte solo dove il primo è definito. Con il periodo di default di 20 il primo valore disegnato cade sulla barra di indice 38, e prima di quel punto non viene stimato nulla.
La DEMA può superare la chiusura più alta recente?
Sì, ed è previsto. Poiché la seconda EMA viene sottratta dal doppio della prima, il risultato è un'estrapolazione e non una media ponderata della finestra, quindi non è limitato dalle chiusure da cui è calcolato.

Keep reading