backtrader 显示所有蜡烛的相同时间

问题描述 投票:0回答:1

这是我的代码:

data15 = bt.feeds.GenericCSVData(dataname='BTCUSDT-15m-2022-01-01.csv',
dtformat=lambda x: datetime.utcfromtimestamp(int(x)/1000))

来自 csvgeneric.py:

dt = datetime.strptime(dtfield, dtformat)
    else:
        dt = self._dtconvert(dtfield)

    if self.p.timeframe >= TimeFrame.Days:
        # check if the expected end of session is larger than parsed
        if self._tzinput:
            dtin = self._tzinput.localize(dt)  # pytz compatible-ized
        else:
            dtin = dt

        dtnum = date2num(dtin)  # utc'ize

        dteos = datetime.combine(dt.date(), self.p.sessionend)
        dteosnum = self.date2num(dteos)  # utc'ize

        if dteosnum > dtnum:
            self.lines.datetime[0] = dteosnum

我发现对于每根蜡烛,

dt, dtin and dtnum
都是正确的。
dteosnum
始终相同,并且大于
dtnum
,因此
dteosnum
是分配给下一支蜡烛的蜡烛 (
self.lines.datetime[0]
)。

所以所有蜡烛都有相同的时间。

python trading backtrader candlesticks
1个回答
0
投票

我遇到了同样的问题,发现正确定义时间范围关键字参数可以解决这个问题。例如:

时间范围=bt.TimeFrame.分钟

这是添加了关键字参数的代码:

data15 = bt.feeds.GenericCSVData(dataname='BTCUSDT-15m-2022-01-01.csv',
                             timeframe=bt.TimeFrame.Minutes, # Can be MicroSeconds, Seconds, Minutes, Days, Weeks, Months or Years
                             dtformat=lambda x: datetime.utcfromtimestamp(int(x)/1000),
                            )
© www.soinside.com 2019 - 2024. All rights reserved.