为了账号安全,请及时绑定邮箱和手机立即绑定

Python进阶量化交易专栏场外篇11-TA-Lib库扩展介绍

标签:
Python

欢迎大家订阅《教你用 Python 进阶量化交易》专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下:

在专栏的16小节《股票交易数据可视化:技术分析常用指标绘制》介绍了使用TA-Lib库实现MACD指标,当前TA-Lib库的使用文档多为英文版的官网内容,缺乏完整的中文介绍文档,本次场外篇笔者对TA-Lib库的一些使用频繁又比较典型的函数展开一些介绍。

在TA-Lib官方文档中提到TA-Lib总共分为10个功能组,如下所示:

  • Overlap Studies(重叠研究)
  • Momentum Indicators(动量指标)
  • Volume Indicators(交易量指标)
  • Cycle Indicators(周期指标)
  • Price Transform(价格变换)
  • Volatility Indicators(波动率指标)
  • Pattern Recognition(模式识别)
  • Statistic Functions(统计函数)
  • Math Transform(数学变换)
  • Math Operators(数学运算)

每个功能组包含的特定函数接口,可通过如下接口查看:

print(talib.get_functions())
print(talib.get_function_groups())

安装介绍

TA-lib库的安装相比于 pandas,numpy这些第三方库要麻烦不少,主要原因是仅仅一条“pip install ta-lib”是不够的,因为TA-Lib是一个涉及到底层系统的库,比如提示了’ta_libc.h’文件不存在,如下所示:

talib/_ta_lib.c(524): fatal error C1083: Cannot open include file:
‘ta_libc.h’: No such file or directory

这里再强调下Windows下安装的注意事项:

  1. Windows32位和64位的安装有所不同,需要安装 Microsoft Visual C++……手动编译
  2. 官网下载ta-lib-0.4.0-msvc.zip 解压缩到到C盘的ta-lib目录下,终端(Anaconda Prompt、PyCharm Terminal、cmd)执行“pip install ta-lib”即可
  3. 假如ta-lib-0.4.0-msvc.zip下载不到,可以试试前往https://www.lfd.uci.edu/~gohlke/pythonlibs/根据自己系统和Python版本选择非官方的windows安装包(二进制程序)

Overlap Studies

Overlap Studies(重叠研究)组主要包括如下指标的计算:

  • BBANDS:布林带(Bollinger Bands)
  • DEMA:双移动平均线(Double Exponential Moving Average)
  • EMA:指数平均线(Exponential Moving Average)
  • HT_TRENDLINE:希尔伯特瞬时变化(Hilbert Transform - Instantaneous Trendline)
  • KAMA:考夫曼自适应移动均线(Kaufman Adaptive Moving Average)
  • MA:移动平均线(Moving average)
  • MAMA:MESA 自适应移动均线(MESA Adaptive Moving Average)
  • MAVP:变周期的移动均线(Moving average with variable period)
  • MIDPOINT:阶段中点(MidPoint over period)
  • MIDPRICE:阶段中点价格(Midpoint Price over period)
  • SAR:抛物线指标(Parabolic SAR)
  • SAREXT:抛物线扩展指标(Parabolic SAR – Extended)
  • SMA:简单移动平均线(Simple Moving Average)
  • T3:三重指数移动平均线(Triple Exponential Moving Average) (T3)
  • TEMA:三重指数移动平均线(Triple Exponential Moving Average)
  • TRIMA:三角移动均线(Triangular Moving Average)
  • WMA:加权移动均线(Weighted Moving Average)

由于Ta-lib库封装的函数名称十分简洁,无须过多解释就能完全看懂函数的含义。这里着重介绍下通用的talib.MA()函数:

talib.MA(close,timeperiod=30,matype=0)

比较特别的参数是matype:matype为指标类型,用数字代表均线计算方式,0=SMA, 1=EMA, 2=WMA, 3=DEMA, 4=TEMA, 5=TRIMA, 6=KAMA, 7=MAMA, 8=T3 (Default=SMA)。matype所指定类型的移动平均线也有单独的调用函数。接下来还是“show your code”来的更直接了当:

type_period = [{'SMA':5},{'EMA':10},{'WMA':20},{'DEMA':30},{'TEMA':40},{'TRIMA':60},{'KAMA':120},{'MAMA':140},{'T3':160}]
df_Matype = pd.DataFrame(stock.Close)

for i in range(len(type_period)):
    df_Matype[list(type_period[i].keys())[0]] = talib.MA(df_Matype.Close,
                                                         timeperiod=list(type_period[i].values())[0],
                                                         matype=i)

df_Matype.loc['2017-01-03':,['SMA','EMA','WMA','TEMA','KAMA','MAMA']].plot(figsize=(16,8),
                                                                          subplots = True,
                                                                          layout=(3,2),#行列数
                                                                          sharex = True,#共享x
                                                                          sharey = False,#共享y
                                                                          colormap = 'viridis',#每条线不同颜色
                                                                          fontsize = 7)
