1

我正在尝试将 .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 日期但不确定如何。

希望有人可以提供帮助。

4

1 回答 1

1

我错过了脚本中的一行来检索数据并将其放入导致错误的 CSV

for candlestick in candlesticks:
    candlestick[0] = candlestick[0] / 1000
    candlestick_writer.writerow(candlestick)

以上更正了错误

于 2021-09-06T18:16:37.893 回答