如何在python中使用TA-Lib和pandas的技术指标

时间:2016-03-14 11:34:06

标签: python pandas ta-lib technical-indicator

我是python和pandas的新手,主要是学习它以使我的编程技能多样化以及python作为通用程序语言的优势。在这个程序中,我用它来从雅虎获取历史数据,并使用talib中的函数进行一些技术分析

import pandas_datareader.data as web
import datetime
import talib as ta

start = datetime.datetime.strptime('12/1/2015', '%m/%d/%Y')
end = datetime.datetime.strptime('2/20/2016', '%m/%d/%Y')
f = web.DataReader('GOOG', 'yahoo', start, end)
print 'Closing Prices'
print f['Close'].describe()
print f.Close
print ta.RSI(f.Close,2)
print ta.SMA(f.Close,2)
print ta.SMA(f.Volume,4)
print ta.ATR
print ta.ATR(f.High,f.Low,f.Close,3)

以上代码一直有效print f.Close,但后来显示此错误

 print ta.RSI(f.Close,2)
TypeError: Argument 'real' has incorrect type (expected numpy.ndarray, got Series)

我使用R及其库进行库存技术分析,它有一个名为Quantmod的内置库,使技术分析更容易,代码更少。

library(quantmod)
symbol=getSymbols(AAPL)
SMA=SMA(Cl(Symbol),2)

是否有适用于Python的类似库?

4 个答案:

答案 0 :(得分:5)

试试;

print ta.RSI(np.array(f.Close))

答案 1 :(得分:3)

问题是你试图用pandas系列调用SMA / RSI等函数,但是如果你通过TALIB文档,它表明它们需要一个numpy数组作为参数。

所以你可以使用它:

Close=np.array(f['close'][1:])
Modclose=np.zeroes(len(Close))
For i in range(len(Close)):
       Modclose[i]=float(Close[i])

ta.SMA(Modclose,timestamp)

SMA中的第二个参数是可选的。

希望这有帮助。

答案 2 :(得分:1)

尝试

ta.RSI(f["Close"].values)

答案 3 :(得分:0)

ta.RSI希望处理值数组,但它获取数据帧。因此,您必须将数据帧转换为数组。试试这个:

  

打印ta.RSI(f.Close.values,2)