abupy.IndicatorBu package

Submodules

abupy.IndicatorBu.ABuND module

abupy.IndicatorBu.ABuNDAtr module

ATR

ATR又称 Average true range平均真实波动范围,简称ATR指标,是由J.Welles Wilder 发明的,ATR指标主要是用来衡量市场波动的强烈度, 即为了显示市场变化率的指标。

计算方法: 1. TR=∣最高价-最低价∣,∣最高价-昨收∣,∣昨收-最低价∣中的最大值 2. 真实波幅(ATR)= MA(TR,N)(TR的N日简单移动平均) 3. 常用参数N设置为14日或者21日

abupy.IndicatorBu.ABuNDAtr.atr14(high, low, close)[源代码]

通过high, low, close计算atr14序列值 :param high: 最高价格序列,pd.Series或者np.array :param low: 最低价格序列,pd.Series或者np.array :param close: 收盘价格序列,pd.Series或者np.array :return: atr值序列,np.array对象

abupy.IndicatorBu.ABuNDAtr.atr14_max(high, low, close)[源代码]

确定常数阀值时使用,通过high, low, close计算atr14序列值,返回计算结果atr14序列中的最大值 :param high: 最高价格序列,pd.Series或者np.array :param low: 最低价格序列,pd.Series或者np.array :param close: 收盘价格序列,pd.Series或者np.array :return: atr值序列,atr14序列中的最大值,float

abupy.IndicatorBu.ABuNDAtr.atr14_min(high, low, close)[源代码]

确定常数阀值时使用,通过high, low, close计算atr14序列值,返回计算结果atr14序列中的最小值 :param high: 最高价格序列,pd.Series或者np.array :param low: 最低价格序列,pd.Series或者np.array :param close: 收盘价格序列,pd.Series或者np.array :return: atr值序列,atr14序列中的最小值,float

abupy.IndicatorBu.ABuNDAtr.atr21(high, low, close)[源代码]

通过high, low, close计算atr21序列值 :param high: 最高价格序列,pd.Series或者np.array :param low: 最低价格序列,pd.Series或者np.array :param close: 收盘价格序列,pd.Series或者np.array :return: atr值序列,np.array对象

abupy.IndicatorBu.ABuNDAtr.atr21_max(high, low, close)[源代码]

确定常数阀值时使用,通过high, low, close计算atr21序列值,返回计算结果atr21序列中的最大值 :param high: 最高价格序列,pd.Series或者np.array :param low: 最低价格序列,pd.Series或者np.array :param close: 收盘价格序列,pd.Series或者np.array :return: atr值序列,atr21序列中的最大值,float

abupy.IndicatorBu.ABuNDAtr.atr21_min(high, low, close)[源代码]

确定常数阀值时使用,通过high, low, close计算atr21序列值,返回计算结果atr21序列中的最小值 :param high: 最高价格序列,pd.Series或者np.array :param low: 最低价格序列,pd.Series或者np.array :param close: 收盘价格序列,pd.Series或者np.array :return: atr值序列,atr21序列中的最小值,float

abupy.IndicatorBu.ABuNDAtr.calc_atr(high, low, close, time_period=14)

通过atr公式手动计算atr :param high: 最高价格序列,pd.Series或者np.array :param low: 最低价格序列,pd.Series或者np.array :param close: 收盘价格序列,pd.Series或者np.array :param time_period: atr的N值默认值14,int :return: atr值序列,np.array对象

abupy.IndicatorBu.ABuNDAtr.plot_atr(high, low, close, kl_index, with_points=None, with_points_ext=None, time_period=14)[源代码]

分别在上下两个子画布上绘制收盘价格,以及对应的atr曲线,如果有with_points点位标注, 则只画在一个画布上,且将两个曲线进行缩放到一个数值级别 :param high: 最高价格序列,pd.Series或者np.array :param low: 最低价格序列,pd.Series或者np.array :param close: 收盘价格序列,pd.Series或者np.array :param kl_index: pd.Index时间序列 :param with_points: 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’])) :param with_points_ext: 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’])) :param time_period: atr的N值默认值14,int

abupy.IndicatorBu.ABuNDAtr.plot_atr_from_klpd(kl_pd, with_points=None, with_points_ext=None, **kwargs)[源代码]

封装plot_atr,绘制收盘价格,atr曲线 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param with_points: 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’])) :param with_points_ext: 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’])) :param kwargs: 绘制技术指标需要的其它关键字参数,time_period, 最终透传给plot_atr

