写点什么

【量化】股市技术分析利器之 TA-Lib(一)

  • 2021 年 12 月 01 日
  • 本文字数:3043 字

    阅读完需:约 10 分钟

作者:未来大佬

来源:恒生LIGHT云社区


1、TA-Lib 简介


TA-Lib,全称“Technical Analysis Library”, 即技术分析库,是 Python 金融量化的高级库,涵盖了 158 种股票、期货交易软件中常用的技术分析指标,如 MACD、RSI、KDJ、动量指标、布林带等等。talib 的技术指标可分为 10 个类别,如下图所示:


3820


2、TA-Lib 安装


TA-Lib 下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/


打开网址后搜索 TA-Lib,根据自己系统和 python 版本选择相应的安装包,我们选择最新版本的,因为我电脑已经安装了 python 3.10.0


3821


下载后是一个 whl 文件:TA_Lib-0.4.21-cp310-cp310-win_amd64.whl。


打开下载文件所在目录,打开 cmd 命令行(在文件路径中输入 cmd 然后回车,或者按住 shit 键然后鼠标右键选择在此处打开 powershell 窗口),在命令行窗口执行命令:


pip install TA_Lib-0.4.21-cp310-cp310-win_amd64.whl


很快就提示安装成功。


3、查看 TA-Lib 提供的技术指标


import talibimport pandas as pd#查所有函数指标,一共158个functions = talib.get_functions()print(len(functions),functions)#指标太多看不过来,没关系,还可以使用分类查看groups = talib.get_function_groups()print(groups)#单独查看分类名称print(groups.keys())#查看每个分类的函数指标个数table = pd.DataFrame({'技术指标类别名称': list(groups.keys()),'该类别指标个数': list(map(lambda x: len(x), groups.values()))})print(table)
复制代码


3822


各个指标详细的参数说明:http://mrjbq7.github.io/ta-lib/doc_index.html


指标中文文档可以参考大神的文档:https://github.com/HuaRongSAO/talib-document


4、TA-Lib 指标的使用


下面介绍一下布林带指标的使用,并且在 K 线图上画出来


布林带(Bollinger Band),由压力线、支撑线价格平均线组成,一般情况价格线在压力线和支撑线组成的上下区间中游走,区间位置会随着价格的变化而自动调整。布林线的理论使用原则是:当股价穿越最外面的压力线(支撑线)时,表示卖点(买点)出现。当股价延着压力线(支撑线)上升(下降)运行,虽然股价并未穿越,但若回头突破第二条线即是卖点或买点。在实际应用中,布林线有其滞后性,相对于其他技术指标在判断行情反转时参考价值较低,但在判断盘整行情终结节点上成功率较高。


计算方法:首先计出过去 N 日收巿价的标准差 SD(Standard Deviation) ,通常再乘 2 得出 2 倍标准差, Up 线为 N 日平均线加 2 倍标准差, Down 线则为 N 日平均线减 2 倍标准差。


4.1 获取行情数据


本文使用恒有数获取股票行情数据,源代码如下:


