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?.
Try with;
Try with
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 :
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: