I've got minute spaced data which I want to perform some testing and analysis on. One idea that I wanted to try involved using the data from the first minute of each day to make decisions on the rest of the day. That means I want to save the data from the first minute and then compare it to current values in the data. this is my data:
and this is what my code looks like right now:
class TestStrategy(bt.Strategy):
def log(self, txt, dt=None):
''' Logging function for this strategy'''
dt = dt or self.datas[0].datetime.date(0)
print('%s, %s' % (dt.isoformat(), txt))
def __init__(self):
self.range = self.datas[0].high-self.datas[0].low
self.datalow = self.datas[0].low
self.datahigh = self.datas[0].high
if self.data.datetime.time() == datetime.time(9, 31):
inithigh=self.datas[0].high
initlow=self.datas[0].low
def next(self):
if self.data.datetime.time() > datetime.time(9, 31):
if self.datalow<initlow:
self.buy()
elif self.datahigh>inithigh:
self.sell()
if __name__ == '__main__':
cerebro = bt.Cerebro()
cerebro.addstrategy(TestStrategy)
data = bt.feeds.GenericCSVData(
dataname="NYSETICK.txt",
separator="\t",
timeframe=bt.TimeFrame.Minutes,
fromdate=datetime.datetime(2019, 2, 14),
todate=datetime.datetime(2018, 2, 14),
dtformat=('%Y-%m-%d'),
tmformat=('%H:%M:%S'),
datetime=0,
time=1,
open=4,
high=5,
low=6,
close=7,
volume=-1,
openinterest=-1,
reverse=True)
cerebro.adddata(data)
cerebro.broker.setcash(100000.0)
print('Starting Portfolio Value: %.2f' % cerebro.broker.getvalue())
cerebro.run()
print('Final Portfolio Value: %.2f' % cerebro.broker.getvalue())
This code yields this error which I haven't yet been able to fix:
Could you help me figure out whats causing the error?