plt.show()

图片描述

Momentum Indicators

Momentum Indicators(动量指标)中有常用的MACD和KDJ指标。
普通的MACD计算函数:

macd, macdsignal, macdhist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)

默认均线为EMA不可选,即收盘价移动平均线。可以使用MACDEXT(MACD with controllable MA type),此时可以选择matype值来选不同的均线来作为计算DIF(差离值)的基础序列。

macd, macdsignal, macdhist = talib.MACDEXT(close, fastperiod=12, fastmatype=0, slowperiod=26, slowmatype=0, signalperiod=9, signalmatype=0)

图片描述

STOCH(Stochastic Oscillator Slow)更直接的理解就是我们常用的KDJ指标中的KD指标。它由两条线一条是快速确认线,另外一条是慢速主干线组成。函数接口:

slowk, slowd = talib.STOCH(high, low, close, fastk_period=5, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)

其中随机线有四种,分别是: FASTK、FASTD、SLOWK、SLOWD,D是由K经过变化得到。K线是快速确认线——数值在90以上为超买,数值在10以下为超卖;D线是慢速主干线——数值在90以上为超买,数值在10以下为超卖。

图片描述

Pattern Recognition

关于Pattern Recognition(K线形态的识别),TA-lib不仅可以计算常见的技术指标,另外一个特色就是可以识别K线形态。在官网中称为Pattern Recognition Functions(形态识别功能),指的是K线形态。
调用函数基本方法为:输入开盘价、最高价、最低价、收盘价,可以识别出符合形态的K线,当某天的K线满足形态时,会输出-100/100,不满足时会输出0。比如识别两只乌鸦的K线形态函数,调用函数:integer = talib.CDL2CROWS(open, high, low, close)

部分函数接口说明如下:

  • 两只乌鸦(talib.CDL2CROWS - Two Crows):三日K线模式,第一天长阳,第二天高开收阴,第三天再次高开继续收阴,收盘比前一日收盘价低,预示股价下跌。
  • 三只乌鸦(talib.CDL3BLACKCROWS - Three Black Crows):三日K线模式,连续三根阴线,每日收盘价都下跌且接近最低价,每日开盘价都在上根K线实体内,预示股价下跌。
  • 三内部上涨和下跌(talib.CDL3INSIDE - Three Inside Up/Down):三日K线模式,母子信号+长K线,以三内部上涨为例,K线为阴阳阳,第三天收盘价高于第一天开盘价,第二天K线在第一天K线内部,预示着股价上涨。
  • 三线打击(talib.CDL3LINESTRIKE - Three-Line Strike):四日K线模式,前三根阳线,每日收盘价都比前一日高,开盘价在前一日实体内,第四日市场高开,收盘价低于第一日开盘价,预示股价下跌。
  • 三外部上涨和下跌(talib.CDL3OUTSIDE - Three Outside Up/Down):三日K线模式,与三内部上涨和下跌类似,K线为阴阳阳,但第一日与第二日的K线形态相反,以三外部上涨为例,第一日K线在第二日K线内部,预示着股价上涨。
  • 南方三星(talib.CDL3STARSINSOUTH - Three Stars In The South):三日K线模式,与大敌当前相反,三日K线皆阴,第一日有长下影线,第二日与第一日类似,K线整体小于第一日,第三日无下影线实体信号,成交价格都在第一日振幅之内,预示下跌趋势反转,股价上升。
  • 三个白兵(talib.CDL3WHITESOLDIERS - Three Advancing White Soldiers):三日K线模式,三日K线皆阳,每日收盘价变高且接近最高价,开盘价在前一日实体上半部,预示股价上升。
  • 弃婴(talib.CDLABANDONEDBABY - Abandoned Baby):三日K线模式,第二日价格跳空且收十字星(开盘价与收盘价接近,最高价最低价相差不大),预示趋势反转,发生在顶部下跌,底部上涨。
  • 大敌当前(talib.CDLADVANCEBLOCK - Advance Block):三日K线模式,三日都收阳,每日收盘价都比前一日高,开盘价都在前一日实体以内,实体变短,上影线变长。
  • 捉腰带线(talib.CDLBELTHOLD - Belt-hold):两日K线模式,下跌趋势中,第一日阴线,第二日开盘价为最低价,阳线,收盘价接近最高价,预示价格上涨。
  • 脱离(talib.CDLBREAKAWAY - Breakaway):五日K线模式,以看涨脱离为例,下跌趋势中,第一日长阴线,第二日跳空阴线,延续趋势开始震荡,第五日长阳线,收盘价在第一天收盘价与第二天开盘价之间,预示价格上涨。

关于完整代码可以加入专栏交流群获取。更多的量化交易内容欢迎大家订阅专栏阅读!!

点击查看更多内容
5人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消