我现在面临的问题是:
def init(self, cta_engine, strategy_name, vt_symbol, setting):
super().init(cta_engine, strategy_name, vt_symbol, setting)
创建5分钟K线合成器
self.bg5 = BarGenerator(
on_bar=self.on_bar,
window=5,
on_window_bar=self.on_5min_bar,
interval=Interval.MINUTE
)
self.am5 = ArrayManager(size=15) # 使用ArrayManager管理5分钟K线
def on_init(self):
"""策略初始化"""
self.write_log("策略初始化")
self.load_bar(5) # 加载10天历史数据
def on_stop(self):
"""策略停止"""
self.write_log("策略停止")
def on_tick(self, tick: TickData):
"""Tick数据更新"""
self.bg5.update_tick(tick)
def on_bar(self, bar: BarData):
"""1分钟K线更新"""
self.bg5.update_bar(bar)
# 确保有足够数据计算
if not self.am5.inited:
return
if self.bg5.bar is None:
return
self.write_log(f" am={len(self.am5.high_array)}")
tempam = self.am5
tempam.update_bar(self.bg5.bar)
如果不删除 on_bar 中所有对 close_array、high_array 等属性的直接修改操作,则5分钟周期内会产生5根5分钟的 am5 K线
正常应该是1根
如果 删除,则出现am5 数据不断减少的局面。这个困境难两全