市场有自己的时间观念。股票投资就如同任何人类互动一样,耐心是一项美德。——罗伯特·D·爱德华《股市趋势技术分析》

引言

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(数学运算),见下图。本公众号将以系列的形式详细介绍talib技术指标的实现和应用,而本文作为开篇,主要介绍Overlap Studies内容。

安装与使用

安装:在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

Overlap Studies Functions重叠指标

01 移动平均线系列

移动平均线是技术分析理论中应用最普遍的指标之一,主要用于确认、跟踪和判断趋势,提示买入和卖出信号,在单边市场行情中可以较好的把握市场机会和规避风险。但是,移动平均线一般要与其他的技术指标或基本面相结合来使用,特别是当市场处于盘整行情时,其买入卖出信号会频繁出现,容易失真。

通用函数名:MA

代码:ta.MA(close,timeperiod=30,matype=0)

移动平均线系列指标包括:SMA简单移动平均线、EMA指数移动平均线、WMA加权移动平均线、DEMA双移动平均线、TEMA三重指数移动平均线、TRIMA三角移动平均线、KAMA考夫曼自适应移动平均线、MAMA为MESA自适应移动平均线、T3三重指数移动平均线。

其中,close为收盘价,时间序列,timeperiod为时间短,默认30天,指标类型matype分别对应:0=SMA, 1=EMA, 2=WMA, 3=DEMA, 4=TEMA, 5=TRIMA, 6=KAMA, 7=MAMA, 8=T3 (Default=SMA)

不同类型的移动均线也有各自相应的调用函数:

#先引入后面可能用到的包(package)import pandas as pd import numpy as npimport matplotlib.pyplot as plt%matplotlib inline #正常显示画图时出现的中文和负号from pylab import mplmpl.rcParams['font.sans-serif']=['SimHei']mpl.rcParams['axes.unicode_minus']=False#引入TA-Lib库import talib as ta#查看包含的技术指标和数学运算函数#print(ta.get_functions())#print(ta.get_function_groups())ta_fun=ta.get_function_groups()ta_fun.keys()#使用tushare获取上证指数数据作为示例import tushare as tsdf=ts.get_k_data('sh',start='2000-01-01')df.index=pd.to_datetime(df.date)df=df.sort_index()types=['SMA','EMA','WMA','DEMA','TEMA','TRIMA','KAMA','MAMA','T3']df_ma=pd.DataFrame(df.close)for i in range(len(types)): df_ma[types[i]]=ta.MA(df.close,timeperiod=5,matype=i)df_ma.tail()
df_ma.loc['2018-08-01':].plot(figsize=(16,6))ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') plt.title('上证指数各种类型移动平均线',fontsize=15)plt.xlabel('')plt.show()

数据来源:tushare

#画5、30、120、250指数移动平均线N=[5,30,120,250]for i in N: df['ma_'+str(i)]=ta.EMA(df.close,timeperiod=i)df.tail()df.loc['2014-01-01':,['close','ma_5','ma_30','ma_120','ma_250']].plot(figsize=(16,6))ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') plt.title('上证指数走势',fontsize=15)plt.xlabel('')plt.show()

数据来源:tushare

02 布林带

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

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

代码:ta.BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)

H_line,M_line,L_line=ta.BBANDS(df.close, timeperiod=20, nbdevup=2, nbdevdn=2, matype=0)df1=pd.DataFrame(df.close,index=df.index,columns=['close'])df1['H_line']=H_linedf1['M_line']=M_linedf1['L_line']=L_linedf1.tail()
df1.loc['2013-01-01':'2014-12-30'].plot(figsize=(16,6))ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') plt.title('上证指数布林线',fontsize=15)plt.xlabel('')plt.show()

数据来源:tushare

03 其他指标

df2=pd.DataFrame(df.close)df2['HT']=ta.HT_TRENDLINE(df.close)periods =np.array([3]*len(df), dtype=float)df2['MAVP']=ta. MAVP(df.close,periods)df2['MIDPOINT']=ta.MIDPOINT(df.close)df2['MIDPRICE']=ta.MIDPRICE(df.high,df.low)df2['SAR']=ta.SAR(df.high,df.low)df2['SAREXT']=ta.SAREXT(df.high,df.low)df2.tail()
df2.loc['2018-01-01':'2019-02-21',['close','HT','MAVP','MIDPOINT','MIDPRICE','SAR']].plot(figsize=(16,6))ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') plt.title('上证指数的其他趋势指标线',fontsize=15)plt.xlabel('')plt.show()

数据来源:tushare

df2.loc['2018-01-01':'2019-02-21','SAREXT'].plot(figsize=(16,6))ax = plt.gca() ax.spines['right'].set_color('none') ax.spines['top'].set_color('none') plt.title('上证指数的抛物线扩展走势',fontsize=15)plt.xlabel('')plt.show()

数据来源:tushare

均线策略回测

双均线策略:分别选择L天和S天的移动平均线(L>S),如L=20,S=5,当短周期S均线(5日均线)向上突破长周期L均线(20日均线)时,为买入点;反之,当S均线向下击穿L均线时为卖出点。

标的:中国平安(601318),期间:2014.1-2019.1,回测结果:

数据来源:万矿

布林线策略回测

标的:黄金期货

策略:下穿布林线上边界做空,上穿布林线下边界做多

(1)timeperiod=10,回测期间:2017.01.01-2019.02.21