abupy.IndicatorBu.ABuNDAtr.plot_atr_from_order(order, date_ext=120, **kwargs)[源代码]

封装ABuNDBase中的plot_from_order与模块中绘制技术指标的函数,完成技术指标可视化及标注买入卖出点位 :param order: AbuOrder对象转换的pd.DataFrame对象or pd.Series对象 :param date_ext: int对象 eg. 如交易在2015-06-01执行,如date_ext=120,择start向前推120天,end向后推120天 :param kwargs: 绘制技术指标需要的其它关键字参数,time_period, 最终透传给plot_atr

abupy.IndicatorBu.ABuNDBase module

技术指标工具基础模块

class abupy.IndicatorBu.ABuNDBase.ECalcType[源代码]

Bases: enum.Enum

技术指标技术方式类

E_FROM_PD = 1
E_FROM_TA = 0

使用pandas等库实现技术指标计算

abupy.IndicatorBu.ABuNDBase.plot_from_order(plot_nd_func, order, date_ext, **kwargs)[源代码]

封装在技术指标上绘制交易order信号通用流程 :param plot_nd_func: 绘制技术指标的具体实现函数,必须callable :param order: AbuOrder对象转换的pd.DataFrame对象or pd.Series对象 :param date_ext: int对象 eg. 如交易在2015-06-01执行,如date_ext=120,择start向前推120天,end向后推120天 :param kwargs: plot_nd_func需要的其它关键字参数,直接透传给plot_nd_func

abupy.IndicatorBu.ABuNDBoll module

股价的标准差及其信赖区间,从而确定股价的波动范围及未来走势,利用波带显示股价的安全高低价位,因而也被称为布林带。 其上下限范围不固定,随股价的滚动而变化。布林指标和麦克指标MIKE一样同属路径指标,股价波动在上限和下限的区间之内, 这条带状区的宽窄,随着股价波动幅度的大小而变化,股价涨跌幅度加大时,带状区变宽,涨跌幅度狭小盘整时,带状区则变窄

计算公式 中轨线=N日的移动平均线 上轨线=中轨线+nb_dev * N日的移动标准差 下轨线=中轨线-nb_dev * N日的移动标准差 (nb_dev为参数,可根据股票的特性来做相应的调整,一般默为2)

abupy.IndicatorBu.ABuNDBoll.calc_boll(prices, time_period=20, nb_dev=2)

通过boll公式手动计算boll :param prices: 收盘价格序列,pd.Series或者np.array :param time_period: boll的N值默认值20,int :param nb_dev: boll的nb_dev值默认值2,int :return: tuple(upper, middle, lower)

abupy.IndicatorBu.ABuNDBoll.plot_boll(prices, kl_index, with_points=None, with_points_ext=None, time_period=20, nb_dev=2)[源代码]

绘制收盘价格,以及对应的boll曲线,如果有with_points点位标注,使用竖线标注

参数:
  • prices – 收盘价格序列,pd.Series或者np.array
  • kl_index – pd.Index时间序列
  • with_points – 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’]))
  • with_points_ext – 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’]))
  • time_period – 计算boll使用的n日参数,默认20
  • nb_dev – 计算boll使用的nb_dev参数,默认2
返回:

abupy.IndicatorBu.ABuNDBoll.plot_boll_from_klpd(kl_pd, with_points=None, with_points_ext=None, **kwargs)[源代码]

封装plot_boll,绘制收盘价格,boll(upper, middle, lower)曲线 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param with_points: 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’])) :param with_points_ext: 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’])) :param kwargs: 绘制技术指标需要的其它关键字参数,ime_period, nb_dev, 最终透传给plot_boll

abupy.IndicatorBu.ABuNDBoll.plot_boll_from_order(order, date_ext=120, **kwargs)[源代码]

封装ABuNDBase中的plot_from_order与模块中绘制技术指标的函数,完成技术指标可视化及标注买入卖出点位 :param order: AbuOrder对象转换的pd.DataFrame对象or pd.Series对象 :param date_ext: int对象 eg. 如交易在2015-06-01执行,如date_ext=120,择start向前推120天,end向后推120天 :param kwargs: 绘制技术指标需要的其它关键字参数,ime_period, nb_dev, 最终透传给plot_boll

abupy.IndicatorBu.ABuNDMa module

