终极振荡器是如何计算的?
直接答案
终极振荡器(通常缩写为“UO”)通过将三个不同回看周期的买入压力比率的平滑平均值进行加权合并来计算。这三个平均值使用不同的回看长度(通常为7、14和28个周期),并以权重(通常为4、2和1)合并,最终生成一个介于0到100之间的数值。
机制与定义
1) 从“买入压力”和“真实波幅”开始
对于每个K线 i,定义:
- 买入压力 (BP) = 收盘价ᵢ − 最低价ᵢ
- 真实波幅 (TR) = max(
- 最高价ᵢ − 最低价ᵢ,
- |最高价ᵢ − 前一收盘价ᵢ₋₁|,
- |最低价ᵢ − 前一收盘价ᵢ₋₁| )
这两个组成部分用于形成一个买入压力比率:
- BP/TR
从概念上讲,BP衡量收盘价相对于该K线最低价的位置强度,而TR衡量该K线的波动范围大小,包括相对于前一收盘价的跳空。比率BP/TR表示相对于价格变动幅度的买入压力。
2) 在三个回看窗口中对比率进行平滑处理
选择三个回看长度:
- a(通常为7)
- b(通常为14)
- c(通常为28)
计算三个平滑和(在每个以K线 i 结束的窗口中):
- 平均值₁ = 最近 a 根K线的BP总和 / 最近 a 根K线的TR总和
- 平均值₂ = 最近 b 根K线的BP总和 / 最近 b 根K线的TR总和
- 平均值₃ = 最近 c 根K线的BP总和 / 最近 c 根K线的TR总和
这种“分子总和除以分母总和”的方法使UO依赖于每个窗口内的累计压力和累计波幅,而不仅仅是最新一根K线的BP/TR。
3) 使用权重合并三个平均值并缩放到0–100
然后通过加权组合计算终极振荡器:
- UO = 100 × (4 × 平均值₁ + 2 × 平均值₂ + 平均值₃) / (4 + 2 + 1)
由于在常见的加权方案中(4 + 2 + 1) = 7,因此可简化为:
- UO = 100 × (4 × 平均值₁ + 2 × 平均值₂ + 平均值₃) / 7
结果通常在0–100的范围内进行解释。
验证或可检查的示例(无实时数据)
为了验证您是否能复现该计算,请使用一个小型假设数据集。
假设:
- 使用标准窗口 a=2, b=3, c=4(缩短以使示例更紧凑)。
- 使用三个权重4、2和1(与通常方法相同)。
假设您有第1至第4根K线的最高价、最低价和收盘价,并使用前一收盘价计算TR(因此第1根K线的TR需要前一根K线0的数据;为简化起见,从第2根K线开始计算)。
对于每根K线 i(从 i=2 开始):
- BPᵢ = 收盘价ᵢ − 最低价ᵢ
- TRᵢ = max(最高价ᵢ − 最低价ᵢ, |最高价ᵢ − 前一收盘价ᵢ₋₁|, |最低价ᵢ − 前一收盘价ᵢ₋₁|)
- 然后在每个窗口中累加:
- sumBP(a) = 最近 a 根K线的BP总和
- sumTR(a) = 最近 a 根K线的TR总和
- 平均值₁ = sumBP(a) / sumTR(a)
- 对 b 和 c 重复上述步骤。
- 最后:
- UO = 100 × (4×平均值₁ + 2×平均值₂ + 平均值₃)/7
当您仔细重新计算时,应观察到以下情况:
- 如果收盘价反复接近最低价,BP会变小,从而降低平均值₁/₂/₃并拉低UO。
- 如果K线波动范围大(TR大)但收盘价未接近最高价,比率仍可能保持适中,防止UO因高波幅而飙升。
即使此处未显示确切数字,只要有最高价/最低价/收盘价(以及至少一个前一收盘价用于TR计算),计算步骤是完全确定的。
局限性与风险(主要失效模式)
1) 数据对齐至关重要
UO需要一致的K线定义。如果您的最高价/最低价/收盘价序列在一个时间框架上,而您在另一个时间框架上应用参数,则计算的BP和TR将不对应于相同的“K线”,导致结果与预期不符。
2) 必须有足够的K线数量
由于UO使用三个窗口(a, b, c),您至少需要 c 根K线(加上计算第一个TR所需的额外前一收盘价)才能计算出完整的值。在不同实现中,早期值可能缺失或不完整。
3) 除以零或接近零的TR
比率 平均值 = sum(BP)/sum(TR) 假设 sum(TR) 非零。在典型市场数据中,TR很少恰好为零,但在非常小或合成的数据集中,sum(TR)可能极小,这可能导致比率不稳定。
4) 不同软件可能使用略有不同的约定
一些平台使用常见默认值(a=7, b=14, c=28 和权重4/2/1),但可能实现:
- 对于前几根K线(Closeᵢ₋₁不可用)的不同处理方式,
- 不同的数值精度,
- 或对周期的不同解释(特别是非标准K线间隔)。 因此,独立验证应包括检查第一个TR值的计算方式以及早期UO值的处理方式。
5) 解释不等于独立信号
UO是一种从价格变动分量比率导出的动量型振荡器。与大多数振荡器一样,它可能对市场状态变化、波动率聚集和时间框架选择敏感。应将其视为一种测量输出,而非保证的决策规则。
验证与下一个问题
要独立验证该计算:
- 选择明确的参数(您选择的 a, b, c 和权重4,2,1)。
- 对每根K线,计算 BP = 收盘价 − 最低价。
- 对每根K线,计算 TR = max(最高价−最低价, |最高价−前一收盘价|, |最低价−前一收盘价|)。
- 使用 sum(BP)/sum(TR) 计算三个窗口比率。
- 使用 UO = 100 × (4×Avg₁ + 2×Avg₂ + Avg₃)/7 将它们合并为UO。
如果您愿意,也可以将您计算的UO与图表工具显示的结果进行比较,但请确保匹配时间框架、K线收盘价约定以及该工具使用的TR确切定义。
您可能还想检查UO如何与相关动量振荡器比较,以及更改设置(a, b, c)如何影响在较短与较长周期上的平滑度和响应性。