Detrended Price Oscillator 指标:公式、参数与读法

区间震荡指标(Detrended Price Oscillator,DPO)通过比较一个过去的收盘价与截至当前K线的简单移动平均,去除价格中的趋势。它在独立面板中绘制,默认周期 20,比较点位于 11 根K线之前。

Senzoukria · 指标 · Updated September 2026


Detrended Price Oscillator 动量, 显示在图表下方的独立面板中.

Detrended Price Oscillator 测量的是什么

位移为 floor(N / 2) + 1 根K线——默认周期 20 时为 11。N 周期移动平均滞后于其自身窗口中心 (N − 1) / 2 根K线,所以把收盘价向前回退这么多根,就与该中心对齐,剩下的就是去除趋势后的周期成分。在索引 max(N − 1, shift) 之前不绘制任何值,因为均线和过去的收盘价都必须存在。这是非居中版本:数值画在当前K线的索引位置,不向右偏移,与 ATAS 和 TradingView 的非居中模式一致,但它所携带的数字描述的是 11 根之前的K线,而不是最新一根。这是去趋势的代价,是结构性的,不是一种可以调掉的滞后。

公式:代码中的实现

这不是别处常见的定义,而是所发布代码实际计算的内容,记录在实现旁边:

DPO — Detrended Price Oscillator. Retire la tendance en comparant un close PASSÉ à la moyenne (SMA SIMPLE) qui se termine MAINTENANT : shift = ⌊N/2⌋ + 1 DPO[i] = close[i − shift] − SMA_N(close)[i] LE DÉCALAGE, explicitement : la SMA_N centrée sur la fenêtre est « en retard » de (N−1)/2 barres sur son dernier point ; reculer le close de ⌊N/2⌋+1 le remet EN FACE du centre de cette moyenne. Le résultat est donc une mesure du cycle DÉBARRASSÉE de la tendance — mais il décrit la barre i − shift, PAS la barre courante. C'est la variante NON CENTRÉE : la valeur reste tracée à l'indice i (aucun décalage du tracé vers la droite), comme TradingView en mode non-centré et comme ATAS. Le DPO ne doit donc JAMAIS être lu comme un signal temps réel de la dernière barre : il est structurel- lement en retard de `shift` barres, c'est le prix du détrending. Défaut N=20 (shift = 11), la période cyclique usuelle. Warm-up → i ≥ max(N − 1, shift), donc N ≥ 2 imposé par le spec de param.

如何解读

  • 正值表示参考收盘价位于截至当前的均线上方,负值表示位于下方。零是去趋势后的中点。
  • 由于绘制的数值属于若干根之前的K线,绝不要把最后一个点当作对当前价格的描述——它是画在今天横坐标位置上的历史测量。
  • 相邻波峰和波谷之间的距离,才是这个指标的设计用途:它估计以K线数计的主导周期长度。
  • 如果波峰和波谷出现的间隔不规则,说明该品种在这个周期上没有稳定的周期,输出测量的是噪音。
  • 幅度以价格单位表示,所以会随波动率放大,不同品种之间无法比较。

参数与默认值

period(20)同时决定移动平均和由它推导出的位移——没有单独可调的偏移参数。较短的周期会缩短位移并分离出更快的周期,较长的周期过滤掉更多趋势,并把参考点推得更远。根据你想分离的周期长度来选择周期,而不是根据你想要的灵敏度。

Detrended Price Oscillator — 应用中可调的参数及其默认值。
参数类型默认值取值范围
Periodnumber202 – 500

它无法显示的内容

DPO 不是实时指标,也不能当作实时指标使用:按照构造,它的最新值描述的是若干根之前的K线。去除趋势之后,它对方向也一无所知——强趋势市场和横盘市场可能产生相同的震荡。它只基于价格,没有成交量、Delta 或流动性输入。而且只有当确实存在大致为所选长度的周期时,去趋势才有意义;如果不存在,输出只是一个不含信息的平滑残差。

浏览全部指标

其他语言版本

Frequently asked questions

DPO 在图表上是否向右偏移?
不是。这是非居中版本,每个数值都画在计算它的那根K线上,与 ATAS 和 TradingView 的非居中模式完全一样。位移存在于公式内部——默认周期下,被比较的收盘价取自 11 根之前——而不在绘图中。这条线与图表对齐,但数字说的是更早的那根K线。
改变 DPO 周期会改变什么?
同时改变两样东西:移动平均的长度,以及位移,位移等于 floor(period / 2) + 1。因此周期 20 是把 11 根之前的收盘价与截至当前的 20 周期均线比较。较长的周期去除更多趋势、回溯更远;较短的周期分离出更快的周期,去除的趋势更少。
DPO 可以用作实时信号吗?
它不是为此设计的。最新K线上的数值是对若干根之前K线的测量,所以新出现的零轴穿越描述的是已经发生过的事情。这个指标用于估计周期长度和定位过去的转折点,把它的最后一个点当作实时触发,是对公式的误用。

Keep reading