介绍
乖离率(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;
-
首先,计算收盘价的N1周期移动平均(MA)值。移动平均是用来平滑股价数据的一种常见方法,它可以减少价格波动的影响,更好地反映价格趋势。
-
然后,算法计算收盘价与其N1周期移动平均值的差值(CLOSE - MA(CLOSE, N1))。
-
接下来,将这个差值除以N1周期移动平均值(MA(CLOSE, N1)),得到一个相对差值。
-
最后,将相对差值乘以100,得到最终的买卖气指标BIAS1值。这个值表示了收盘价相对于其N1周期移动平均的偏离程度,如果BIAS1为正,说明收盘价高于移动平均,可能存在超买情况;如果BIAS1为负,说明收盘价低于移动平均,可能存在超卖情况。
代码
rolling函数介绍
rolling
函数通常与其他函数(如 mean
、sum
、std
等)一起使用,以计算滚动统计量,例如滚动均值、滚动总和等。
以下是 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
: 窗口类型,例如None
、boxcar
、triang
等,默认为None
。on
: 在数据帧中执行滚动操作的列,默认为None
,表示对整个数据帧执行操作。axis
: 执行滚动操作的轴,默认为0
,表示按列执行操作。closed
: 确定窗口的哪一端是闭合的,默认为None
。
核心代码
# 计算BIAS
def bias(close, n):
ma = close.rolling(window=n).mean()
return (close - ma) / ma * 100
-
ma = close.rolling(window=n).mean()
: 这一行计算了收盘价数据的移动平均线。close.rolling(window=n)
创建了一个滑动窗口,窗口大小为n
,然后.mean()
计算了每个窗口的平均值。这样得到的ma
是一个与原始收盘价序列长度相同的序列,其中每个值都是相应窗口的平均值。 -
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)