用Python的交易员 wrote:
请贴下你的BarGenerator初始化部分的代码?以及你用的是标准版的BarGenerator吗,还是自己修改过合成逻辑的
都是用的原版生成器,没有任何修改。k线合成和输出部分的代码详见下方。代码很简单就是合成、赋值、输出,在服务器上莫名的出问题,在自己电脑挂梯子跑就非常正常
def __init__(self, cta_engine, strategy_name, vt_symbol, setting):
""""""
super().__init__(cta_engine, strategy_name, vt_symbol, setting)
self.bg = BarGenerator(self.on_bar, self.minutes, self.on_mutimin_bar)
self.am = ArrayManager(200)
self.num_tick=0
self.mutibar_last=None
def on_init(self):
"""
Callback when strategy is inited.
"""
self.write_log("策略初始化")
self.load_bar(10)
def on_tick(self, tick: TickData):
"""
Callback of new tick data update.
"""
self.bg.update_tick(tick)
if self.mutibar_last:
if self.trading:
self.num_tick+=1
if self.num_tick%100==0 and self.num_tick>0:
self.write_log(f"ticktime:{tick.datetime}, bar_time:{self.mutibar_last.datetime},last_high:{self.mutibar_last.high_price},last_low:{self.mutibar_last.low_price},tick:{tick.last_price}")
def on_mutimin_bar(self, bar: BarData):
""""""
am = self.am
am.update_bar(bar)
if not am.inited:
return
self.mutibar_last = bar
self.write_log("更新 bar:{t}".format(t=bar.datetime))
self.put_event()