【问题标题】:Backtrader / Python ValueError: year x is out of rangeBacktrader / Python ValueError:x 年超出范围
【发布时间】:2021-11-03 19:00:28
【问题描述】:

我正在尝试将 .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 P>

这是将数据摄取到 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 日期,但不确定如何。

希望有人能提供帮助。

【问题讨论】:

    标签: python backtrader


    【解决方案1】:

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

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

    以上更正了错误

    【讨论】:

    • 也许您可以将您的答案标记为问题的答案。
    猜你喜欢
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    • 2017-10-02
    • 2020-04-04
    • 2014-11-02
    相关资源
    最近更新 更多