def on_bar(self, bar: BarData): # 判断新的一天,计算range
am = self.am
am.update_bar(bar)
if not am.inited:
return
self.bars.append(bar)
if len(self.bars) <= 4:
return
else:
self.bars.pop(0)
last_bar = self.bars[-2]
# New Day
# 如果上一根K线的时间为 14:58,NewDay = True
# 如果上一根K线的时间为14:59,
if last_bar.datetime.time() == time(hour=14, minute=58):
self.NewDay = True
if last_bar.datetime.time() == time(hour=14, minute=59):
if self.day_open and self.NewDay == True:
self.QianRi_range = self.ZuoRi_range
self.ZuoRi_range = self.day_range
self.day_range = self.day_high - self.day_low # 计算日range
self.big_range = max(self.day_range,max(self.ZuoRi_range,self.QianRi_range))
self.open_price = bar.open_price
self.NewDay = False
问题:1.如何判断新的一天,这么写对么?有无更好的方法
2.晚上开盘前点开始运行,self.day_open and self.NewDay == True:这个条件就成立了,直接开始运行,前天和大前天的range计算不对,该怎么办?