引言

TA-Lib,全称“Technical Analysis Library”, 即技术分析库,是Python金融量化的高级库,涵盖了150多种股票、期货交易软件中常用的技术分析指标,如MACD、RSI、KDJ、动量指标、布林带等等。TA-Lib可分为10个子板块:Overlap Studies(重叠指标),Momentum Indicators(动量指标),Volume Indicators(交易量指标),Cycle Indicators(周期指标),Price Transform(价格变换),Volatility Indicators(波动率指标),Pattern Recognition(模式识别),Statistic Functions(统计函数),Math Transform(数学变换)和Math Operators(数学运算),见下图。【手把手教你】股市技术分析利器之TA-Lib(一),主要探讨了重叠指标的相关原理与Python实现,本文将着重介绍TA-Lib中强大的数学运算、数学变换、统计函数、价格变换、周期指标和波动率指标函数及其应用实例。

安装与使用

安装:在cmd上使用“pip install talib”命令一般会报错,正确安装方法是,进入https://www.lfd.uci.edu/~gohlke/pythonlibs/,下拉选择TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl(win系统64位,python3.7版本,根据自己系统和python版本选择相应的安装包),将下载包放在当前工作路径中,然后在Anaconda Prompt(或windows的cmd)里面输入命令:pip install TA_Lib-0.4.17-cp27-cp27m-win_amd64.whl。

使用:import talib as ta

01 Price Transform 价格转换

TA-Lib模块中提供的价格转换函数有四个,主要用于计算开盘价、收盘价、最高价、最低价之间的均值,具体如下表所示。

#先引入后面可能用到的包(package)import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline   #正常显示画图时出现的中文和负号
from pylab import mpl
mpl.rcParams['font.sans-serif']=['SimHei']
mpl.rcParams['axes.unicode_minus']=False#引入TA-Lib库
import talib as ta#获取交易数据用于示例分析
import tushare as ts
def get_data(code,start='2015-01-01'):df=ts.get_k_data(code,start)df.index=pd.to_datetime(df.date)df=df.sort_index()return df#获取上证指数收盘价、最高、最低价格
df=get_data('sh')[['open','close','high','low']]#开盘价,最高价,最低价,收盘价的均值
df['average']=ta.AVGPRICE(df.open,df.high,df.low,df.close)
#最高价,最低价的均值
df['median']=ta.MEDPRICE(df.high,df.low)
#最高价,最低价,收盘价的均值
df['typical']=ta.TYPPRICE(df.high,df.low,df.close)
#最高价,最低价,收盘价的加权
df['weight']=ta.WCLPRICE(df.high,df.low,df.close)
df.head()df.loc['2019-01-08':,['close','average','median','typical','weight']].plot(figsize=(12,6))
ax = plt.gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
plt.title('上证指数及其价格转换',fontsize=15)
plt.xlabel('')
plt.show()

02 Cycle Indicator Functions周期指标函数

希尔伯特变换(Hilbert Transform)是积分变换中的一种,在信号处理领域得到了广泛的应用,而在工程中常用于窄带数字信号的处理。金融市场的波动是非周期、不规律的,但只要存在波动,就可以通过希尔伯特变换寻找其“周期性”。对于股价走势,一般可将其分解为:长期趋势、中短期周期性波动和噪声。在去除长期趋势的情况下,可以利用希尔伯特变换对中短期的周期性波动进行分析。关于希尔伯特变换原理及其在短线择时中的应用可参考广发证券金融工程专题报告《希尔伯特变换下的短线择时策略》(公众号Python金融量化后台回复:“希尔伯特”,获取免费下载地址)

df=get_data('sh')[['open','close','high','low']]
df['dcperiod']=ta.HT_DCPERIOD(df.close)
df['dcphase']=ta.HT_DCPHASE(df.close)
df['inhpase'],df['quadrature']=ta.HT_PHASOR(df.close)
df['sine'],df['leadsine']=sine, leadsine = ta.HT_SINE(df.close)
df['trendmode']=ta.HT_TRENDMODE(df.close)#将上述函数计算得到的结果进行可视化
df[['close','dcperiod','dcphase','inhpase','quadrature','sine','leadsine','trendmode']].plot(figsize=(20,18),subplots = True,layout=(4, 2))
plt.subplots_adjust(wspace=0,hspace=0.2)

上证指数走势及其周期变换

03 Volatility Indicator Functions 波动率指标函数

