Python 实现股票指标计算——WR

WR - 威廉指标

1 公式

威廉指标的计算公式为:

其中:

𝐻𝑛​ 是过去n日内的最高价。

𝐿𝑛​ 是过去n日内的最低价。

𝐶 是当前收盘价。

2 数据准备

我们以科创50指数 000688 为例,指数开始日期为2019-12-31,数据格式如下:

3 计算过程

python 复制代码
def wr(df: pd.DataFrame, N=10) -> pd.DataFrame:
    """
    计算威廉指标(Williams %R)并处理可能的除零错误.

    参数:
    ----------
    df : pd.DataFrame
        包含至少 'high', 'low' 和 'close' 列的DataFrame,分别表示每个周期的最高价、最低价和收盘价。

    N : int, 可选
        用于计算滚动窗口的周期数,默认值为10。

    返回值:
    -------
    data : pd.DataFrame
        原始DataFrame加上'Hn'(周期内最高价)、'Ln'(周期内最低价)和'WR'(威廉指标)三列。
    """

    # 创建一个df的副本以避免修改原始数据
    data = df.copy()

    # 使用rolling方法计算N周期内的最高价
    data['Hn'] = data['high'].rolling(N).max()

    # 使用rolling方法计算N周期内的最低价
    data['Ln'] = data['low'].rolling(N).min()

    # 获取浮点数的最小正数值,以防分母为零
    epsilon = np.finfo(float).eps

    # 计算威廉指标(Williams %R)
    # 公式为:(Hn - close) / (Hn - Ln) * 100
    # 在分母中加入epsilon以避免除零错误
    data['WR'] = (data['Hn'] - data['close']) / (data['Hn'] - data['Ln'] + epsilon) * 100

    # 返回包含计算结果的新DataFrame
    return data

4 注意事项

WR计算结果与东方财富软件中的值一致,与雪球中的值有差异。

相关推荐
meilindehuzi_a42 分钟前
深入浅出数据结构:Python 字典(Dict)与集合(Set)的哈希表底层全链路追踪
数据结构·python·散列表
Lucas凉皮1 小时前
20243408 2025-2026-2 《Python程序设计》综合实践报告
python·实验报告
键盘上的猫头鹰1 小时前
【MySQL 教程(八)】索引、事务、用户管理、导入导出与分页查询
数据库·python·mysql
薛定谔的猫-菜鸟程序员1 小时前
2小时智能体开发一个智能体?我用CodeArts Agent 和 AtomCode 开发了一个适老化智能体。
人工智能·python·agent
bigfootyazi2 小时前
python爬虫-基本库-urllib库(常用速查)
开发语言·爬虫·python
瑶总迷弟3 小时前
使用 mis-tei 在昇腾310P上部署 bge-m3模型
pytorch·python·华为·语言模型·自然语言处理·cnn·unix
belong_my_offer3 小时前
认识到精通函数
开发语言·python
卡次卡次14 小时前
vibecoding起步注意点:插件、Skills、MCP、Hooks
服务器·数据库·python·oracle
我的xiaodoujiao4 小时前
API 接口自动化测试详细图文教程学习系列24--如何用Pytest去设计接口测试用例并执行
python·学习·测试工具·pytest
zhangfeng11335 小时前
ai 模型加密,强化版终极防盗方案 支持烧录的显卡列表
人工智能·pytorch·python