Python 实现 BIAS 指标计算:股票技术分析的利器系列(6)

Python 实现 BIAS 指标计算:股票技术分析的利器系列(6)


介绍

乖离率(BIAS),也称为乖离指标,是一种衡量股价与其移动平均线之间偏离程度的指标,用来判断股价的超买和超卖情况

先看看官方介绍:

BIAS(乖离率)
用法
1.本指标的乖离极限值随个股不同而不同,使用者可利用参考线设定,固定其乖离范围;
2.当股价的正乖离扩大到一定极限时,股价会产生向下拉回的作用力;
3.当股价的负乖离扩大到一定极限时,股价会产生向上拉升的作用力;
4.本指标可设参考线。

优点缺点
简单易懂滞后性
反映价格趋势单一性
指示超买超卖不适用于所有市场
需要配合其他指标

算法解释

BIAS1 :(CLOSE-MA(CLOSE,N1))/MA(CLOSE,N1)*100;
BIAS2 :(CLOSE-MA(CLOSE,N2))/MA(CLOSE,N2)*100;
BIAS3 :(CLOSE-MA(CLOSE,N3))/MA(CLOSE,N3)*100;
  1. 首先,计算收盘价的N1周期移动平均(MA)值。移动平均是用来平滑股价数据的一种常见方法,它可以减少价格波动的影响,更好地反映价格趋势。

  2. 然后,算法计算收盘价与其N1周期移动平均值的差值(CLOSE - MA(CLOSE, N1))。

  3. 接下来,将这个差值除以N1周期移动平均值(MA(CLOSE, N1)),得到一个相对差值。

  4. 最后,将相对差值乘以100,得到最终的买卖气指标BIAS1值。这个值表示了收盘价相对于其N1周期移动平均的偏离程度,如果BIAS1为正,说明收盘价高于移动平均,可能存在超买情况;如果BIAS1为负,说明收盘价低于移动平均,可能存在超卖情况。

代码

rolling函数介绍

rolling 函数通常与其他函数(如 meansumstd 等)一起使用,以计算滚动统计量,例如滚动均值、滚动总和等。

以下是 rolling 函数的基本语法:

DataFrame.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None)
  • window: 用于计算统计量的窗口大小。
  • min_periods: 每个窗口最少需要的非空观测值数量。
  • center: 确定窗口是否居中,默认为 False
  • win_type: 窗口类型,例如 Noneboxcartriang 等,默认为 None
  • on: 在数据帧中执行滚动操作的列,默认为 None,表示对整个数据帧执行操作。
  • axis: 执行滚动操作的轴,默认为 0,表示按列执行操作。
  • closed: 确定窗口的哪一端是闭合的,默认为 None

核心代码

# 计算BIAS
def bias(close, n):
    ma = close.rolling(window=n).mean()
    return (close - ma) / ma * 100
  1. ma = close.rolling(window=n).mean(): 这一行计算了收盘价数据的移动平均线。close.rolling(window=n) 创建了一个滑动窗口,窗口大小为 n,然后 .mean() 计算了每个窗口的平均值。这样得到的 ma 是一个与原始收盘价序列长度相同的序列,其中每个值都是相应窗口的平均值。

  2. return (close - ma) / ma * 100: 这一行计算了乖离率。首先,close - ma 得到了收盘价与移动平均线的差值,然后除以移动平均线 ma,得到了相对差值。最后乘以 100,将相对差值转换为百分比。这样得到的结果是一个乖离率序列,其中每个值表示相应时间点的乖离率。

完整代码

import pandas as pd

import a_get_data


def bias(close, n):
    ma = close.rolling(window=n).mean()
    return (close - ma) / ma * 100


def calculate_bias(data, n1, n2, n3):
    data['BIAS1'] = bias(data['CLOSE'], n1)
    data['BIAS2'] = bias(data['CLOSE'], n2)
    data['BIAS3'] = bias(data['CLOSE'], n3)
    return data


data = {
    'CLOSE': 填每日收盘的数据
}

df = pd.DataFrame(data)
n1, n2, n3 = 6, 12, 24 

result = calculate_bias(df, n1, n2, n3)
print(result)

结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盗理者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值