当前交易日最高价与最低价差值,前一交易日收盘价与当前交易日最高价间的差值,前一交易日收盘价与当前交易日最低价的差值,这三者中的最大值为真实波幅。即真实波动幅度 = max(最大值,昨日收盘价) − min(最小值,昨日收盘价),平均真实波动幅度等于真实波动幅度的N日指数移动平均数。波动幅度可以显示出交易者的期望和热情。波动幅度的急剧增加表示交易者在当天可能准备持续买进或卖出股票,波动幅度的减少则表示交易者对股市没有太大的兴趣。波动率指标可用于衡量价格的波动情况,辅助判断趋势改变的可能性,市场的交易氛围,也可以利用波动性指标来帮助止损止盈

df=get_data('sh')[['open','close','high','low']]
df['atr']=ta.ATR(df.high, df.low, df.close, timeperiod=14)
df['natr']=ta.NATR(df.high, df.low, df.close, timeperiod=14)
df['trange']=ta.TRANGE(df.high, df.low, df.close)
df.tail()

上证指数走势及波动率指标

04 Math Operator Functions数学运算

TA-Lib提供了向量(数组)的加减乘除、在某个周期内求和、最大最小值及其索引等计算函数,注意与Numpy和Pandas数学运算函数的联系与区别,TA-Lib的向量计算功能类似于pandas的moving window(移动窗口),得到的是一个新的序列(不是某个值),具体如下表所示。

df=get_data('sh')[['open','close','high','low']]
#最高价与最低价之和
df['add']=ta.ADD(df.high,df.low)
#最高价与最低价之差
df['sub']=ta.SUB(df.high,df.low)
#最高价与最低价之乘
df['mult']=ta.MULT(df.high,df.low)
#最高价与最低价之除
df['div']=ta.DIV(df.high,df.low)
#收盘价的每30日移动求和
df['sum']=ta.SUM(df.close, timeperiod=30)
#收盘价的每30日内的最大最小值
df['min'], df['max'] = ta.MINMAX(df.close, timeperiod=30)
#收盘价的每30日内的最大最小值对应的索引值(第N行)
df['minidx'], df['maxidx'] = ta.MINMAXINDEX(df.close, timeperiod=30)
df.tail()#将上述函数计算得到的结果进行可视化
df[['close','add','sub','mult','div','sum','min','max']].plot(figsize=(20,18),subplots = True,layout=(4, 2))
plt.subplots_adjust(wspace=0,hspace=0.2)

上证指数走势及数学运算

05 Statistic Functions 统计学函数

TA-Lib提供了常用的基础统计学函数,基于时间序列移动窗口进行计算。注意TA-Lib的beta,示例中是求某只股票的最高价与最低价序列的移动beta值,默认时间周期为5日,而资本资产定价中一般是分析某只股票相对于市场(大盘指数)的波动情况。具体指标如下表所示。

df=get_data('sh')[['open','close','high','low']]
#收盘价对时间t的线性回归预测值
df['linearreg']=ta.LINEARREG(df.close, timeperiod=14)
#时间序列预测值
df['tsf']=ta.TSF(df.close, timeperiod=14)
#画图
df.loc['2018-08-01':,['close','linearreg','tsf']].plot(figsize=(12,6))

df['beta']=ta.BETA(df.high,df.low,timeperiod=5)
df['correl']=ta.CORREL(df.high, df.low, timeperiod=30)
df['stdev']=ta.STDDEV(df.close, timeperiod=5, nbdev=1)
#将上述函数计算得到的结果进行可视化
df[['close','beta','correl','stdev']].plot(figsize=(18,8),subplots = True,layout=(2, 2))
plt.subplots_adjust(wspace=0,hspace=0.2)

06 Math Transform Functions数学转换函数

TA-Lib提供了三角函数(正余弦、正余切、双曲)、取整、对数、平方根等数学转换函数,均是基于时间序列的向量变换。三角函数的应用比较复杂,可结合傅里叶变换和小波分析进行学习,此处不再详细展开。具体指标如下表所示。

df=get_data('sh')[['open','close','high','low']]
df['sin']=ta.SIN(df.close)
df['cos']=ta.COS(df.close)
df['ln']=ta.LN(df.close)
#将上述函数计算得到的结果进行可视化
df[['close','sin','cos','ln']].plot(figsize=(18,8),subplots = True,layout=(2, 2))
plt.subplots_adjust(wspace=0,hspace=0.2)

关于Python金融量化

专注于分享Python在金融领域的应用。加入知识星球,免费获取30多g的量化投资学习视频、公众号文章Python完整源码,与博主直接交流经济金融前沿分析框架等。

