Python实现BIAS工具判断信号:股票技术分析的工具系列(4)
- 介绍
- 算法解释
- 代码
- rolling函数介绍
- 完整代码
- data代码
- BIAS.py
介绍
在股票技术分析中,BIAS(乖离率)是一种常用的技术指标,用于判断股票价格与其移动平均线之间的偏离程度,进而指导投资者进行交易决策。本文将介绍如何使用Python编程语言实现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;
优势:
优势 | 描述 |
---|---|
个性化设置乖离范围 | BIAS指标的乖离极限值随个股不同而不同,使用者可以根据具体情况进行参考线的设定,固定其乖离范围,使得指标更适合不同个股的特性。 |
预测股价走势 | 当股价的正乖离扩大到一定极限时,股价会产生向下拉回的作用力,而当股价的负乖离扩大到一定极限时,股价会产生向上拉升的作用力,有助于预测股价的走势。 |
可设参考线 | BIAS指标可设参考线,投资者可以根据自己的需求和策略,设定适当的参考线,以便更好地辅助决策。 |
劣势:
劣势 | 描述 |
---|---|
单一性 | BIAS指标相对较为单一,仅从价格的角度进行分析,可能无法全面反映市场的复杂情况,投资者需要结合其他指标和分析方法进行综合判断。 |
适用性限制 | BIAS指标的应用受限于个股的特性和行情状况,不同个股的乖离率极限值不同,可能需要投资者具备一定的经验和技术分析能力,才能准确把握指标的含义和使用方法。 |
缺乏明确的买卖信号 | BIAS指标并没有提供明确的买卖信号,而是提供了一种价差的概念,因此在实际操作中,投资者需要结合其他指标或技术分析方法来确认具体的买卖时机。 |
代码
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
。
完整代码
data代码
这里完整代码中的data部分,阔以通过下面资源文件下载,或者留下邮箱等发送。:
https://download.csdn.net/download/qq_36051316/88896567
BIAS.py
import pandas as pd
import stock_data
data = {
'DATE': stock_data.DATE,
'CLOSE': stock_data.CLOSE,
'HIGH': stock_data.HIGH,
'LOW': stock_data.LOW,
'OPEN': stock_data.OPEN,
'CHANGE': stock_data.CHANGE,
'VOL': stock_data.VOL,
'CAPITAL': stock_data.CAPITAL
}
df = pd.DataFrame(data)
def bias(close, n):
"""
计算乖离率
参数:
close: pandas.Series,收盘价数据
n: int,窗口大小
返回:
pandas.Series,乖离率数据
"""
ma = close.rolling(window=n).mean()
return (close - ma) / ma * 100
def calculate_bias(data, n1, n2, n3, positive_limit, negative_limit):
"""
计算乖离率指标
参数:
data: pandas.DataFrame,包含股票数据的DataFrame
n1: int,第一个窗口大小
n2: int,第二个窗口大小
n3: int,第三个窗口大小
positive_limit: float,正乖离的极限值
negative_limit: float,负乖离的极限值
返回:
pandas.DataFrame,添加了乖离率指标的DataFrame
"""
data['BIAS1'] = bias(data['CLOSE'], n1)
data['BIAS2'] = bias(data['CLOSE'], n2)
data['BIAS3'] = bias(data['CLOSE'], n3)
# 添加参考线
data['POSITIVE_LIMIT'] = positive_limit
data['NEGATIVE_LIMIT'] = negative_limit
return data
def generate_signals(data, positive_limit, negative_limit, day_index=-1):
"""
生成信号
参数:
data: pandas.DataFrame,包含乖离率指标的DataFrame
positive_limit: float,正乖离的极限值
negative_limit: float,负乖离的极限值
day_index: int,要检查的日期索引,默认为最后一天
返回:
str,表示信号的字符串,可能为"股价可能会向下拉回"、"股价可能会向上拉升"或"无信号"
"""
signals = ""
row = data.iloc[day_index]
if row['BIAS1'] > positive_limit and row['BIAS2'] > positive_limit and row['BIAS3'] > positive_limit:
signals = '股价可能会向下拉回'
elif row['BIAS1'] < negative_limit and row['BIAS2'] < negative_limit and row['BIAS3'] < negative_limit:
signals = '股价可能会向上拉升'
else:
signals = '无信号'
return signals
n1, n2, n3 = 6, 12, 24
positive_limit = 5 # 正乖离的极限值
negative_limit = -5 # 负乖离的极限值
calculate_bias(df, n1, n2, n3, positive_limit, negative_limit)
result = generate_signals(df, positive_limit, negative_limit)
print(result)
positive_limit = 5 # 正乖离的极限值
negative_limit = -5 # 负乖离的极限值
这个需要自己设置:-5 只是一个示例。在实际使用中,可以根据股票的历史数据和市场行情来设定适合的负乖离极限值。负乖离表示股价低于移动平均线的情况,当负乖离扩大到一定程度时,可能会有向上拉升的作用力