以文本方式查看主题 - 金字塔客服中心 - 专业程序化交易软件提供商 (http://222.73.7.161/bbs/index.asp) -- 交易策略发布专区 (http://222.73.7.161/bbs/list.asp?boardid=10) ---- 【zzc_python】talib常用指标范例 (http://222.73.7.161/bbs/dispbbs.asp?boardid=10&id=173300) |
||
-- 作者:yukizzc -- 发布时间:2019/11/27 10:15:45 -- 【zzc_python】talib常用指标范例 技术指标大家都知道,类似macd、布林带这些在软件中使用非常方便直接一个函数就能完成了。但是在python中大家可能找不到类似的函数 不过好在python的轮子非常多,在金融领域就有这样一个标准库叫TAlib集成了几乎所有你会使用到的那些基于k线分析的指标。 TAlib官网是全英的,另外他的函数列表可以看这个链接http://www.ta-lib.org/function.html。只有简单的说明 我这边会把一些平时可能用的多的指标在金字塔python下去进行复现并加上说明。 1、所有本贴列出的函数我都在金字塔图表上给进行对比,但因为计算机浮点计算误差的问题在python上得到的结果会和你图上看到的有小数位上的差异。 2、具体一些指标的算法还请参考pel里面都有现成的我就不赘述。 注意事项(踩过的坑): 一、Talib里面所有均线参数如果为1就会报错 c = np.arange(0,10,0.2) a = talib.SMA(c,timeperiod=1) 解决方法是如果参数为1,就不求平均直接用原始数据 [此贴子已经被作者于2019/12/11 10:01:02编辑过]
|
||
-- 作者:yukizzc -- 发布时间:2019/11/27 10:30:30 -- MACD #num表示偏移量,-1就是当前最新,-2就是昨天的数值
num = -2 #获取数据,注意数据量我选择了200,主要是ema算法特殊性 close = history_bars(\'SQRB00\',200,\'1d\',\'close\',include_now=True) #参数:fastperiod和slowperiod是ema快线和慢线的对应周期,signalperiod是快慢线差值dea的周期 #返回值:三个返回值具体看图表上的指标,注意talib中返回的macd是(DIF-DEA),而国内软件都会乘以2,所以我们在使用时候需要自己*2来使得数值一样 dif, dea, macd = talib.MACD(close,fastperiod=12,slowperiod=26,signalperiod=9) print((close[num],dif[num],dea[num],2*macd[num])) [此贴子已经被作者于2019/11/27 10:40:35编辑过]
|
||
-- 作者:yukizzc -- 发布时间:2019/11/27 10:32:48 -- 均线类 #num表示偏移量,-1就是当前最新,-2就是昨天的数值
num = -2 close = history_bars(\'RB00\',200,\'1d\',\'close\',include_now=True) #ma简单移动平均 sma = talib.SMA(close,10) print(sma[num]) #ema指数移动指标 ema = talib.EMA(close,10) print(ema[num]) #wma加权移动平均 wma = talib.WMA(close,10) print(wma[num]) [此贴子已经被作者于2019/11/27 10:40:20编辑过]
|
||
-- 作者:yukizzc -- 发布时间:2019/11/27 10:35:11 -- 布林带 #num表示偏移量,-1就是当前最新,-2就是昨天的数值
num = -2 close = history_bars(\'RB00\',200,\'1d\',\'close\',include_now=True) #timeperiod表示均线的周期,nbdevup表示上轨几个标准差,nbdevdn表示下跪几个标准差,matype=0表示用ma计算均线,matype=1表示用ema计算均线 #注意:talib中计算的标准差算法用的是stdp总体标准差,然国内软件里用的是std样本标准差。区别就是前者除以样本总数,后者除以样本总数 - 1 #所以如果想要自己实现和图表一样的布林线值只能自己写了,其中std的算法参考我后面的例子 upper, mid, lower = talib.BBANDS(close,timeperiod=26,nbdevup=2,nbdevdn=2,matype=0) print((mid[num],upper[num],lower[num])) #这里给出两种标准差的python实现,如果想自己实现国内的那种标准差就用std这个。 close2 = history_bars(\'RB00\',26,\'1d\',\'close\',include_now=True) mean = np.array(close).mean() stdp = np.sqrt((1/(len(close)))*np.sum((np.array(close) - mean)**2)) std = np.sqrt((1/(len(close)-1))*np.sum((np.array(close) - mean)**2)) print((stdp,std)) [此贴子已经被作者于2019/11/27 12:30:03编辑过]
|
||
-- 作者:yukizzc -- 发布时间:2019/11/27 10:36:09 --
[此贴子已经被作者于2019/11/27 15:03:55编辑过]
|
||
-- 作者:yukizzc -- 发布时间:2019/11/27 10:42:01 --
[此贴子已经被作者于2019/11/27 22:20:04编辑过]
|
||
-- 作者:yukizzc -- 发布时间:2019/11/27 10:43:09 --
[此贴子已经被作者于2019/11/28 13:16:08编辑过]
|
||
-- 作者:yukizzc -- 发布时间:2019/11/27 10:44:55 -- 预留 |
||
-- 作者:yukizzc -- 发布时间:2019/11/27 10:48:49 -- 预留 |