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
DPO[N](price)Parametrar
| Namn | Typ | Standard | Beskrivning |
|---|---|---|---|
N | heltal | ingen | Antal perioder för det glidande medelvärdet. Oscillatorn isolerar cykler kortare än ungefär N barer; 20 och 21 är vanliga värden. |
price | priskälla | close | Prisserie som oscillatorn beräknas på, till exempel close, open, high, low, eller typicalprice. |
Formel
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)
// 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)
// 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
ENDIFDet glidande medelvärdet definierar trendriktningen och DPO:s korsningar av nollinjen timar cykelswingarna inom den.
Exempel 3, Screening för djupa cykelbottnar (ProScreener)
// 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
| Villkor | Avläsning |
|---|---|
| DPO över noll | Priset ligger över sitt förskjutna medelvärde, den korta cykeln är i sin uppgångsfas. |
| DPO under noll | Priset ligger under det förskjutna medelvärdet, cykeln är i sin nedgångsfas. |
| DPO-topp | Möjlig kortsiktigt överköpt punkt inom cykeln. |
| DPO-botten | Mö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 skrivaDPO(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.
Relaterade instruktioner
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.