刚接触vnpy,在看内置的双均线策略DoubleMaStrategy,其中部分代码如下。
我的问题是,在on_bar中,一开始并没有告诉am移动均线的窗口长度,它怎么知道何时k线数量已经足够计算均线了(if not am.inited)?
def on_bar(self, bar: BarData):
"""
Callback of new bar data update.
"""
# print(bar.datetime,bar.open_price)
am = self.am
am.update_bar(bar)
if not am.inited:
return
fast_ma = am.sma(self.fast_window, array=True)
self.fast_ma0 = fast_ma[-1]
self.fast_ma1 = fast_ma[-2]
slow_ma = am.sma(self.slow_window, array=True)
self.slow_ma0 = slow_ma[-1]
self.slow_ma1 = slow_ma[-2]
cross_over = self.fast_ma0 > self.slow_ma0 and self.fast_ma1 < self.slow_ma1