随机振荡器是如何计算的?
直接答案
随机振荡器通过滚动窗口的价格极值进行计算。首先,你计算 %K,即最新收盘价在近期高低范围内的相对位置。然后,你计算 %D,即对 %K 进行移动平均平滑处理(通常使用较短或不同的平均设置)。该计算仅需历史价格数据(通常是最高价、最低价和收盘价)以及选定的回溯窗口和平滑周期参数。
机制与定义
其核心思想很简单:将当前收盘价在近期价格范围内的位置转换为一个有界的数值。
1) 选择输入价格序列
标准实现需要每个时间点至少包含以下数据:
- 最高价(High):该周期内的最高交易价格。
- 最低价(Low):该周期内的最低交易价格。
- 收盘价(Close):该周期的收盘价格。
为验证起见,应准确记录你的数据源提供的字段(例如,“收盘价”是否表示周期结束时的价格,以及高低值是否为该K线周期内的真实极值)。
2) 选择范围的回溯窗口
设 n 为回溯长度(通常称为 %K 周期)。在最近的 n 个周期内,计算:
- 最高高点(HHn) = 窗口内最高价的最大值。
- 最低低点(LLn) = 窗口内最低价的最小值。
3) 计算 %K(原始随机值)
设 C 为当前时间点的最新收盘价。原始随机值 %K 的计算公式为:
%K = 100 × (C − LLn) / (HHn − LLn)
解释:
- 如果 C 等于 LLn,则 %K = 0。
- 如果 C 等于 HHn,则 %K = 100。
- 如果 C 处于两者之间,则 %K 介于 0 和 100 之间(在典型数据条件下)。
4) 计算 %D(平滑后的随机值)
设 m 为 %D 的平滑周期(通常称为 %D 周期)。一种常见方法是对最近的 %K 值取移动平均:
%D = 移动平均(%K, m)
移动平均的类型很重要:
- 一些实现使用简单移动平均(SMA)。
- 其他实现使用指数移动平均(EMA) 或其他平均方式。
若要获得可独立验证的结果,必须同时匹配周期长度 m 和具体的移动平均方法。
5) 处理边界情况
在正确计算时,有两个实际的边界情况值得注意:
- 初始K线:在前 n−1 个周期中,可能没有足够的历史数据来计算 HHn 和 LLn。
- 零范围:如果 HHn − LLn = 0(例如,窗口内高低值完全相同),则分式无定义。不同实现对此处理方式不同(例如,输出缺失值或强制设定一个值)。验证时,需检查你的方法如何处理这种情况。
证据或示例(含明确假设)
以下是一个小规模的数值示例,展示公式的运作方式。假设条件如下:
- 回溯窗口 n = 5 个周期。
- 我们正在计算当前时间点的值。
- 计算出的 LLn 和 HHn 基于最近 5 个周期。
- 为简化,我们先仅计算原始 %K。
假设最近 5 个周期的数据为:
- LLn = 1.1000(窗口内最低的低价)
- HHn = 1.1200(窗口内最高的高价)
- 当前 收盘价 C = 1.1150
则:
- HHn − LLn = 1.1200 − 1.1000 = 0.0200
- C − LLn = 1.1150 − 1.1000 = 0.0150
因此:
- %K = 100 × 0.0150 / 0.0200 = 75
要计算 %D,接下来需构建最近 m 个周期的 %K 值,并应用选定的移动平均。为验证起见,应记录所选的 m 值,以及实现中使用的是 SMA、EMA 还是其他平均方式。否则,即使原始 %K 计算一致,%D 仍可能不同。
局限性与风险(侧重计算)
1) 对参数和数据频率的敏感性
回溯长度 n 和平滑设置 m 直接影响指标的响应速度。较短的窗口会使 %K 对近期价格变动反应更快,而较长的窗口通常会使范围背景更平滑。
此外,使用不同时间框架(例如 5 分钟K线与日线K线)会改变“最高价”、“最低价”和“收盘价”的含义,从而改变 HHn、LLn,进而影响 %K。
2) 对高低范围行为的依赖
随机振荡器并非直接衡量趋势,而是衡量收盘价在近期价格范围内的相对位置。如果市场在狭窄或震荡区间内运行,高低范围可能较小,导致 %K 在相邻K线之间显得波动剧烈。
3) 在恒定范围条件下的未定义或误导性数值
如果 HHn − LLn = 0,则 %K 在数学上无定义。即使某些实现以某种方式填充数值,结果也可能不具实际意义。
4) 平滑选择影响可比性
由于 %D 依赖于移动平均的类型和周期长度,两个平台即使在原始 %K 一致的情况下,也可能显示不同的 %D 曲线。为独立验证,应比较完整的设置,而不仅仅是指标名称。
验证与后续问题
要独立验证你自己的随机振荡器计算,请执行以下步骤:
- 固定参数 n(回溯周期)和 m(平滑周期)。
- 对每个时间点,准确计算 LLn 和 HHn(即 n 个周期内最低价的滚动最小值和最高价的滚动最大值)。
- 应用公式 %K = 100 × (C − LLn) / (HHn − LLn)。
- 使用你的工具所采用的精确移动平均方法和周期长度计算 %D。
若想进一步探索,一个有用的下一步是:
- 比较不同设置如何改变 %K 和 %D 的行为,或
- 检查不同移动平均定义如何影响平滑后的曲线:
- /forex-indicators/momentum-indicators/stochastic-oscillator/how-do-settings-change-stochastic-oscillator/
- /forex-indicators/momentum-indicators/stochastic-oscillator/what-can-signals-from-stochastic-oscillator-mean/