1、TaLib与技术分析技术分析是股票分析十分有效直接的手段,在实际投资中我们常常需要计算各种简单或复杂的技术指标来分析参考

对于技术指标的定义基本都大同小异,很多都是通用的且模块化的东西

对于不会写代码或者不想自己写函数计算这些技术指标的人而言,强大的Talib给我们带来了福音

只需要调用Talib的函数,输入简单的参数就可以得到自己想要的结果

2、初看Talib

先简单看看Talib都给我们提供了那些计算技术指标的函数,按技术指标的类型列示如下:

Overlap Studies Functions

BBANDS - Bollinger Bands

upperband, middleband, lowerband = BBANDS(close, timeperiod=5, nbdevup=2, nbdevdn=2, matype=0)

DEMA - Double Exponential Moving Average

real = DEMA(close, timeperiod=30)

EMA - Exponential Moving Average

real = EMA(close, timeperiod=30)

HT_TRENDLINE - Hilbert Transform - Instantaneous Trendline

real = HT_TRENDLINE(close)

KAMA - Kaufman Adaptive Moving Average

real = KAMA(close, timeperiod=30)

MA - Moving average

real = MA(close, timeperiod=30, matype=0)

MAMA - MESA Adaptive Moving Average

mama, fama = MAMA(close, fastlimit=0, slowlimit=0)

MAVP - Moving average with variable period

real = MAVP(close, periods, minperiod=2, maxperiod=30, matype=0)

MIDPOINT - MidPoint over period

real = MIDPOINT(close, timeperiod=14)

MIDPRICE - Midpoint Price over period

real = MIDPRICE(high, low, timeperiod=14)

SAR - Parabolic SAR

real = SAR(high, low, acceleration=0, maximum=0)

SAREXT - Parabolic SAR - Extended

real = SAREXT(high, low, startvalue=0, offsetonreverse=0, accelerationinitlong=0,

accelerationlong=0, accelerationmaxlong=0, accelerationinitshort=0, accelerationshort=0, accelerationmaxshort=0)

SMA - Simple Moving Average

real = SMA(close, timeperiod=30)

T3 - Triple Exponential Moving Average (T3)

real = T3(close, timeperiod=5, vfactor=0)

TEMA - Triple Exponential Moving Average

real = TEMA(close, timeperiod=30)

TRIMA - Triangular Moving Average

real = TRIMA(close, timeperiod=30)

WMA - Weighted Moving Average

real = WMA(close, timeperiod=30)

Momentum Indicator Functions

ADX - Average Directional Movement Index

real = ADX(high, low, close, timeperiod=14)

ADXR - Average Directional Movement Index Rating

real = ADXR(high, low, close, timeperiod=14)

APO - Absolute Price Oscillator

real = APO(close, fastperiod=12, slowperiod=26, matype=0)

AROON - Aroon

aroondown, aroonup = AROON(high, low, timeperiod=14)

AROONOSC - Aroon Oscillator

real = AROONOSC(high, low, timeperiod=14)

BOP - Balance Of Power

real = BOP(open, high, low, close)

CCI - Commodity Channel Index

real = CCI(high, low, close, timeperiod=14)

CMO - Chande Momentum Oscillator

real = CMO(close, timeperiod=14)

DX - Directional Movement Index

real = DX(high, low, close, timeperiod=14)

MACD - Moving Average Convergence/Divergence

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

MACDEXT - MACD with controllable MA type

macd, macdsignal, macdhist = MACDEXT(close, fastperiod=12, fastmatype=0, slowperiod=26,

slowmatype=0, signalperiod=9, signalmatype=0)

MACDFIX - Moving Average Convergence/Divergence Fix 12/26

macd, macdsignal, macdhist = MACDFIX(close, signalperiod=9)

MFI - Money Flow Index

real = MFI(high, low, close, volume, timeperiod=14)

MINUS_DI - Minus Directional Indicator

real = MINUS_DI(high, low, close, timeperiod=14)

MINUS_DM - Minus Directional Movement

real = MINUS_DM(high, low, timeperiod=14)

MOM - Momentum

real = MOM(close, timeperiod=10)

RSI - Relative Strength Index

