Iscriviti ora
Indicatori/probuilder · probacktest · proorder · proscreener

DPO

DPO in ProBuilder restituisce il Detrended Price Oscillator, che rimuove il trend di lungo termine per mettere in evidenza i cicli di prezzo più brevi. Sintassi, formula, esempi.

Sintassi

probuilder
DPO[N](price)

Parametri

NomeTipoPredefinitoDescrizione
NinteronessunoNumero di periodi per la media mobile. L'oscillatore isola i cicli più brevi di circa N bar; 20 e 21 sono valori comuni.
pricefonte di prezzochiusuraSerie di prezzo su cui è calcolato l'oscillatore, ad esempio close, open, high, low, o typicalprice.

Formula

codice
DPO = price - Average[N](price)[N/2 + 1]

Il N-periodi, la media mobile semplice è spostata indietro di N/2 + 1 bar, poi sottratta dal prezzo corrente. Il risultato oscilla attorno allo zero.

Come funziona

Il trend di lungo termine tende a dominare i grafici di prezzo grezzi, nascondendo gli swing ritmici più brevi al suo interno. Il DPO affronta questo problema confrontando il prezzo corrente con una media mobile di circa mezzo ciclo prima. Poiché la media è spostata indietro nel tempo, rappresenta dove il trend "era", e la differenza isola la deviazione del prezzo da quella linea di trend.

L'output è un oscillatore illimitato centrato sullo zero. I valori positivi significano che il prezzo si trova sopra la media spostata, i valori negativi che si trova sotto. La sequenza di massimi e minimi del DPO approssima la lunghezza del ciclo dominante di breve termine: misurare la distanza in bar tra minimi successivi del DPO fornisce una stima del periodo del ciclo, informazione usata per cronometrare gli ingressi all'interno di un trend più ampio.

Il DPO non è deliberatamente un indicatore di trend. Il suo spostamento rimuove proprio la componente su cui si basano i trend follower, quindi normalmente viene abbinato a un filtro direzionale che decide su quale lato del mercato operare, mentre il DPO cronometra gli swing.

Esempi

Esempio 1, Rilevare un estremo del DPO a 10 bar (Indicatore)

probuilder
// 21-period DPO on the typical price
myDPO = DPO[21](typicalprice)

// Find the highest DPO value of the previous 10 bars
value = 0
FOR i = 1 TO 10 DO
  if(myDPO[i] > value) THEN
    value = myDPO[i]
  ENDIF
NEXT

// Flag when the current DPO exceeds that maximum
if(myDPO > value) THEN
  extremebullish = 1
ELSE
  extremebullish = 0
ENDIF

RETURN extremebullish COLOURED(124,252,0)

Calcola il DPO a 21 periodi del prezzo tipico e restituisce 1 ogni volta che il valore corrente supera ogni valore delle 10 bar precedenti, segnalando un'impennata di deviazione rialzista dal trend.

Esempio 2, Timing del ciclo sulla linea dello zero con un filtro di trend (ProBacktest)

probuilder
// Trade DPO upswings only in the direction of the 100-bar trend
trend = Average[100](close)
osc   = DPO[20](close)

IF NOT LongOnMarket AND close > trend AND osc CROSSES OVER 0 THEN
  BUY 1 CONTRACT AT MARKET
ENDIF

IF LongOnMarket AND osc CROSSES UNDER 0 THEN
  SELL AT MARKET
ENDIF

La media mobile definisce la direzione del trend e gli attraversamenti della linea dello zero del DPO cronometrano gli swing di ciclo al suo interno.

Esempio 3, Screening di minimi di ciclo profondi (ProScreener)

probuilder
// Instruments whose DPO turned up from a 20-bar low
osc = DPO[21](close)
trough = osc[1] <= Lowest[20](osc)[1] AND osc > osc[1]
SCREENER[trough](osc AS "DPO")

Restituisce gli strumenti in cui il DPO ha appena girato al rialzo dal suo valore più basso in 20 bar, un possibile minimo di ciclo.

Interpretazione

CondizioneLettura
DPO sopra lo zeroIl prezzo è sopra la sua media spostata, il ciclo breve è in fase di salita.
DPO sotto lo zeroIl prezzo è sotto la media spostata, il ciclo è in fase di discesa.
Picco del DPOPossibile punto di ipercomprato di breve termine all'interno del ciclo.
Minimo del DPOPossibile punto di ipervenduto di breve termine all'interno del ciclo.

La distanza tra minimi (o massimi) consecutivi stima la lunghezza del ciclo dominante in bar. Poiché il DPO è illimitato e specifico dello strumento, il suo livello assoluto non è confrontabile tra mercati diversi; gli estremi si valutano in relazione allo storico recente dell'oscillatore stesso.

Errori e insidie comuni

  • Leggere il DPO come un segnale di trend. L'indicatore rimuove il trend per costruzione. Un DPO in salita in un mercato in discesa non dice nulla sulla direzione più ampia, quindi abbinalo a una misura di trend separata.
  • Uso errato delle parentesi. Il periodo va tra parentesi quadre e la fonte di prezzo tra parentesi tonde, DPO[21](close). Scrivere DPO(21, close) genera un errore di sintassi.
  • Confrontare i livelli tra strumenti diversi. I valori del DPO scalano con il prezzo e la volatilità dello strumento. Un valore di 5 può essere estremo su un mercato e rumore su un altro; normalizza oppure confronta solo all'interno di uno stesso strumento.
  • Aspettarsi un allineamento con le bar più recenti. La media spostata fa sì che l'oscillatore descriva la deviazione da un trend misurato mezza finestra prima. In prossimità di bruschi cambi di trend il DPO può essere in ritardo rispetto all'impressione visiva del grafico.
  • Cycle, indicatore di ciclo dedicato con obiettivi analoghi.
  • Average, la media mobile semplice usata all'interno del calcolo del DPO.
  • ROC, rate of change, un oscillatore di momentum percentuale.
  • Momentum, variazione di prezzo grezza su N bar.
  • PriceOscillator, differenza tra due medie mobili in percentuale.
  • RSI, oscillatore di momentum limitato con intervallo fisso da 0 a 100.
  • CCI, oscillatore basato sulla deviazione con un uso simile in mean reversion.
  • TypicalPrice, serie di input comune per il DPO, (high + low + close) / 3.