Bli medlem idag
Indikatorer/probuilder · probacktest · proorder · proscreener

DPO

DPO i ProBuilder returnerar Detrended Price Oscillator, som tar bort den långsiktiga trenden för att blottlägga kortare priscykler. Syntax, formel, exempel.

Syntax

probuilder
DPO[N](price)

Parametrar

NamnTypStandardBeskrivning
NheltalingenAntal perioder för det glidande medelvärdet. Oscillatorn isolerar cykler kortare än ungefär N barer; 20 och 21 är vanliga värden.
pricepriskällaclosePrisserie som oscillatorn beräknas på, till exempel close, open, high, low, eller typicalprice.

Formel

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

Den N-periods enkelt glidande medelvärde förskjuts bakåt med N/2 + 1 barer, och subtraheras sedan från aktuellt pris. Resultatet oscillerar runt noll.

Så fungerar det

Den långsiktiga trenden tenderar att dominera råa prisdiagram och gömmer de kortare rytmiska swingarna inom den. DPO hanterar detta genom att jämföra det aktuella priset med ett glidande medelvärde från ungefär en halv cykel tidigare. Eftersom medelvärdet är förskjutet bakåt i tiden representerar det var trenden "var", och skillnaden isolerar prisets avvikelse från den trendlinjen.

Utdatan är en obegränsad oscillator centrerad kring noll. Positiva värden betyder att priset ligger över det förskjutna medelvärdet, negativa värden betyder att det ligger under. Följden av toppar och bottnar i DPO approximerar längden på den dominerande kortsiktiga cykeln: att mäta barantalet mellan successiva DPO-bottnar ger en uppskattning av cykelperioden, information som används för att tima entries inom en större trend.

DPO är medvetet inte en trendindikator. Dess förskjutning tar bort just den komponent som trendföljare förlitar sig på, så den kombineras normalt med ett riktningsfilter som avgör vilken sida av marknaden som ska handlas, medan DPO timar swingarna.

Exempel

Exempel 1, Upptäcka ett 10-barers DPO-extremvärde (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)

Beräknar 21-periods DPO på det typiska priset och returnerar 1 när det aktuella värdet överstiger samtliga värden från de föregående 10 barerna, vilket markerar en kraftig uppåtavvikelse från trenden.

Exempel 2, Cykeltiming vid nollinjen med ett 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 glidande medelvärdet definierar trendriktningen och DPO:s korsningar av nollinjen timar cykelswingarna inom den.

Exempel 3, Screening för djupa cykelbottnar (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")

Returnerar instrument där DPO just vänt uppåt från sitt lägsta värde på 20 barer, en möjlig cykelbotten.

Tolkning

VillkorAvläsning
DPO över nollPriset ligger över sitt förskjutna medelvärde, den korta cykeln är i sin uppgångsfas.
DPO under nollPriset ligger under det förskjutna medelvärdet, cykeln är i sin nedgångsfas.
DPO-toppMöjlig kortsiktigt överköpt punkt inom cykeln.
DPO-bottenMöjlig kortsiktigt översåld punkt inom cykeln.

Avståndet mellan efterföljande bottnar (eller toppar) ger en uppskattning av den dominerande cykellängden i barer. Eftersom DPO är obegränsad och instrumentspecifik är dess absoluta nivå inte jämförbar mellan marknader; extremvärden bedöms i förhållande till oscillatorns egen senaste historik.

Vanliga fel och fallgropar

  • Att läsa DPO som en trendsignal. Indikatorn tar bort trenden genom sin konstruktion. En stigande DPO på en fallande marknad säger ingenting om den större riktningen, så kombinera den med ett separat trendmått.
  • Fel användning av parenteser. Perioden anges i hakparenteser och priskällan i parenteser, DPO[21](close). Att skriva DPO(21, close) ger ett syntaxfel.
  • Att jämföra nivåer mellan instrument. DPO-värden skalar med instrumentets pris och volatilitet. Ett värde på 5 kan vara extremt på en marknad och brus på en annan; normalisera eller jämför endast inom ett och samma instrument.
  • Att förvänta sig överensstämmelse med de senaste barerna. Det förskjutna medelvärdet innebär att oscillatorn beskriver avvikelsen från en trend mätt ett halvt fönster tillbaka. Nära skarpa trendskiften kan DPO ligga efter det visuella intrycket av diagrammet.
  • Cycle, dedikerad cykelindikator med liknande syften.
  • Average, det enkla glidande medelvärdet som används inuti DPO-beräkningen.
  • ROC, rate of change, en procentuell momentum-oscillator.
  • Momentum, rå prisförändring över N barer.
  • PriceOscillator, skillnaden mellan två glidande medelvärden i procent.
  • RSI, begränsad momentum-oscillator med fast intervall 0 till 100.
  • CCI, avvikelsebaserad oscillator med liknande användning för mean reversion.
  • TypicalPrice, vanlig indataserie för DPO, (high + low + close) / 3.