Python 用pandas计算相对强度指数
我试图用熊猫来计算相对强度指数(RSI),但似乎无法正确地适应提供的解决方案。为什么这不是RSI系列Python 用pandas计算相对强度指数,python,pandas,finance,Python,Pandas,Finance,我试图用熊猫来计算相对强度指数(RSI),但似乎无法正确地适应提供的解决方案。为什么这不是RSI系列 import pandas_datareader.data as web import datetime start = datetime.datetime(2018, 2, 8) end = datetime.datetime(2019, 2, 8) stock = 'TNA' price = web.DataReader(stock,'yahoo', start, end) n = 14
import pandas_datareader.data as web
import datetime
start = datetime.datetime(2018, 2, 8)
end = datetime.datetime(2019, 2, 8)
stock = 'TNA'
price = web.DataReader(stock,'yahoo', start, end)
n = 14
def RSI(series):
delta = series.diff()
u = delta * 0
d = u.copy()
i_pos = delta > 0
i_neg = delta < 0
u[i_pos] = delta[i_pos]
d[i_neg] = delta[i_neg]
rs = moments.ewma(u, span=27) / moments.ewma(d, span=27)
return 100 - 100 / (1 + rs)
print(rsi(price, n))
将pandas\u datareader.data作为web导入
导入日期时间
开始=日期时间。日期时间(2018年2月8日)
end=datetime.datetime(2019,2,8)
股票='TNA'
price=web.DataReader(股票,'yahoo',开始,结束)
n=14
def RSI(系列):
delta=series.diff()
u=delta*0
d=u.copy()
i_pos=delta>0
i_neg=δ<0
u[i_pos]=delta[i_pos]
d[i_neg]=delta[i_neg]
rs=力矩。ewma(u,span=27)/力矩。ewma(d,span=27)
返回100-100/(1+rs)
打印(rsi(价格,n))
这里是一个暗箱操作,因为您没有提供太多的上下文
pandas.stats.moment.ewma在0.23.0中不再受支持。现在可以使用pd.Series.ewm
实现指数加权窗口。如果不提供滚动窗口的方法,则返回不能在任何类型的等式中使用的窗口对象。以下是可用方法的列表:
rs.agg rs.apply rs.count rs.exclusions rs.max rs.median rs.name rs.skew r.sum
rs.aggregate rs.corr rs.cov rs.kurt rs.mean rs.min rs.quantile rs.std rs.var
我假设您复制了上面的函数,它甚至似乎没有回答OP。如果您想对序列price进行此分析,请使用spann
关闭,并计算每个指数加权窗口的平均值
:
import pandas_datareader.data as web
import datetime
import pandas as pd
ewma = pd.Series.ewm
start = datetime.datetime(2018, 2, 8)
end = datetime.datetime(2019, 2, 8)
stock = 'TNA'
price = web.DataReader(stock,'yahoo', start, end)
n = 14
def RSI(series,n):
delta = series.diff()
u = delta * 0
d = u.copy()
i_pos = delta > 0
i_neg = delta < 0
u[i_pos] = delta[i_pos]
d[i_neg] = delta[i_neg]
rs = ewma(u, span=n).mean() / ewma(d, span=n).mean()
return 100 - 100 / (1 + rs)
print(RSI(price.Close,n))
将pandas\u datareader.data作为web导入
导入日期时间
作为pd进口熊猫
ewma=pd.Series.ewm
开始=日期时间。日期时间(2018年2月8日)
end=datetime.datetime(2019,2,8)
股票='TNA'
price=web.DataReader(股票,'yahoo',开始,结束)
n=14
def RSI(系列,n):
delta=series.diff()
u=delta*0
d=u.copy()
i_pos=delta>0
i_neg=δ<0
u[i_pos]=delta[i_pos]
d[i_neg]=delta[i_neg]
rs=ewma(u,span=n).mean()/ewma(d,span=n).mean()
返回100-100/(1+rs)
打印(RSI(价格收盘价,n))