TA-Lib介绍以及使用相关推荐

  1. WEB-INFO/lib build path 的jar包问题

    为什么80%的码农都做不了架构师?>>>    一.build path&WEB-INFO/lib介绍 build path:可以说是引用:  WEB-INFO/lib:可以 ...

  2. ffmpeg编译(生成Windows或Win32平台dll, lib)

    ffmpeg编译(生成Windows或Win32平台dll, lib) 介绍:本文简要介绍通过cygwin环境来编译生成ffmpeg. 包括解码组件libfaad与libopencore-amrnb的 ...

  3. OpenStack Heat服务介绍

     http://zhenhua2000.blog.51cto.com/3167594/1324883 这篇博文开始介绍一下OpenStack中的Orchestration Service:Heat ...

  4. 【Java】基于TA-Lib技术分析指标研究

    [Java]SFC融媒体项目基于TA-Lib技术分析指标研究 [Java]SFC融媒体项目基于TA-Lib技术分析指标研究 0. 前言 1. TA-Lib介绍 2. TA-Lib数据准备 2.1 指标 ...

  5. python开发测试岗_作为测试开发岗的面试官,我都是怎么选人的?

    最近一段时间面试了不少人,主要是一些测试开发岗,中高级的初级的也都有:也有一些偏业务测试岗的候选人.总结出了一些方法论,或者说更多的是个人作为面试官所遵守的一套面试准则. 1.什么是面试? 面试不仅仅 ...

  6. ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植

    目录 ATECC508A芯片开发笔记(二):开发准备之 CryptoAuthLib 库简介与移植 Atmel两个官方lib介绍 一.CryptoAuthLib简介 Lib中最主要的三种对象类型: 二. ...

  7. windows中Linux ubuntu子系统 安装talib 编译talib python 安装 talib 报错 - 简书

    问题详情 TA-Lib (mrjbq7.github.io) TA-Lib (mrjbq7.github.io)  看这个 mrjbq7/ta-lib: Python wrapper for TA-L ...

  8. 紫光同创国产FPGA学习之Timing Analyzer

    紫光同创的文档拷贝过来的.我怎么看都发现,怎么这么关键的东西,咋不够详细呢???分析是一方面,修改是另一方面了. 一.TA总体介绍 Timing Analyzer是一款用于时序分析的软件,用户可以通过 ...

  9. 记一次golang模拟登录淘宝

    一.前言 目的:打算用golang写一个淘宝抢购插件,但是每次抢购前都需要手动登录,这样太麻烦了,因此想实现自动登录获取cookie. 结果:失败的尝试. 既然这次尝试是失败的,我为啥又要记下来呢?我 ...

  10. Java成品网站推荐 毕设从这起步就够了

    [[雷霆战机]] [http://pan.baidu.com/s/1kVstszX] <解压源码后直接用AIDE打开就好,然后运行就ok了> [[跳转QQ源码]] [http://pan. ...

最新文章

  1. 配置动态路由协议OSPF
  2. 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )
  3. 拥抱开源!除了微软红帽,这些国际大厂你认识几个?
  4. puppet变量、数据类型及类(03)
  5. mercurial和svn_DBA Mercurial简介–处理文件和更改
  6. 开源应自由!Apache、OpenStack 基金会权威回应美国出口管制
  7. java 获取permgen_java - Java:如何检查当前的Perm / PermGen大小? - 堆栈内存溢出
  8. 实习成长之路:MySQL四:深入浅出索引
  9. linux定时器的实现方法
  10. C# 线程同步 信号量 Semaphore
  11. native2ascii编码转换
  12. 支持8086c语言编程的编译器,8086汇编语言编程软件|8086汇编语言编译器(MKStudio) v1.0免费版 附安装教程_星星软件园...
  13. 森林笔记之Qt:消息对话框(消息盒子)
  14. java和springboot开发的租房app房东直租系统租房网站
  15. UTC时间与北京时间相互转换
  16. CIKM 2021 | DISENKGAT:知识图谱解耦表征学习
  17. 第6周 使用对象 1 单词长度(5分) 2 GPS数据处理(5分)
  18. Matlab四维矩阵
  19. 卿斯汉:重视云安全 发展云计算
  20. 猴子学会意念打字,马斯克脑机接口最新演示,预计6个月内人体试验

热门文章

  1. Python实验-字典攻击!你的密码分分钟被搞定!
  2. delphi程序下 excel转pdf文档
  3. linux脚本编写计算器,Shell中编写简单计算器
  4. 中国信息化系统集成行业协会:计算机系统集成行业还有发展空间么?
  5. 【面向对象篇】Java必备基础(思维导图+代码)
  6. 软件项目常见风险及其预防措施
  7. Python修改Excel中某一列的值
  8. ubuntu桌面美化mac_Ubuntu系统美化之安装Mac主题菜鸟版[配图]
  9. 看三屏网课视频不同步的解决方法(vga和asf)
  10. WordPress登录注册评论滑动图片验证码插件腾讯云验证码(CAPTCHA)