Bli medlem i dag
Indikatorer/probuilder · probacktest · proorder · proscreener

DPO

DPO i ProBuilder returnerer Detrended Price Oscillator, som fjerner den langsiktige trenden for å avdekke kortere prissykluser. Syntaks, formel, eksempler.

Syntaks

probuilder
DPO[N](price)

Parametere

NavnTypeStandardBeskrivelse
NheltallingenAntall perioder for det glidende gjennomsnittet. Oscillatoren isolerer sykluser kortere enn omtrent N barer; 20 og 21 er vanlige verdier.
pricepriskildelukkPrisserien oscillatoren beregnes på, for eksempel close, open, high, low, eller typicalprice.

Formel

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

Den N-periodes enkelt glidende gjennomsnitt forskyves tilbake med N/2 + 1 barer, og trekkes så fra gjeldende pris. Resultatet svinger rundt null.

Slik fungerer det

Den langsiktige trenden har en tendens til å dominere rene prisdiagrammer og skjule de kortere rytmiske svingningene i dem. DPO løser dette ved å sammenligne den gjeldende prisen med et glidende gjennomsnitt fra omtrent en halv syklus tidligere. Fordi gjennomsnittet er forskjøvet bakover i tid, representerer det hvor trenden "var", og differansen isolerer prisens avvik fra den trendlinjen.

Utdataen er en ubegrenset oscillator sentrert på null. Positive verdier betyr at prisen ligger over det forskjøvede gjennomsnittet, negative verdier betyr at den ligger under. Rekkefølgen av topper og bunner i DPO tilnærmer lengden på den dominerende kortsiktige syklusen: å måle baravstanden mellom påfølgende DPO-bunner gir et anslag på syklusperioden, informasjon som brukes til å time innganger innenfor en større trend.

DPO er med hensikt ikke en trendindikator. Forskyvningen fjerner nettopp den komponenten trendfølgere baserer seg på, så den kombineres normalt med et retningsfilter som bestemmer hvilken side av markedet man skal handle, mens DPO timer svingningene.

Eksempler

Eksempel 1, Oppdage et 10-barers DPO-ekstrempunkt (Indikator)

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)

Beregner 21-periode DPO av typisk pris og returnerer 1 hver gang den gjeldende målingen overstiger alle målingene fra de 10 forrige barene, og markerer et utbrudd av positivt avvik fra trenden.

Eksempel 2, Syklustiming på nullinjen med et trendfilter (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

Det glidende gjennomsnittet definerer trendretningen, og DPOs kryssinger av nullinjen timer syklussvingningene innenfor den.

Eksempel 3, Screening for dype syklusbunner (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")

Returnerer instrumenter der DPO nettopp har snudd oppover fra sin laveste måling på 20 barer, en mulig syklusbunn.

Tolkning

BetingelseAvlesning
DPO over nullPrisen er over sitt forskjøvede gjennomsnitt, den korte syklusen er i oppgang.
DPO under nullPrisen er under det forskjøvede gjennomsnittet, syklusen er i nedgang.
DPO-toppMulig kortsiktig overkjøpt punkt i syklusen.
DPO-bunnMulig kortsiktig oversolgt punkt i syklusen.

Avstanden mellom påfølgende bunner (eller topper) anslår den dominerende syklusens lengde i barer. Fordi DPO er ubegrenset og instrumentspesifikk, er det absolutte nivået ikke sammenlignbart på tvers av markeder; ekstrempunkter vurderes relativt til oscillatorens egen nylige historikk.

Vanlige feil og fallgruver

  • Å lese DPO som et trendsignal. Indikatoren fjerner trend ved konstruksjon. En stigende DPO i et fallende marked sier ingenting om den overordnede retningen, så kombiner den med et eget trendmål.
  • Feil bruk av parenteser. Perioden angis i hakeparenteser og priskilden i runde parenteser, DPO[21](close). Å skrive DPO(21, close) gir en syntaksfeil.
  • Å sammenligne nivåer på tvers av instrumenter. DPO-verdier skalerer med instrumentets pris og volatilitet. En måling på 5 kan være ekstrem i ett marked og støy i et annet; normaliser, eller sammenlign bare innenfor ett instrument.
  • Å forvente samsvar med de siste barene. Det forskjøvede gjennomsnittet betyr at oscillatoren beskriver avvik fra en trend målt et halvt vindu tilbake. Nær brå trendskift kan DPO henge etter det visuelle inntrykket av diagrammet.
  • Cycle, dedikert syklusindikator med relaterte formål.
  • Average, det enkle glidende gjennomsnittet som brukes inne i DPO-beregningen.
  • ROC, endringsrate, en prosentbasert momentum-oscillator.
  • Momentum, rå prisendring over N barer.
  • PriceOscillator, differansen mellom to glidende gjennomsnitt i prosent.
  • RSI, avgrenset momentum-oscillator med fast område fra 0 til 100.
  • CCI, avviksbasert oscillator med liknende bruk for mean reversion.
  • TypicalPrice, vanlig inndataserie for DPO, (high + low + close) / 3.