How to use technical indicators of TA-Lib with pandas in python

Viewed 22536

I am new to python and pandas and mainly learning it to diversify my programming skills as well as of the advantage of python as a general programme language. In this programme I am using it to fetch historical data's from yahoo and do some technical analysis using functions in 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)

the above code works till print f.Close but then it shows this error

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

I have used R and its libraries for technical analysis of stocks and It have an inbuilt library called Quantmod which makes technical analysis easier and with fewer codes.

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

is there any similar libraries available for Python?.

4 Answers

Try with

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

Problem is you are trying to call SMA / RSI etc functions with pandas series but if you go through the TALIB documentation it shows that they require a numpy array as parameter.

So you can use this :

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)

The second parameter in SMA is optional though.

Hope this helps.

ta.RSI expects array of values to process but it gets dataframe. So, you have to convert dataframe to array. Try this:

print ta.RSI(f.Close.values, 2)

Related