For code/output blocks: Use ``` (aka backtick or grave accent) in a single line before and after the block. See: http://commonmark.org/help/
backtrader giving me identical datetime prints on every line
-
I have checked all the logical places for this, but still backtrader things I am passing daily bars. the strategy code is as followed:
class Master(bt.Strategy): def __init__(self): self.dataclose = self.datas[0].close self.dt = self.datas[0].datetime.datetime(0) def next(self): print(self.dt, self.dataclose[0]) def runstrat(): cerebro = bt.Cerebro() cerebro.broker.setcash(550000.0) data123 = bt.feeds.MarketStore( symbol='ETH', query_timeframe='1Min', timeframe=bt.TimeFrame.Minutes, ) cerebro.adddata(data123) cerebro.addstrategy(Master) cerebro.run() print('finished') if __name__ == '__main__': runstrat()
the output is as followed. The first 10 lines comes from the datafeed directly, I have a line right after it loads the
datetime
toprint(datetime.datetime.fromtimestamp(bar[0]).isoformat())
. So I know both time and date are being passed correctly after it gets passed through thedate2num
function :## from datafeed directly 2018-06-03T11:13:00 2018-06-03T11:14:00 2018-06-03T11:15:00 2018-06-03T11:16:00 2018-06-03T11:17:00 2018-06-03T11:18:00 2018-06-03T11:19:00 2018-06-03T11:20:00 2018-06-03T11:21:00 2018-06-03T11:22:00 ## from BT strategy printing as though it is daily bars 2018-06-03 11:22:00 615.41 2018-06-03 11:22:00 614.88 2018-06-03 11:22:00 614.51 2018-06-03 11:22:00 614.71 2018-06-03 11:22:00 615.01 2018-06-03 11:22:00 616.1 2018-06-03 11:22:00 616.54 2018-06-03 11:22:00 616.74 2018-06-03 11:22:00 616.5 2018-06-03 11:22:00 616.11 finished
-
SOLVED
the data feed was fine, it was with in the
next()
have to split fromdatetime
todate
and separatetime
class Master(bt.Strategy): def __init__(self): self.dataclose = self.datas[0].close def next(self): # self.log('Line') print(self.datas[0].datetime.date(0), self.datas[0].datetime.time(0)) def runstrat(): cerebro = bt.Cerebro() cerebro.broker.setcash(550000.0) data123 = bt.feeds.MarketStore( symbol='BTC', query_timeframe='1Min', timeframe=bt.TimeFrame.Minutes, ) cerebro.adddata(data123) cerebro.addstrategy(Master) cerebro.run() print('finished') if __name__ == '__main__': runstrat()
output
2018-06-03 12:00:00 7685.13 2018-06-03 12:01:00 7685.13 2018-06-03 12:02:00 7685.13 2018-06-03 12:03:00 7685.13 2018-06-03 12:04:00 7685.13 2018-06-03 12:05:00 7685.12 2018-06-03 12:06:00 7685.12 2018-06-03 12:07:00 7681.01 2018-06-03 12:08:00 7681.01 2018-06-03 12:09:00 7681.01 finished