real = RSI(close, timeperiod=14)

Volume Indicator Functions

AD - Chaikin A/D Line

real = AD(high, low, close, volume)

ADOSC - Chaikin A/D Oscillator

real = ADOSC(high, low, close, volume, fastperiod=3, slowperiod=10)

OBV - On Balance Volume

real = OBV(close, volume)

Volatility Indicator Functions

ATR - Average True Range

real = ATR(high, low, close, timeperiod=14)

NATR - Normalized Average True Range

real = NATR(high, low, close, timeperiod=14)

TRANGE - True Range

real = TRANGE(high, low, close)Price Transform Functions

AVGPRICE - Average Price

real = AVGPRICE(open, high, low, close)

MEDPRICE - Median Price

real = MEDPRICE(high, low)

TYPPRICE - Typical Price

real = TYPPRICE(high, low, close)

WCLPRICE - Weighted Close Price

real = WCLPRICE(high, low, close)

Cycle Indicator Functions

HT_DCPERIOD - Hilbert Transform - Dominant Cycle Period

real = HT_DCPERIOD(close)

HT_DCPHASE - Hilbert Transform - Dominant Cycle Phase

real = HT_DCPHASE(close)

HT_PHASOR - Hilbert Transform - Phasor Components

inphase, quadrature = HT_PHASOR(close)

HT_SINE - Hilbert Transform - SineWave

sine, leadsine = HT_SINE(close)

HT_TRENDMODE - Hilbert Transform - Trend vs Cycle Mode

integer = HT_TRENDMODE(close)

Statistic Functions

BETA - Beta

real = BETA(high, low, timeperiod=5)

CORREL - Pearson's Correlation Coefficient (r)

real = CORREL(high, low, timeperiod=30)

LINEARREG - Linear Regression

real = LINEARREG(close, timeperiod=14)

LINEARREG_ANGLE - Linear Regression Angle

real = LINEARREG_ANGLE(close, timeperiod=14)

LINEARREG_INTERCEPT - Linear Regression Intercept

real = LINEARREG_INTERCEPT(close, timeperiod=14)

LINEARREG_SLOPE - Linear Regression Slope

real = LINEARREG_SLOPE(close, timeperiod=14)

STDDEV - Standard Deviation

real = STDDEV(close, timeperiod=5, nbdev=1)

TSF - Time Series Forecast

real = TSF(close, timeperiod=14)

VAR - Variance

real = VAR(close, timeperiod=5, nbdev=1)

Math Transform Functions

ACOS - Vector Trigonometric ACos

real = ACOS(close)

ASIN - Vector Trigonometric ASin

real = ASIN(close)

ATAN - Vector Trigonometric ATan

real = ATAN(close)

CEIL - Vector Ceil

real = CEIL(close)

COS - Vector Trigonometric Cos

real = COS(close)

COSH - Vector Trigonometric Cosh

real = COSH(close)

EXP - Vector Arithmetic Exp

real = EXP(close)

FLOOR - Vector Floor

real = FLOOR(close)

LN - Vector Log Natural

real = LN(close)

LOG10 - Vector Log10

real = LOG10(close)

SIN - Vector Trigonometric Sin

real = SIN(close)

SINH - Vector Trigonometric Sinh

real = SINH(close)

SQRT - Vector Square Root

real = SQRT(close)

TAN - Vector Trigonometric Tan

real = TAN(close)

TANH - Vector Trigonometric Tanh

real = TANH(close)

Math Operator Functions

ADD - Vector Arithmetic Add

real = ADD(high, low)

DIV - Vector Arithmetic Div

real = DIV(high, low)

MAX - Highest value over a specified period

real = MAX(close, timeperiod=30)

MAXINDEX - Index of highest value over a specified period

integer = MAXINDEX(close, timeperiod=30)

MIN - Lowest value over a specified period

real = MIN(close, timeperiod=30)

MININDEX - Index of lowest value over a specified period

integer = MININDEX(close, timeperiod=30)

MINMAX - Lowest and highest values over a specified period

min, max = MINMAX(close, timeperiod=30)

MINMAXINDEX - Indexes of lowest and highest values over a specified period

minidx, maxidx = MINMAXINDEX(close, timeperiod=30)

