一句话回答: 威廉指标 WR(Williams %R)衡量收盘价在近 N 日最高–最低区间中的相对位置,公式是 %R = (Hn − 收盘) / (Hn − Ln) × (−100),取值 −100~0。用 AlphaFeed 取复权日线,几行就能算出 WR,并用 −20/−80 判断超买/超卖——不依赖 TA-Lib。
WR 是经典的超买超卖摆动指标,和 KDJ 的 RSV 很像,但自己算常困惑:
数据用 AlphaFeed 复权日线,公式照经典口径写即可。
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key") # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()
df = af.klines.get("600519.SH", period="1d", count=120,
adjust="forward", to_dataframe=True)
df = df.sort_values("trade_date").reset_index(drop=True)def williams_r(df, n=14):
high_n = df["high"].rolling(n).max()
low_n = df["low"].rolling(n).min()
# 经典 %R,区间 -100~0:越接近 0 越超买,越接近 -100 越超卖
return (high_n - df["close"]) / (high_n - low_n) * -100
df["wr"] = williams_r(df, 14)
print(df[["trade_date", "close", "wr"]].tail(3).to_string(index=False))WR 参数与含义:
项 | 取值 / 公式 | 含义 |
|---|---|---|
| 回看周期 | 14(也用 6/10) |
Hn / Ln | N 日最高 / 最低 | 区间上下沿 |
%R 区间 | −100 ~ 0 | 负值指标 |
超买线 |
| 收盘接近区间顶部 |
超卖线 | < −80 | 收盘接近区间底部 |
def wr_state(symbol, count=120, n=14):
df = af.klines.get(symbol, period="1d", count=count,
adjust="forward", to_dataframe=True).sort_values("trade_date").reset_index(drop=True)
v = float(williams_r(df, n).iloc[-1])
zone = "超买(>-20)" if v > -20 else ("超卖(<-80)" if v < -80 else "中性")
return {"wr": round(v, 1), "zone": zone}
print(wr_state("600519.SH")) # 例如 {'wr': -87.2, 'zone': '超卖(<-80)'}
print(wr_state("000001.SZ")) # 例如 {'wr': -43.3, 'zone': '中性'}上例实测:茅台 WR≈−87.2 处于超卖区,平安银行 WR≈−43.3 属中性。
%R = RSV − 100(符号相反),WR 相当于未平滑、取负的随机指标,因此更灵敏、噪声也更大。adjust="forward",避免除权跳空污染最高/最低。Q:为什么我算出来是正值 0~100?
A:你少了负号。经典 Williams %R 用 (Hn−C)/(Hn−Ln)×(−100),区间是 −100~0;有些平台画成 0~100(把符号翻过来),只要自己口径一致即可,但要对照时注意方向。
Q:WR 和 KDJ 用哪个?
A:WR 是 KDJ 里 RSV 的变体,更灵敏、更早给信号但噪声更多;KDJ 经过两次平滑更稳。想要早信号用 WR,想要稳一点用 KDJ,或两者互相印证。
Q:WR 超卖能直接买吗?
A:不能。它在下跌趋势会长期超卖。需结合趋势过滤(均线、ADX)与止损,别单指标抄底。
Q:需要付费吗?
A:单只标的的日线在免费额度内即可试算;批量/全市场需 Starter 及以上,详见 AlphaFeed 定价页。
威廉指标 WR 的本质是"收盘价在近 N 日高低区间中的相对位置(取负)",与 KDJ 的 RSV 同源但更灵敏。写对的关键是负值区间和方向,数据要前复权。AlphaFeed 提供口径一致的复权日线,让你几行算出 WR——但记住它灵敏、会钝化,需配合趋势与止损,别单独当买卖信号。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。