import talibimport hs_udata as hsimport datetimeimport timeimport talibimport pandas as pdimport openpyxl
#获取一段时间的股票日行情数据def Get_stock_quote_daily(stocklist,datelist): #单次获取股票代码数量 stock_num = 500 #变量初始化 data_i = [] for Date_i in datelist['trading_date'].to_list(): #开始计时 t1 = time.time() #对股票列表进行循环 for i in range(0,len(stocklist),stock_num): list_i=','.join(stocklist[i:i+stock_num]) #获取日行情数据,接口说明见 https://udata.hs.net/datas/332/ #adjust_way枚举值为:0-不复权,1-前复权,2-后复权,此处取前复权 data_i.append(hs.stock_quote_daily(en_prod_code=list_i,trading_date=Date_i,adjust_way = 1)) t2 = time.time() # 结束计时 #打印耗时 print("{0}日行情数据,耗时为:{1}秒".format(Date_i,round(t2-t1,4)))
#拼接各段行情数据 data = pd.concat(data_i, ignore_index=True) return data
if __name__ == '__main__': #设置Token,注册后,获取并替换token hs.set_token(token='SXt-DJbOiOxA5C-GXyzwaTehKvr41T564D8AQ1cgw5ZRW-gZTB_KIerid4U9Oy3S') #获取股票列表 stocklist = ['600570.SH'] #下载2021-01-01~2021-11-23 的股票日行情数据 start='2021-01-01' end ='2021-11-23' #获取时间区间内,secu_market=83-沪深证券交易所交易日列表 datelist = hs.trading_calendar(secu_market='83',start_date=start,end_date=end,if_trading_day='1',fields='trading_date') #调用函数 data = Get_stock_quote_daily(stocklist,datelist) #导出Excel文件,方便后续本地快速调试 data.to_excel('股票日行情{0}-{1}.xlsx'.format(start, end)) print('下载数据条数为:{0}'.format(len(data))) print(data.head())
复制代码


3824


4.2 调用布林线指标及绘图


调用 TA-Lib 的 BBANDS 指标生成 BOLL 线数据,并且使用 mplfinance 画出 K 线和布林线。源代码如下:


import talibimport pandas as pdfrom talib import MA_Typeimport mplfinance as mpf
def showPlot(data):close_p = data['close_price'].values
#BBANDS Bollinger Bands,布林线指标#upperband, middleband, lowerband = BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)
data["BBANDS_upper"], data["BBANDS_middle"], data["BBANDS_lower"] = talib.BBANDS( close_p, timeperiod=20, matype=MA_Type.SMA)
#数据处理#剔除非交易日data = data.loc[data.turnover_status == '交易']#选取日期、高开低收价格、成交量数据data_price = data[['trading_date', 'open_price', 'high_price', 'low_price', 'close_price', 'business_amount']]
#更换列名,为后面函数变量做准备data_price = data_price.rename( columns={'trading_date': 'Date', 'open_price': 'Open', 'close_price': 'Close', 'high_price': 'High', 'low_price': 'Low', 'business_amount': 'Volume'})#设置date列为索引,覆盖原来索引,这个时候索引还是 object 类型,就是字符串类型。data_price.set_index('Date', inplace=True)#将object类型转化成 DateIndex 类型,pd.DatetimeIndex 是把某一列进行转换,同时把该列的数据设置为索引 index。data_price.index = pd.DatetimeIndex(data_price.index)data_price = data_price.sort_index(ascending=True)my_color = mpf.make_marketcolors(up='red', down='green', edge='i', wick='i', volume='in')my_style = mpf.make_mpf_style(marketcolors=my_color, gridaxis='both', gridstyle='-.', y_on_right=False)#mav(5,10,20)显示5日,10日,20日移动均线#mpf.plot(data_price, type='candle', mav=(5, 10, 20),style=my_style, volume=True, show_nontrading=False)
#将要额外添加的图线按照下边这种格式,放在一个列表中。然后传给mpf.plot的参数addplot就可以了。add_plot = [ mpf.make_addplot(data["BBANDS_upper"]), mpf.make_addplot(data["BBANDS_middle"]), mpf.make_addplot(data["BBANDS_lower"])]
#显示K线,布林线,成交量mpf.plot(data_price, type='candle', addplot=add_plot, style=my_style, volume=True, show_nontrading=False)
if __name__ == '__main__':data = pd.read_excel('股票日行情2021-01-01-2021-11-19.xlsx')showPlot(data)
复制代码


3825


5、总结


本文主要描述了 TA-Lib 的简介,TA-Lib 的安装方法,TA-Lib 技术指标的查看方法。最后通过一个实例,讲解了 TA-Lib 布林带指标的使用以及使用 mplfinance 画 K 线,布林带,成交量图。

发布于: 1 小时前阅读数: 6
用户头像

还未添加个人签名 2018.11.07 加入

还未添加个人简介

评论

发布
暂无评论
【量化】股市技术分析利器之TA-Lib(一)