MULT - Vector Arithmetic Mult

real = MULT(high, low)

SUB - Vector Arithmetic Substraction

real = SUB(high, low)

SUM - Summation

real = SUM(close, timeperiod=30)

上面只是列举了一部分,更多函数可以参见官网,点击链接

3、如何应用:MA实例从上面可以看到,MA这个函数的参数为:real = MA(close, timeperiod=30, matype=0)

close表示收盘价序列,timeperiod指定义好均线的计算长度即几日均线,不输入的话,默认为30日,matype可以默认不用输入,然后就可以得到均线的值

所以简单来讲,只取获取收盘价序列,就可以轻松计算MA值

下面以万科A为例进行说明

data=DataAPI.MktEqudGet(ticker=u"000002",beginDate=u"20160601",endDate=u"20160804",field=u"secShortName,tradeDate,closePrice",pandas="1") #取数据

data['MA5'] = talib.MA(data['closePrice'].values, timeperiod=5) #调用talib计算5日均线的值

data.tail(10) #后十行结果

就这样,我们便捷地计算出了均线,下面计算更复杂的EMA,MACD

有关EMA,MACD的基础知识,可以参考社区帖子『研究|技术指标|第一弹』MACD

关于EMA,MACD计算的函数的描述是:

real = EMA(close, timeperiod=30)

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

输入参数:close是收盘价,timeperiod指的是指数移动平均线EMA的长度,fastperiod指更短时段的EMA的长度,slowperiod指更长时段的EMA的长度,signalperiod指DEA长度返回值:注意有些地方的macdhist = 2(dif-dea),但是talib中MACD的计算是macdhist = dif-dea

data['EMA12'] = talib.EMA(data['closePrice'].values, timeperiod=12) #调用talib 计算12日移动移动平均线的值

data['EMA26'] = talib.EMA(data['closePrice'].values, timeperiod=26)

data['MACD'],data['MACDsignal'],data['MACDhist'] = talib.MACD(data['closePrice'].values)在构建策略时也会更加方便。

4、策略实战:双均线策略当5日均线上穿60日均线,买入

当5日均线下穿60日均线,卖出

我们不再需要自己写函数计算均线,只需要调用函数就可以方便的解决问题(对于更复杂的指标,talib的便捷就更加明显)

import pandas as pd

import numpy as np

import talib

start = '2013-01-01' # 回测起始时间

end = '2016-07-01' # 回测结束时间

benchmark = 'HS300' # 策略参考标准

universe = set_universe('HS300')

capital_base = 1000000 # 起始资金

freq = 'd' # 策略类型,'d'表示日间策略使用日线回测,'m'表示日内策略使用分钟线回测

refresh_rate = 5 # 调仓频率,表示执行handle_data的时间间隔,若freq = 'd'时间间隔的单位为交易日,若freq = 'm'时间间隔为分钟

def initialize(account): # 初始化虚拟账户状态

pass

def handle_data(account): # 每个交易日的买入卖出指令

period1 = 5 #取5日数据

period2 = 60 #取60日数据

all_close_prices = account.get_attribute_history('closePrice', period2) # 获取历史closePrice数据

buy_list = [] # 备选买入清单

sell_list = [] # 卖出清单

for stk in account.universe:

prices = all_close_prices[stk]

if prices is None:

continue

try:

MA5 = talib.MA(prices, timeperiod=period1) # 计算5日均线

MA60 = talib.MA(prices, timeperiod=period2) #计算60日均线

except:

continue

# 买入卖出判断

if MA5[-1]-MA60[-1] > 0: #talib计算返回的MA5是一个数组,对应于日期,最后一个元素就是当前交易日前一天的5日均线值

buy_list.append(stk)

elif MA5[-1]-MA60[-1] < 0: #当5日均线下穿60日均线,卖出

sell_list.append(stk)

hold = []

buy = [] # 最终买入清单

# 买入卖出

for stk in account.valid_secpos:

# sell_list卖出

if stk in sell_list:

order_to(stk, 0)

# 其余继续持股

else:

hold.append(stk)

buy = hold

for stk in buy_list:

# 若buy_list中股票有未买入的,加入

