欢迎大家订阅《教你用 Python 进阶量化交易》专栏!为了能够提供给大家更轻松的学习过程,笔者在专栏内容之外已陆续推出一些手记来辅助同学们学习本专栏内容,目前推出的扩展篇链接如下:
第一篇《管理概率==理性交易》
第二篇《线性回归拟合股价沉浮》
第三篇《最大回撤评价策略风险》
第四篇《寻找最优化策略参数》
第五篇《标记A股市场涨跌周期》
第七篇《装饰器计算代码时间》
第八篇《矢量化计算KDJ指标》
第九篇《移植量化交易小工具》
第十篇《统计学预测随机漫步》
在专栏的16小节《股票交易数据可视化:技术分析常用指标绘制》介绍了使用TA-Lib库实现MACD指标,当前TA-Lib库的使用文档多为英文版的官网内容,缺乏完整的中文介绍文档,本次场外篇笔者对TA-Lib库的一些使用频繁又比较典型的函数展开一些介绍。
在TA-Lib官方文档中提到TA-Lib总共分为10个功能组,如下所示:
每个功能组包含的特定函数接口,可通过如下接口查看:
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下安装的注意事项:
Overlap Studies(重叠研究)组主要包括如下指标的计算:
由于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(动量指标)中有常用的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(K线形态的识别),TA-lib不仅可以计算常见的技术指标,另外一个特色就是可以识别K线形态。在官网中称为Pattern Recognition Functions(形态识别功能),指的是K线形态。
调用函数基本方法为:输入开盘价、最高价、最低价、收盘价,可以识别出符合形态的K线,当某天的K线满足形态时,会输出-100/100,不满足时会输出0。比如识别两只乌鸦的K线形态函数,调用函数:integer = talib.CDL2CROWS(open, high, low, close)
部分函数接口说明如下:
关于完整代码可以加入专栏交流群获取。更多的量化交易内容欢迎大家订阅专栏阅读!!
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2920/viewspace-2823350/ ,如需转载,请注明出处,否则将追究法律责任。