DPO
DPO geeft in ProBuilder de Detrended Price Oscillator terug, die de langetermijntrend verwijdert om kortere koerscycli zichtbaar te maken. Syntaxis, formule, voorbeelden.
Syntaxis
DPO[N](price)Parameters
| Naam | Type | Standaard | Beschrijving |
|---|---|---|---|
N | geheel getal | geen | Aantal periodes voor het voortschrijdend gemiddelde. De oscillator isoleert cycli korter dan ongeveer N bars; 20 en 21 zijn gangbare waarden. |
price | prijsbron | close | Prijsreeks waarop de oscillator wordt berekend, bijvoorbeeld close, open, high, low, of typicalprice. |
Formule
DPO = price - Average[N](price)[N/2 + 1]De N-periods eenvoudig voortschrijdend gemiddelde wordt teruggeschoven met N/2 + 1 bars en vervolgens van de huidige prijs afgetrokken. Het resultaat oscilleert rond nul.
Hoe het werkt
De langetermijntrend domineert doorgaans ruwe koersgrafieken en verbergt de kortere ritmische swings daarbinnen. De DPO pakt dit aan door de huidige koers te vergelijken met een voortschrijdend gemiddelde van ongeveer een halve cyclus eerder. Omdat het gemiddelde in de tijd naar achteren is verschoven, geeft het weer waar de trend "was", en het verschil isoleert de afwijking van de koers ten opzichte van die trendlijn.
De uitvoer is een onbegrensde oscillator rond nul. Positieve waarden betekenen dat de koers boven het verschoven gemiddelde staat, negatieve waarden dat hij eronder staat. De reeks pieken en bodems in de DPO benadert de lengte van de dominante kortetermijncyclus: het meten van de afstand in bars tussen opeenvolgende DPO-bodems geeft een schatting van de cyclusperiode, informatie die wordt gebruikt om instappen binnen een grotere trend te timen.
De DPO is met opzet geen trendindicator. De verschuiving verwijdert juist de component waarop trendvolgers vertrouwen, dus hij wordt normaal gecombineerd met een richtingsfilter dat bepaalt aan welke kant van de markt wordt gehandeld, terwijl de DPO de swings timet.
Voorbeelden
Voorbeeld 1, Een DPO-extreem over 10 bars detecteren (Indicator)
// 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)Berekent de 21-periode DPO van de typical price en geeft 1 terug wanneer de huidige waarde elke waarde van de vorige 10 bars overtreft, wat een uitbarsting van opwaartse afwijking van de trend markeert.
Voorbeeld 2, Cyclustiming op de nullijn met een 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
ENDIFHet voortschrijdende gemiddelde bepaalt de trendrichting en de nullijnkruisingen van de DPO timen de cyclusswings daarbinnen.
Voorbeeld 3, Screenen op diepe cyclusbodems (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")Geeft instrumenten terug waar de DPO net omhoog is gedraaid vanaf zijn laagste waarde in 20 bars, een mogelijke cyclusbodem.
Interpretatie
| Voorwaarde | Stand |
|---|---|
| DPO boven nul | De koers staat boven zijn verschoven gemiddelde, de korte cyclus is in zijn opwaartse fase. |
| DPO onder nul | De koers staat onder het verschoven gemiddelde, de cyclus is in zijn neerwaartse fase. |
| DPO-piek | Mogelijk overbought-punt op korte termijn binnen de cyclus. |
| DPO-bodem | Mogelijk oversold-punt op korte termijn binnen de cyclus. |
De afstand tussen opeenvolgende bodems (of pieken) schat de dominante cycluslengte in bars. Omdat de DPO onbegrensd en instrumentspecifiek is, is het absolute niveau niet vergelijkbaar tussen markten; extremen worden beoordeeld ten opzichte van de eigen recente historie van de oscillator.
Veelvoorkomende fouten en valkuilen
- De DPO lezen als een trendsignaal. De indicator verwijdert de trend door zijn opzet. Een stijgende DPO in een dalende markt zegt niets over de grotere richting, combineer hem dus met een afzonderlijke trendmaatstaf.
- Verkeerd gebruik van haakjes. De periode komt tussen vierkante haken en de prijsbron tussen ronde haken,
DPO[21](close). SchrijvenDPO(21, close)geeft een syntaxisfout. - Niveaus tussen instrumenten vergelijken. DPO-waarden schalen mee met de koers en de volatiliteit van het instrument. Een waarde van 5 kan op de ene markt extreem zijn en op de andere ruis; normaliseer of vergelijk alleen binnen één instrument.
- Verwachten dat het aansluit op de laatste bars. Het verschoven gemiddelde betekent dat de oscillator de afwijking beschrijft van een trend die een half venster eerder is gemeten. Rond scherpe trendveranderingen kan de DPO achterlopen op de visuele indruk van de grafiek.
Gerelateerde instructies
Cycle, specifieke cyclusindicator met vergelijkbare doelen.Average, het simpele voortschrijdende gemiddelde dat in de DPO-berekening wordt gebruikt.ROC, rate of change, een momentum-oscillator in procenten.Momentum, ruwe prijsverandering over N bars.PriceOscillator, verschil tussen twee voortschrijdende gemiddelden in procent.RSI, begrensde momentum-oscillator met vast bereik van 0 tot 100.CCI, op afwijking gebaseerde oscillator met vergelijkbaar gebruik voor mean reversion.TypicalPrice, gebruikelijke invoerreeks voor de DPO, (high + low + close) / 3.