数据来源:万矿

(2)timeperiod=10,回测期间:2016.01.01-2017.02.21

数据来源:万矿

关于Python金融量化

专注于分享Python在金融领域的实际应用,包括金融数据分析、金融建模与量化投资等。加入知识星球,免费获取量化投资学习视频、公众号文章Python源代码,一起学习,共同进步!

显示lib包_【手把手教你】股市技术分析利器之TA-Lib(一)相关推荐

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

    作者:未来大佬 来源: 恒生LIGHT云社区 上篇文章 [量化]股市技术分析利器之TA-Lib(一) ,主要介绍了Ta-lib的基础知识与绘制布林线,本文将着重介绍TA-Lib中强大的价格转换.周期指 ...

  2. python 股票指标库talib_【手把手教你】股市技术分析利器之TA-Lib(一)

    市场有自己的时间观念.股票投资就如同任何人类互动一样,耐心是一项美德.--罗伯特·D·爱德华<股市趋势技术分析> 引言 TA-Lib,全称"Technical Analysis ...

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

    作者:未来大佬 来源: 恒生LIGHT云社区 1.TA-Lib简介 TA-Lib,全称"Technical Analysis Library", 即技术分析库,是Python金融量 ...

  4. 引入yml依赖包_手把手教你发布 Python 项目开源包

    编译:机器之心,作者:Gabriel Lerner.Nathan Toubiana 好不容易码了个 python 项目,是不是很兴奋?那么怎么把这个项目发出去让大家看到呢?本文作者写了一份在 GitH ...

  5. npm收录了哪些包_手把手教你制作一个小而美丽的 npm 包并发布

    第1步:npm账户 你需要一个 npm 账户,如果米有,注册地址是:npmjs.com/signup 第2步:登录 进入你自己电脑的终端(cmd)并输入: npm adduser 也可以使用以下命令: ...

  6. 软件_手把手教vscode配置c++,python开发环境

    原创:软件_手把手教vscode配置c++,python开发环境 之前主用Python作为项目开发语言,将项目迁移到arm边缘盒子上后发现arm的cpu不给力,软件速度低于预期,所以计划将部分程序改为 ...

  7. 列举几个股市技术分析的公众号名称

    以下是几个比较知名的股市技术分析公众号名称: 财经狂人 股市大师 股海导航 炒股大师 股票狙击手 投资观察家 股市智囊团 投资圈 股市冷眼 财经预言家 这些公众号通常提供股票行情分析.投资策略等信息, ...

  8. python进行数据预测_手把手教你用Python进行时间序列分解和预测

    原标题:手把手教你用Python进行时间序列分解和预测 作者:Mohit Sharma 翻译:数据派THU-王闯(Chuck) 预测是一件复杂的事情,在这方面做得好的企业会在同行业中出类拔萃.时间序列 ...

  9. 脚本升级_手把手教你升级到Database 19c(3)| 终章教程

    点击▲关注 "ITPUB"   给公众号标星置顶 更多精彩 第一时间直达  前文回顾: 手把手教你升级到 Oracle  19c(1)| 教程来了手把手教你升级到 Oracle 1 ...

最新文章

  1. SAP Spartacus StoreFeatureModule
  2. Python 通过 pip 安装第三方模块成功,导入该模块失败的解决方法
  3. ARP、Tracert、Route 与 NBTStat命令详解
  4. TurboMail邮件系统为防垃圾邮件盗号提供专业方案
  5. 大型天燃气供应商遭勒索攻击、Log4Shell正在突变|12月15日全球网络安全热点
  6. 光伏产品标准 - IEC 61215:2021版系列简介及标准下载
  7. java pdf合并_如何实用Java实现合并、拆分PDF文档
  8. dlna 服务器 性能,dlna 使用体验,供大家参考,欢迎交流
  9. 任务服务器未响应,win10任务管理器没有响应的解决方法
  10. 秦汉考场科目三路线图_秦汉科目三考场考试攻略,附考场路线图
  11. http/2与http/1的区别
  12. Recent Trends in Deep Learning Based Natural Language Processing(arXiv)笔记
  13. 为防止失联......
  14. WinGate 6.0 build 984铪铪铪
  15. java多线程实现动态效果_java多线程实现礼花绽放的效果,
  16. 现在考系统集成项目管理工程师有用吗?
  17. DBMS_REDEFINITION 实现对原表进行分区
  18. minecraftjava下载地址_MinecraftJava版20w51a
  19. MySQL安装以及客户端的使用
  20. 施努卡:机器视觉系统光源(机器视觉环形光源应用)

热门文章

  1. ProgressBar(圆形、水平进度条)的基本使用(点击Button1按钮,显示或消失圆形ProgressBar)(每点击一次Button2按钮,水平进度条增加10%)
  2. c语言编写单词位置反转,C语言笔试题答案.docx
  3. python super 变参数问题(五)
  4. sql array 数组基本用法(四)
  5. 124. Leetcode 583. 两个字符串的删除操作 (动态规划- 字符串系列)
  6. Graph Attention Networks
  7. 推荐系统笔记(信息消费)
  8. 机器学习笔记 时间序列预测(基本数据处理,Box-Cox)
  9. 论文笔记:Stochastic Weight Completion for Road Networks using Graph Convolutional Networks
  10. 在PyCharm中设置新建Python文件的模板格式方法