问题描述:
使用多周期策略,比如15分钟、1小时多周期MA均线,建立2个BarGenerator的实例,建立2个ArrayManager的实例,但MA计算数值比实际值偏小。
代码如下:
class XXXStrategy(CtaTemplate):
...
def init(self, cta_engine, strategy_name, vt_symbol, setting):
....
self.bg = BarGenerator(self.on_bar, 15, self.on_15min_bar) # 15分钟K线生成器
self.bg_1h = BarGenerator(self.on_bar, 60, self.on_1hour_bar) # 1小时K线生成器
self.am = ArrayManager(28) # 15分钟K线数据管理器
self.am_1h = ArrayManager(28) # 1小时K线数据管理器
.....
def on_init(self):
self.load_bar(14)
def on_bar(self, bar: BarData):
"""
"""
self.bg.update_bar(bar)
self.bg_1h.update_bar(bar)
....
def on_1hour_bar(self, bar: BarData):
"""
"""
self.am_1h.update_bar(bar)
.....
def on_15min_bar(self, bar: BarData):
....
self.am.update_bar(bar)
....
def on_tick(self, tick: TickData):
....
self.bg.update_tick(tick) # 更新15分钟K线
self.bg_1h.update_tick(tick) # 更新1小时K线
.....
使用 h1_fast_ma = self.am_1h.sma(self.fast_window, array=True)
h1_slow_ma = self.am_1h.sma(self.slow_window, array=True)
fast_ma = self.am.sma(self.fast_window, array=True)
计数MA均线,但MA计算数值比实际小。
请帮忙,谢谢了。