移动平均线,Moving Average,简称MA,原本的意思是移动平均,由于我们将其制作成线形,所以一般称之为移动平均线,简称均线。 它是将某一段时间的收盘价之和除以该周期。 比如日线MA5指5天内的收盘价除以5 。 移动平均线是由著名的美国投资专家Joseph E.Granville(葛兰碧,又译为格兰威尔)于20世纪中期提出来的。 均线理论是当今应用最普遍的技术指标之一,它帮助交易者确认现有趋势、判断将出现的趋势、发现过度延生即将反转的趋势

class abupy.IndicatorBu.ABuNDMa.EMACalcType[源代码]

Bases: enum.Enum

计算移动移动平均使用的方法

E_MA_EMA = 1
E_MA_MA = 0

加权移动平均线

abupy.IndicatorBu.ABuNDMa.calc_ma(prices, time_period=10, from_calc=<EMACalcType.E_MA_MA: 0>)

通过pandas计算ma或者ema :param prices: 收盘价格序列,pd.Series或者np.array :param time_period: 移动平均的N值,int :param from_calc: EMACalcType enum对象,移动移动平均使用的方法

abupy.IndicatorBu.ABuNDMa.calc_ma_from_prices(prices, time_period=10, min_periods=None, from_calc=<EMACalcType.E_MA_MA: 0>)[源代码]

通过pandas计算ma或者ema, 添加min_periods参数 :param prices: 收盘价格序列,pd.Series或者np.array :param time_period: 移动平均的N值,int :param min_periods: int,默认None则使用time_period :param from_calc: EMACalcType enum对象,移动移动平均使用的方法

abupy.IndicatorBu.ABuNDMa.plot_ma(prices, kl_index, time_period, from_calc=<EMACalcType.E_MA_MA: 0>, with_points=None, with_points_ext=None, with_price=True)[源代码]

一个画布上,绘制价格曲线以及多条移动平均线,如果有with_points点位标注,使用竖线标注 :param prices: 收盘价格序列,pd.Series或者np.array :param kl_index: pd.Index时间序列 :param time_period: 注意是Iterable类型,需要可迭代对象,即使一个元素也要使用如[10]包裹 :param from_calc: EMACalcType enum对象,默认使用简单移动平均线 :param with_points: 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’])) :param with_points_ext: 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’])) :param with_price: 将价格一起绘制 :return:

abupy.IndicatorBu.ABuNDMa.plot_ma_from_klpd(kl_pd, with_points=None, with_points_ext=None, **kwargs)[源代码]

封装plot_ma,绘制收盘价格,以及多条移动均线 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param with_points: 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’])) :param with_points_ext: 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’])) :param kwargs: 绘制技术指标需要的其它关键字参数,time_period,from_calc, with_price,最终透传给plot_ma

abupy.IndicatorBu.ABuNDMa.plot_ma_from_order(order, date_ext=120, **kwargs)[源代码]

封装ABuNDBase中的plot_from_order与模块中绘制技术指标的函数,完成技术指标可视化及标注买入卖出点位 :param order: AbuOrder对象转换的pd.DataFrame对象or pd.Series对象 :param date_ext: int对象 eg. 如交易在2015-06-01执行,如date_ext=120,择start向前推120天,end向后推120天 :param kwargs: 绘制技术指标需要的其它关键字参数,time_period,from_calc, with_price,最终透传给plot_ma

abupy.IndicatorBu.ABuNDMacd module

MACD

MACD称为指数平滑异动移动平均线,是从双指数移动平均线发展而来的,由快的加权移动均线(EMA12)减去慢的加权移动均线(EMA26) 得到DIF,再用DIF - (快线-慢线的9日加权移动均线DEA)得到MACD柱。MACD的意义和双移动平均线基本相同,即由快、慢均线的离散、 聚合表征当前的多空状态和股价可能的发展变化趋势,但阅读起来更方便。当MACD从负数转向正数,是买的信号。当MACD从正数转向负数, 是卖的信号。当MACD以大角度变化,表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开,代表了一个市场大趋势的转变。

abupy.IndicatorBu.ABuNDMacd.calc_macd(price, fast_period=12, slow_period=26, signal_period=9)

通过macd公式手动计算macd :param price: 收盘价格序列,pd.Series或者np.array :param fast_period: 快的加权移动均线线, 默认12,即EMA12 :param slow_period: 慢的加权移动均线, 默认26,即EMA26 :param signal_period: dif的指数移动平均线,默认9

abupy.IndicatorBu.ABuNDMacd.plot_macd(prices, kl_index, with_points=None, with_points_ext=None, with_price=True, fast_period=12, slow_period=26, signal_period=9)[源代码]

