Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用pandas计算相对强度指数_Python_Pandas_Finance - Fatal编程技术网

Python 用pandas计算相对强度指数

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

我试图用熊猫来计算相对强度指数(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

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进行此分析,请使用span
n
关闭
,并计算每个指数加权窗口的
平均值

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))