威廉指数计算公式 (Williams %R)

全面解读威廉指标的计算方法、交易信号与实战技巧,助你精准把握市场极端点。

# 超买超卖 # 动量指标 # Larry Williams # 短线交易

📐 威廉指数 (%R) 标准公式

%R = (Hn - Ct) / (Hn - Ln) × (-100)
  • Hn:过去 n 个周期的最高价(通常 14 天)
  • Ln:过去 n 个周期的最低价
  • Ct:当前周期的收盘价
  • n:回溯周期(常用 14)

威廉指数取值范围 -100 至 0。数值高于 -20 为超买区,低于 -80 为超卖区。

威廉指数计算公式图表示例:超买超卖区域与价格走势

⬆ 图1:威廉%R 超买(-20) / 超卖(-80) 参考线

📝 威廉指数计算步骤(14日周期示例)

① 确定周期最高价 H14

统计最近14个交易日的最高价,取最大值。

② 确定周期最低价 L14

统计最近14个交易日的最低价,取最小值。

③ 获取当前收盘价 Ct

当日或当前K线收盘价格。

④ 代入公式计算

%R = (H14 - Ct) / (H14 - L14) × (-100)

⑤ 解读数值
  • -20 以上:超买,价格可能回调
  • -80 以下:超卖,价格可能反弹
  • -50 附近:中性,趋势不明
威廉指标与价格背离示意图,超卖区金叉信号

图2:威廉%R 底背离与超卖信号

💡 威廉指数实战应用要点

  • 🔹 超买/超卖反转:%R 上穿 -20 考虑卖出;下穿 -80 考虑买入。
  • 🔹 背离信号:价格新低而 %R 未新低 → 底背离(看涨);反之顶背离(看跌)。
  • 🔹 周期选择:14日通用,短线交易可用 9日或10日。
  • 🔹 配合趋势:在上升趋势中超卖信号更可靠;下降趋势中超买信号更有效。

❓ 威廉指数常见问题与解答

1. 威廉指数与随机指标(KD)有什么区别?

两者公式相似,但威廉指数 %R 使用负值刻度(-100~0),而随机指标 %K 在 0~100 之间。威廉指数更强调极端区域,反应更快。

2. 威廉指数计算公式中为什么乘以 -100?

乘以 -100 是为了将结果映射到 -100 到 0 的区间,符合传统视觉习惯:数值越高(接近0)表示超买,数值越低(接近-100)表示超卖。

3. 威廉指数最佳参数是多少?

Larry Williams 推荐 14 个周期。短线交易者常用 9 或 10;长线可用 20 或 28。需根据交易品种调整。

4. %R 进入超买区就一定下跌吗?

不一定。强趋势中可能持续超买或超卖。建议结合趋势线、支撑阻力或其他指标(如RSI)过滤虚假信号。

5. 威廉指数能否用于股票、外汇、加密货币?

可以。威廉指数是通用动量指标,适用于任何有最高价、最低价、收盘价的数据序列。注意不同市场的波动率差异。

6. 如何计算威廉指数?能手动举例吗?

假设14日内最高价 H=110,最低价 L=90,当前收盘价 C=100。则 %R = (110-100)/(110-90)×(-100) = 10/20×(-100) = -50。属于中性区域。

📊 威廉指数深度描述

威廉指数(Williams %R)由著名交易员拉里·威廉姆斯(Larry Williams)创立,属于动量震荡指标。它通过比较当前收盘价与过去一段时间价格范围的关系,衡量市场处于超买还是超卖状态。与RSI不同,威廉指数对价格极端点更敏感,常被用于捕捉反转点。

在交易系统中,威廉指数既可以单独使用,也可与移动平均线、布林带等组合。例如,当价格处于上升趋势且威廉指数从超卖区上穿-80时,是较可靠的买入信号。反之,下降趋势中从超买区下穿-20是卖出信号。

许多交易软件(如TradingView、MetaTrader)内置威廉指数,参数默认14。对于日内交易,可缩短至8-10;对于长期趋势,可延长至20-30。注意:任何指标都有滞后性,务必配合风险管理。

📄 威廉指数 (TradingView Pine Script v5) 示例代码
//@version=5
indicator(title="威廉指数 %R", shorttitle="%R", format=format.price, precision=2, timeframe="")
length = input.int(14, "周期")
highestHigh = ta.highest(high, length)
lowestLow = ta.lowest(low, length)
williamsR = (highestHigh - close) / (highestHigh - lowestLow) * -100
hline(-20, "超买", color=color.red, linestyle=hline.style_dashed)
hline(-80, "超卖", color=color.green, linestyle=hline.style_dashed)
plot(williamsR, title="%R", color=color.blue, linewidth=2)