威廉指标(Williams %R):量化超买超卖信号的经典工具
一、什么是 Williams %R?
Williams %R 指标,中文常称为“威廉指标”,由著名技术分析师 Larry Williams 在1973年提出,是一款专注于识别市场超买(Overbought)与超卖(Oversold)状态的动量型震荡指标。 它与 RSI 类似,都是动量震荡指标,但 %R 具有独特的计算逻辑与解读方式,能在交易策略中起到良好的短期拐点判断作用。
二、威廉指标的计算原理
Williams %R 的核心思想是:当前价格位于过去一段时间最高—最低区间的位置,通过这种相对位置的变化来衡量市场的强弱。
公式如下:
%R = (Highest High - Close) / (Highest High - Lowest Low) × (-100)
- Highest High:最近 N 个周期的最高价
- Lowest Low:最近 N 个周期的最低价
- Close:当前收盘价
其结果范围在 -100 到 0 之间,越靠近 -100 越“超卖”,越接近 0 越“超买”。
三、pandas_ta 中的 Williams %R 应用
在 Python 量化库 pandas_ta 中,williams()
或简称 wr()
函数可以方便地计算 Williams %R 指标,非常适合将其集成到自动化分析流程中。
示例代码
import pandas_ta as ta
df["WR"] = ta.willr(high=df["High"], low=df["Low"], close=df["Close"], length=14)
参数说明:
参数名 | 类型 | 描述 | 默认值 |
---|---|---|---|
high | Series | 最高价序列 | 必填 |
low | Series | 最低价序列 | 必填 |
close | Series | 收盘价序列 | 必填 |
length | int | 观察周期(默认14) | 14 |
talib | bool | 使用 TA-Lib 实现(可选) | True |
offset | int | 结果偏移周期 | 0 |
四、输出结果解释
调用 ta.willr()
将返回一列以 %R
为名的数值序列,例如:
WILLR_14
其中 14
表示使用的周期长度。值域范围为 [-100, 0],并随着价格接近区间高低点而波动。
五、如何解读 Williams %R 的交易信号?
✅ 超买超卖标准线:
- %R > -20 → 市场处于超买区域,价格上涨过快,警惕回调。
- %R < -80 → 市场处于超卖区域,价格下跌过猛,或有反弹。
✅ 信号组合策略:
- %R 从超卖区上穿 -80:可能是买入信号
- %R 从超买区下穿 -20:可能是卖出信号
- 搭配 RSI 使用:确认动量信号是否一致
- 搭配布林带使用:观察价格是否突破布林上/下轨增强判断
六、实战案例:结合 Williams %R 识别拐点机会
import yfinance as yf
import pandas_ta as ta
import matplotlib.pyplot as plt
# 获取苹果公司(AAPL)2023 年数据
df = yf.download("AAPL", start="2023-01-01", end="2023-12-31")
# 计算威廉指标
df["WR"] = ta.willr(df["High"], df["Low"], df["Close"], length=14)
# 可视化
plt.figure(figsize=(14,6))
plt.plot(df.index, df["WR"], label="威廉指标 %R", color="purple")
plt.axhline(-20, color="red", linestyle="--", label="超买区")
plt.axhline(-80, color="green", linestyle="--", label="超卖区")
plt.title("AAPL 股票的 Williams %R 指标走势")
plt.legend()
plt.grid(True)
plt.show()
在该图中,你可以清晰地观察到苹果股价多次在 %R < -80
后迎来反弹,以及在 %R > -20
后遇到短期顶部。
七、优势与局限分析
✅ 优势:
- 非常适合捕捉短期反转机会
- 计算简单,适配广泛
- 与 RSI 相似,但更敏感,适合短线交易
⚠️ 局限:
- 易在强趋势行情中产生钝化信号
- 不能单独使用,需要结合趋势、成交量或其他指标进行二次确认
八、结语与中文命名建议
Williams %R(威廉指标) 是一款历经数十年考验的震荡型动量指标,在程序化交易与策略开发中依旧有其独特地位。 它帮助交易者在短线波动中快速识别买卖极端区域,尤其适合用于捕捉超跌反弹或高位回落的初期信号。