随机策略的计算方法
直接答案
随机策略(通常被称为“随机振荡器”方法)通过将最新价格定位在近期价格的滚动范围内来计算。常见的输出是一个通常以百分比表示的数值:%K 衡量当前价格在回溯周期内最低低点与最高高点之间的相对位置,而 %D 通常是通过对 %K 应用移动平均进行平滑处理后得到的值。
由于不同平台在平滑处理和价格选择上采用不同的具体约定,因此最可靠的验证方法是将公式与指标设置进行比对:包括回溯周期长度以及 %K 和 %D 的平滑方式。
机制与定义
1) 选择输入价格
大多数随机风格的公式需要选择一个用于“置于区间内”的价格。常见选择包括:
- 收盘价(最常见)
- 高/低组合(在简化描述中较少见)
为了使你的计算可复现,必须明确说明所使用的具体输入(例如:“我在分子中使用收盘价”)。
2) 定义滚动范围(回溯窗口)
选择一个回溯周期长度,通常称为 %K 长度或周期。在每个时间步(K线)上计算:
- 最低低点(LowestLow)= 最近 N 根K线中的最低低点
- 最高高点(HighestHigh)= 最近 N 根K线中的最高高点
如果 HighestHigh 等于 LowestLow,则该范围宽度为零。在这种情况下,纯公式无法定义振荡器值。实际实现通常会通过输出默认值(例如 0 或“不可用”)或跳过直到范围非零来处理此情况。
3) 计算 %K(区间内的位置)
标准随机风格的 %K 公式为:
%K = 100 × (Price − LowestLow) / (HighestHigh − LowestLow)
其中:
- Price 是当前K线的选定输入价格
- LowestLow 和 HighestHigh 来自滚动的 N 根K线窗口
当价格保持在滚动极值之间时,该公式通常产生一个介于 0 到 100 之间的数值。
4) 计算 %D(平滑后的 %K)
许多“随机策略”描述中包含第二条线 %D,它是通过对 %K 进行平滑处理得到的。典型形式为:
%D = %K 在 M 个周期上的移动平均
移动平均可以是简单移动平均(SMA)或其他平滑方法,具体取决于平台。为了复现相同的 %D,必须匹配平滑类型和平滑周期 M。
5) 可选的“减速”参数(实现细节)
某些版本在计算 %D 之前会对 %K 进行额外的平滑处理,通常称为“减速”或对原始 %K 的额外平均。这会改变响应速度,因此即使回溯周期 N 保持不变,曲线也会发生变化。
可复现的示例或证据
以下是一个使用标准结构的数值示例。假设你拥有每日 OHLC 数据,并定义:
- 回溯周期 N = 5 根K线
- 价格 = 收盘价
- 为简化起见,仅计算 %K(暂不考虑 %D)
在当前日,假设最近 5 天的数据为:
- 最低低点(LowestLow)= 1.1000
- 最高高点(HighestHigh)= 1.1200
- 当前收盘价(Price)= 1.1100
则:
- HighestHigh − LowestLow = 1.1200 − 1.1000 = 0.0200
- Price − LowestLow = 1.1100 − 1.1000 = 0.0100
%K = 100 × (0.0100 / 0.0200) = 50
在实践中验证:
- 使用你平台的确切 N 设置。
- 对同一时间K线,使用其对“高”和“低”的定义,从相同的 N 根K线窗口中计算 HighestHigh 和 LowestLow。
- 使用平台选定的价格输入应用 %K 公式。
- 如果平台显示 %D,则重复相同的平滑规则(SMA 或其他方法,以及 M 长度)。
如果你无法匹配该数值,几乎总是因为以下选择之一:价格输入、窗口长度、平滑类型,或平台如何处理零范围的边界情况。
局限性与风险(可能出现的问题)
-
对窗口长度的敏感性
较小的回溯周期 N 对新高和新低反应更快,而较大的 N 会使范围行为更平滑。即使基础价格相同,改变 N 也会改变 %K。 -
对噪声和微观结构的敏感性
由于该方法依赖于滚动最大值和最小值,它可能对短期价格波动做出剧烈反应。两个具有不同噪声特征的市场(或两组数据)可能产生非常不同的振荡器路径。 -
数据质量和定义不匹配
复现结果依赖于一致的 OHLC 定义和K线构建。例如,使用不同的时间戳、缺失K线,或调整后与未调整数据,都可能改变高点、低点,从而改变滚动范围。 -
零范围边界情况(除零错误)
如果在回溯窗口内 HighestHigh 等于 LowestLow,则公式的分母为零。不同实现方式在输出值或是否留空直到范围非零方面存在差异。 -
无预测意义的保证
即使计算正确,生成的振荡器数值本身并不能保证未来结果。历史关系不能确立未来表现,且绩效取决于许多外部因素,如执行、成本和具体的数据采样。
验证与后续问题
要独立验证你的“随机策略”计算:
- 记录平台的参数:%K 的回溯周期长度、%D 的平滑周期长度(及平滑类型),以及选定的价格输入。
- 使用滚动的 HighestHigh/LowestLow 和公式 %K = 100 × (Price − LowestLow) / (HighestHigh − LowestLow) 重新计算 %K。
- 如果显示 %D,则使用平台的平滑方法和周期重新计算。
如果你愿意,可以分享你在平台上看到的确切参数名称(例如 %K 和 %D 的周期长度,以及平滑方式是 SMA、EMA 还是其他方法)。然后可以将计算步骤精确对齐到这些设置。