Iscriviti ora
Indicatori/probuilder · probacktest · proorder · proscreener

ExponentialAverage

ExponentialAverage in ProBuilder restituisce la media mobile esponenziale (EMA) di un prezzo o di una serie su N bar. Sintassi, formula, esempi e insidie.

Sintassi

probuilder
ExponentialAverage[N](price)

Parametri

NomeTipoPredefinitoDescrizione
Nintero20Periodo della media. Determina il fattore di livellamento 2 / (N + 1). Impostazioni comuni includono 9, 12, 21, 26, 50 e 200.
pricefonte di prezzochiusuraLa serie da lisciare. Accetta qualsiasi costante di prezzo o variabile numerica, compresi altri indicatori.

Formula

codice
EMA(t) = alpha * price(t) + (1 - alpha) * EMA(t-1)
where alpha = 2 / (N + 1)

Ogni nuovo valore combina il prezzo corrente con la EMA precedente. Il peso di ogni singola bar decade esponenzialmente con l'età, da cui deriva il nome. A differenza di una media semplice, ogni bar passata conserva una piccola influenza residua.

Come funziona

Una media mobile semplice tratta tutte N bar allo stesso modo, quindi un bar vecchio che esce dalla finestra può muovere la linea tanto quanto un nuovo prezzo che entra. La media esponenziale elimina questo artefatto pesando i bar geometricamente: la chiusura più recente conta di più, quella precedente un po' meno, e così via. L'effetto pratico è un ritardo minore a parità di periodo nominale.

La definizione ricorsiva implica che il calcolo dipende dai valori precedenti. ProRealTime™ inizializza la serie dalla prima bar caricata, quindi i primi valori dopo l'inizio dei dati sono meno significativi. Su finestre di dati brevi, o in ProOrder con un precaricamento di bar ridotto, le letture iniziali possono differire dalla stessa EMA tracciata su un grafico più lungo.

ExponentialAverage[N](price) produce lo stesso output di Average[N,1](price); la funzione dedicata rende semplicemente esplicita l'intenzione. Come tutte le medie di ProBuilder, accetta qualsiasi serie numerica, quindi è usata spesso per smussare oscillatori anziché il prezzo grezzo.

Esempi

Esempio 1, Lisciare l'RSI (Indicatore)

probuilder
// Smooth a 14-period RSI with a 10-period EMA
i1 = RSI[14]
i2 = ExponentialAverage[10](i1)
RETURN i1 as "RSI", i2 coloured(147,112,216) as "smoothed RSI"

Applica una media esponenziale a 10 periodi all'RSI, tracciando sia l'oscillatore grezzo sia la sua versione lisciata in viola. La EMA mantiene la linea lisciata più vicina alla serie grezza di quanto farebbe una SMA della stessa lunghezza.

Esempio 2, Strategia di incrocio di EMA (ProOrder)

probuilder
// Hold long while the 12-period EMA is above the 26-period EMA
fastEMA = ExponentialAverage[12](close)
slowEMA = ExponentialAverage[26](close)

IF fastEMA CROSSES OVER slowEMA THEN
  BUY 1 CONTRACT AT MARKET
ENDIF
IF fastEMA CROSSES UNDER slowEMA AND LongOnMarket THEN
  SELL AT MARKET
ENDIF

Usa i periodi 12 e 26 noti dal MACD. Il ritardo ridotto delle medie esponenziali attiva ingressi e uscite prima dell'equivalente incrocio di SMA, al costo di più whipsaw in condizioni laterali.

Esempio 3, Chiusura che incrocia al rialzo la EMA 50 (ProScreener)

probuilder
// List instruments whose close just crossed above the 50-period EMA
ema50 = ExponentialAverage[50](close)
SCREENER[close CROSSES OVER ema50](close AS "Close")

Restituisce solo gli strumenti in cui l'ultima chiusura è passata da sotto a sopra la media esponenziale a 50 periodi sulla bar corrente, una scansione di cambio di momentum.

Interpretazione

Prezzo rispetto alla EMA. Un prezzo che si mantiene sopra una EMA in rialzo indica un trend rialzista su quell'orizzonte; un prezzo sotto una EMA in calo, un trend ribassista. Per il suo ritardo ridotto, la EMA aderisce al prezzo più strettamente di una SMA, quindi è spesso preferita come linea di trend dinamica sui timeframe più brevi.

Incroci. Gli incroci della EMA rapida sopra quella lenta segnalano un cambio di momentum, il meccanismo alla base della linea MACD. Gli incroci arrivano prima rispetto alle medie semplici ma si invertono anche più spesso; il compromesso è fra reattività e segnali falsi.

Pendenza. Una EMA che si appiattisce segnala un momentum in esaurimento prima che si verifichi qualsiasi incrocio, e spesso è l'avviso più precoce.

Errori e insidie comuni

  • Tipo di parentesi errato. ExponentialAverage(10, close) genera un errore di sintassi. Il periodo va tra parentesi quadre, la serie tra parentesi tonde: ExponentialAverage[10](close).
  • Dipendenza dallo storico. La formula ricorsiva implica che le prime bars dei dati caricati producono una EMA non stabilizzata. In ProOrder, aumenta PRELOADBARS quando la logica è guidata da una EMA di periodo lungo; sui grafici, i valori vicini al bordo sinistro vanno ignorati.
  • Confrontare EMA e SMA di pari periodo. Un N-periodi EMA ha una memoria effettiva più breve di una N-periodi SMA. Tradurre una strategia da una all'altra mantenendo lo stesso periodo ne cambia il comportamento.
  • Aspettarsi un parametro di tipo. A differenza di Average, questa funzione non accetta un secondo argomento tra parentesi. ExponentialAverage[10,1](close) non è valido; il tipo è già fissato.
  • Average, media mobile generale; Average[N,1] è la stessa EMA.
  • WeightedAverage, ponderazione lineare, una via intermedia fra SMA ed EMA.
  • WilderAverage, variante EMA con alpha = 1 / N, usata all'interno di RSI e ATR.
  • ZLEMA, media mobile esponenziale a lag zero.
  • DEMA, media mobile esponenziale doppia, ulteriore riduzione del ritardo.
  • TEMA, media mobile esponenziale tripla.
  • HullAverage, alternativa a basso lag costruita da medie ponderate.
  • RSI, oscillatore comunemente lisciato con una EMA, come nell'Esempio 1.