if stk not in hold:

buy.append(stk)

if len(buy) > 0:

# 等仓位买入

amout = account.referencePortfolioValue/len(buy) # 每只股票买入数量

for stk in buy:

num = int(amout/account.referencePrice[stk] / 100.0) * 100

order_to(stk, num)

return原文链接:TaLib在股票技术分析中的应用

python 股票指标库talib_TaLib在股票技术分析中的应用相关推荐

  1. python 股票指标库talib_talib金融库怎么用?

    Talib一直缺乏有效的中文文档,我在 [TA-Lib]学习笔记-K线模式识别 发动了中文文档补齐计划,大家可以在网站上看到. 使用方式你只需要 import talib就可以是用talib计算各种技 ...

  2. NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码

    NLP之情感分析:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码 目录 全部代码 相关文章 NLP之情感分析:基于python编程(jieba库)实现中文文本情 ...

  3. NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码

    NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码 目录 全部代码 相关文章 NLP之TEA:基于python编程(jieba库)实现中文文本情感分 ...

  4. ​​​​​​​NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)

    NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分) 目录 输出结果 设计思路 相关资料 1.关于代码 2.关于数据集 关于留言 1.留言内容的注意事项 2.如 ...

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

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

  6. python 股票指标库talib_Python进阶量化交易专栏场外篇19-建立基于TA-Lib的指标库

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

  7. 股票指标 PHP,怎样将股票指标改为选股指标

    刚刚股票入门的股民经常发现有些指标很准确,如是想将股票指标改成选股指标,但不知道如果着手,本文详细介绍怎样将股票指标改为选股指标. 步骤一.将所有的显示式":",改为不显示式&qu ...

  8. Python使用标准库zipfile提取docx文档中所有图片

    清华科技大讲堂免费直播课预告: 免费直播课|Python数据可视化与科学计算可视化案例分享,5月28日晚20:00-21:30 ============ 哔哩哔哩网站免费视频观看地址: 董老师在哔哩哔 ...

  9. 技术分析中的五种常见指标

    目录 相对强弱指数(RSI) 移动平均线(MA) 平滑异同移动平均线(MACD) 随机相对强弱指数(StochRSI) 布林线指标(BB) 简介 市场交易者通过对技术指标的分析来确定资产价格的未来走势 ...

最新文章

  1. Hibernate学习总结【比较与Mybatis框架之间的区别】
  2. spell_picture第三版终于摆脱了命令行的操作
  3. linux编译模块时怎么包含其他c文件夹,如何在导入符号出现在已编译的Linux内核模块中时,可选地使用它们?...
  4. ImportError: No module named arcpy
  5. JavaScript tips and tricks - 4
  6. Mysql 优化器内部JOIN算法hash join Nestloopjoin及classic hash join CHJ过程详解
  7. CLion运行python程序
  8. 计算机应用word作业,《计算机应用基础》作业
  9. 可视化动画:数据结构和算法
  10. LANP+KEEPALIVED集群(三)
  11. 基于XSSFWorkbook 实现POI设置指定列为文本格式
  12. 46岁微软:从盖茨缔造帝国到纳德拉复兴
  13. IPCam网络摄像头
  14. SQL Server如何导入mdf,ldf文件
  15. merlin 实现中文语音合成基础知识和常见问题汇总
  16. This inspection performs unresolved SQL references check.
  17. time wait和close wait
  18. Whistle使用手册
  19. 今年春节琼州海峡天气乐观 海南多部门“未雾绸缪”
  20. 根据编号输出课程名称

热门文章

  1. boundingBox getContentSize
  2. QT操作sqlite数据库汇总
  3. 【分析】浅谈C#中Control的Invoke与BeginInvoke在主副线程中的执行顺序和区别(SamWang)
  4. C# 通过socket实现UDP 通信
  5. linux namespace 工具,Linux Namespace : 简介
  6. 调节树莓派终端窗口的字体大小
  7. fastadmin 批量上传不成功_shopee批量上传产品步骤
  8. linux .o文件 复制,Linux I/O实现文件复制
  9. c# list 容量_C#中数组、ArrayList和List三者的区别 转
  10. Laravel Conf China 2019 之 安正超