我试图将一些数据从.csv文件导入到backtrader中,但遇到了错误ValueError: year x is out of range。
下面是我要导入的csv中的一行
1577836800000,7195.24000000,7255.00000000,7175.15000000,7200.85000000,16792.38816500,1577923199999,121214452.11606228,194010,8946.95553500,64597785.21233434,0
下面是将数据放入backtrader并使用matplotlib绘制的代码:
import backtrader as bt
import matplotlib
class RSIStrategy(bt.Strategy):
def __init__(self):
self.rsi = bt.talib.RSI(self.data, period=14)
def next(self):
if self.rsi < 30 and not self.position:
self.buy(size=1)
if self.rsi > 70 and self.position:
self.close()
cerebro = bt.Cerebro()
data = bt.feeds.GenericCSVData (dataname= 'daily_2021.csv', dtformat=2)
cerebro.adddata(data)
cerebro.addstrategy(RSIStrategy)
cerebro.run()
cerebro.plot()daily_2021.csv是数据的来源。
我在其他地方看到过,这可能是由于unix时间戳的工作方式,我需要/1000日期,但不确定如何操作。
希望有人能帮上忙。
发布于 2021-09-06 18:16:38
我在检索数据并将其放入导致错误的CSV的脚本中漏掉了一行
for candlestick in candlesticks:
candlestick[0] = candlestick[0] / 1000
candlestick_writer.writerow(candlestick)以上更正了错误
https://stackoverflow.com/questions/69078749
复制相似问题