我尝试使用bta-lib来计算rsi指示器,尽管它与sma函数配合使用很好,但rsi函数“”“上出现错误
df=pd.read_csv('prices.csv') sma=btalib.sma(df,period=9)#works fine rsi=btalib.rsi(df,period=14)#through an error
“”“错误=值错误:无法使用长度与值不同的切片索引器进行设置...我的df长度足够了。x1c 0d1x
tf7tbtn21#
将打开时间设置为索引
df=pd.read_csv('prices.csv') df = df.set_index(['Open Time']) sma=btalib.sma(df,period=9) rsi=btalib.rsi(df,period=14)
bfnvny8b2#
我设法通过将“close”赋值为float来修复RSI函数。它作为str存储在Pandas Dataframe 中,RSI函数不喜欢它。但SMA在它还是一个str时不知何故工作正常。
df['close'] = df['close'].astype(float)
但是... bta_lib也使用了panda的append函数,现在已经不推荐使用了。我做了一些改动,编辑了库来修复这个问题,然后RSI就正常工作了。我把www.example.com的第lines.py302行改为:
trailer = pd.concat([trailprefix, series[p2:]])
不知道你的问题是否相同,但希望这能帮助一些人。
2条答案
按热度按时间tf7tbtn21#
将打开时间设置为索引
bfnvny8b2#
我设法通过将“close”赋值为float来修复RSI函数。它作为str存储在Pandas Dataframe 中,RSI函数不喜欢它。但SMA在它还是一个str时不知何故工作正常。
但是... bta_lib也使用了panda的append函数,现在已经不推荐使用了。我做了一些改动,编辑了库来修复这个问题,然后RSI就正常工作了。我把www.example.com的第lines.py302行改为:
不知道你的问题是否相同,但希望这能帮助一些人。