DPO
DPO en ProBuilder renvoie le Detrended Price Oscillator, qui supprime la tendance de long terme pour faire apparaître les cycles de prix plus courts. Syntaxe, formule, exemples.
Syntaxe
DPO[N](price)Paramètres
| Nom | Type | Par défaut | Description |
|---|---|---|---|
N | entier | aucun | Nombre de périodes de la moyenne mobile. L'oscillateur isole les cycles plus courts qu'environ N bars ; 20 et 21 sont des valeurs courantes. |
price | source de prix | close | Série de prix sur laquelle l'oscillateur est calculé, par exemple close, open, high, low, ou typicalprice. |
Formule
DPO = price - Average[N](price)[N/2 + 1]Le N-périodes, la moyenne mobile simple est décalée en arrière de N/2 + 1 bars, puis soustraite du prix actuel. Le résultat oscille autour de zéro.
Comment ça marche
La tendance de long terme tend à dominer les graphiques de prix bruts, masquant les swings rythmiques plus courts qu'elle contient. Le DPO répond à cela en comparant le prix actuel à une moyenne mobile d'environ un demi-cycle plus tôt. Comme la moyenne est décalée dans le passé, elle représente là où la tendance "était", et la différence isole l'écart du prix par rapport à cette ligne de tendance.
La sortie est un oscillateur non borné centré sur zéro. Les valeurs positives signifient que le prix se situe au-dessus de la moyenne décalée, les valeurs négatives qu'il se situe en dessous. La succession de sommets et de creux du DPO approxime la longueur du cycle dominant de court terme : mesurer la distance en bars entre des creux successifs du DPO donne une estimation de la période du cycle, information utilisée pour positionner les entrées au sein d'une tendance plus large.
Le DPO n'est délibérément pas un indicateur de tendance. Son décalage supprime précisément la composante sur laquelle s'appuient les suiveurs de tendance, il est donc normalement associé à un filtre directionnel qui décide de quel côté du marché trader, tandis que le DPO détermine le timing des swings.
Exemples
Exemple 1, Détecter un extrême du DPO sur 10 bars (Indicateur)
// 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)Calcule le DPO sur 21 périodes du prix typique et renvoie 1 chaque fois que la valeur actuelle dépasse toutes les valeurs des 10 bars précédents, signalant une poussée d'écart haussier par rapport à la tendance.
Exemple 2, Timing de cycle sur la ligne zéro avec un filtre de tendance (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
ENDIFLa moyenne mobile définit la direction de la tendance et les croisements de la ligne zéro du DPO donnent le timing des swings de cycle à l'intérieur de celle-ci.
Exemple 3, Screening de creux de cycle profonds (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")Renvoie les instruments dont le DPO vient de se retourner à la hausse depuis sa valeur la plus basse sur 20 bars, un creux de cycle candidat.
Interprétation
| Condition | Lecture |
|---|---|
| DPO au-dessus de zéro | Le prix est au-dessus de sa moyenne décalée, le cycle court est en phase de hausse. |
| DPO sous zéro | Le prix est sous la moyenne décalée, le cycle est en phase de baisse. |
| Sommet du DPO | Point de surachat de court terme candidat au sein du cycle. |
| Creux du DPO | Point de survente de court terme candidat au sein du cycle. |
La distance entre creux (ou sommets) consécutifs estime la longueur du cycle dominant en bars. Comme le DPO est non borné et propre à chaque instrument, son niveau absolu n'est pas comparable d'un marché à l'autre ; les extrêmes se jugent par rapport à l'historique récent de l'oscillateur lui-même.
Erreurs et pièges courants
- Lire le DPO comme un signal de tendance. L'indicateur supprime la tendance par construction. Un DPO en hausse dans un marché en baisse ne dit rien de la direction d'ensemble, associez-le donc à une mesure de tendance distincte.
- Mauvais usage des crochets. La période se place entre crochets et la source de prix entre parenthèses,
DPO[21](close). ÉcrireDPO(21, close)déclenche une erreur de syntaxe. - Comparer des niveaux entre instruments. Les valeurs du DPO varient avec le prix et la volatilité de l'instrument. Une valeur de 5 peut être extrême sur un marché et du bruit sur un autre ; normalisez ou ne comparez qu'au sein d'un même instrument.
- Attendre un alignement avec les bars les plus récents. La moyenne décalée signifie que l'oscillateur décrit l'écart par rapport à une tendance mesurée une demi-fenêtre plus tôt. À proximité de changements de tendance brusques, le DPO peut être en retard sur l'impression visuelle du graphique.
Instructions liées
Cycle, indicateur de cycle dédié avec des objectifs proches.Average, la moyenne mobile simple utilisée dans le calcul du DPO.ROC, taux de variation, un oscillateur de momentum en pourcentage.Momentum, variation brute du prix sur N bars.PriceOscillator, différence entre deux moyennes mobiles en pourcentage.RSI, oscillateur de momentum borné avec une plage fixe de 0 à 100.CCI, oscillateur basé sur l'écart avec un usage similaire en mean reversion.TypicalPrice, série d'entrée courante pour le DPO, (high + low + close) / 3.