Word nu lid
Indicatoren/probuilder · probacktest · proorder · proscreener

DPO

DPO geeft in ProBuilder de Detrended Price Oscillator terug, die de langetermijntrend verwijdert om kortere koerscycli zichtbaar te maken. Syntaxis, formule, voorbeelden.

Syntaxis

probuilder
DPO[N](price)

Parameters

NaamTypeStandaardBeschrijving
Ngeheel getalgeenAantal periodes voor het voortschrijdend gemiddelde. De oscillator isoleert cycli korter dan ongeveer N bars; 20 en 21 zijn gangbare waarden.
priceprijsbronclosePrijsreeks waarop de oscillator wordt berekend, bijvoorbeeld close, open, high, low, of typicalprice.

Formule

code
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)

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)

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)

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

Het voortschrijdende gemiddelde bepaalt de trendrichting en de nullijnkruisingen van de DPO timen de cyclusswings daarbinnen.

Voorbeeld 3, Screenen op diepe cyclusbodems (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")

Geeft instrumenten terug waar de DPO net omhoog is gedraaid vanaf zijn laagste waarde in 20 bars, een mogelijke cyclusbodem.

Interpretatie

VoorwaardeStand
DPO boven nulDe koers staat boven zijn verschoven gemiddelde, de korte cyclus is in zijn opwaartse fase.
DPO onder nulDe koers staat onder het verschoven gemiddelde, de cyclus is in zijn neerwaartse fase.
DPO-piekMogelijk overbought-punt op korte termijn binnen de cyclus.
DPO-bodemMogelijk 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). Schrijven DPO(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.
  • 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.