绘制收盘价格,以及对应的macd曲线,如果有with_points点位标注,使用竖线标注 :param prices: 收盘价格序列,pd.Series或者np.array :param kl_index: pd.Index时间序列 :param with_points: 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’])) :param with_points_ext: 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’])) :param with_price: 将价格一起绘制,但是价格要做数据标准化 :param fast_period: 快的加权移动均线线, 默认12,即EMA12 :param slow_period: 慢的加权移动均线, 默认26,即EMA26 :param signal_period: dif的指数移动平均线,默认9 :return:

abupy.IndicatorBu.ABuNDMacd.plot_macd_from_klpd(kl_pd, with_points=None, with_points_ext=None, **kwargs)[源代码]

封装plot_macd,绘制收盘价格,macd(dif, dea, bar)曲线 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param with_points: 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’])) :param with_points_ext: 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’])) :param kwargs: 绘制技术指标需要的其它关键字参数with_price, fast_period, slow_period, signal_period, 最终透传给plot_macd

abupy.IndicatorBu.ABuNDMacd.plot_macd_from_order(order, date_ext=120, **kwargs)[源代码]

封装ABuNDBase中的plot_from_order与模块中绘制技术指标的函数,完成技术指标可视化及标注买入卖出点位 :param order: AbuOrder对象转换的pd.DataFrame对象or pd.Series对象 :param date_ext: int对象 eg. 如交易在2015-06-01执行,如date_ext=120,择start向前推120天,end向后推120天 :param kwargs: 绘制技术指标需要的其它关键字参数with_price, fast_period, slow_period, signal_period, 最终透传给plot_macd

abupy.IndicatorBu.ABuNDRsi module

相对强弱指数(RSI)是通过比较一段时期内的平均收盘涨数和平均收盘跌数来分析市场买沽盘的意向和实力, 从而作出未来市场的走势

计算方法:

具体计算实现可阅读代码中_calc_rsi_from_pd()的实现 1. 根据收盘价格计算价格变动可以使用diff()也可以使用pct_change() 2. 分别筛选gain交易日的价格变动序列gain,和loss交易日的价格变动序列loss 3. 分别计算gain和loss的N日移动平均 4. rs = gain_mean / loss_mean 5. rsi = 100 - 100 / (1 + rs)

abupy.IndicatorBu.ABuNDRsi.calc_rsi(prices, time_period=14)

通过rsi公式手动计算rsi :param prices: 收盘价格序列,pd.Series或者np.array :param time_period: rsi的N日参数, 默认14

abupy.IndicatorBu.ABuNDRsi.plot_rsi(prices, kl_index, with_points=None, with_points_ext=None, with_price=True, time_period=14)[源代码]

绘制收盘价格,以及对应的macd曲线,如果有with_points点位标注,使用竖线标注 :param prices: 收盘价格序列,pd.Series或者np.array :param kl_index: pd.Index时间序列 :param with_points: 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’])) :param with_points_ext: 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’])) :param with_price: 将价格一起绘制,但两个曲线进行缩放到一个数值级别 :param time_period: rsi的N日参数, 默认14 :return:

abupy.IndicatorBu.ABuNDRsi.plot_rsi_from_klpd(kl_pd, with_points=None, with_points_ext=None, **kwargs)[源代码]

封装plot_rsi,绘制收盘价格,rsi曲线 :param kl_pd: 金融时间序列,pd.DataFrame对象 :param with_points: 这里的常规用途是传入买入order, with_points=buy_index=pd.to_datetime(orders[‘buy_date’])) :param with_points_ext: 这里的常规用途是传入卖出order, with_points_ext=sell_index=pd.to_datetime(orders[‘sell_date’])) :param kwargs: 绘制技术指标需要的其它关键字参数,time_period, 最终透传给plot_rsi

abupy.IndicatorBu.ABuNDRsi.plot_rsi_from_order(order, date_ext=120, **kwargs)[源代码]

封装ABuNDBase中的plot_from_order与模块中绘制技术指标的函数,完成技术指标可视化及标注买入卖出点位 :param order: AbuOrder对象转换的pd.DataFrame对象or pd.Series对象 :param date_ext: int对象 eg. 如交易在2015-06-01执行,如date_ext=120,择start向前推120天,end向后推120天 :param kwargs: 绘制技术指标需要的其它关键字参数,time_period, 最终透传给plot_rsi

Module contents