In questa pagina
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.
| Parametro | Tipo | Predefinito | Intervallo |
|---|---|---|---|
| Period | number | 20 | 1 – 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.
Indicatori correlati
- SMA — Medie e volatilità
- EMA — Medie e volatilità
- WMA — Medie e volatilità
- Hull MA — Medie e volatilità
- ATR (Wilder) — Medie e volatilità
- Bollinger — Medie e volatilità
Questa pagina in altre lingue
Domande frequenti
- 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.