我看了下CTA的示例代码,只要行情订阅成功,都会触发on_tick和合成的k线回调on_bar,如果当时还没有启动策略,trading就是False导致即使buy也不会运行。
所以我想在on_start中buy,但发现cta引擎是先回调on_start,然后再设置trading为True。是不是还是不能成功开仓?
def start_strategy(self, strategy_name: str):
"""
Start a strategy.
"""
strategy = self.strategies[strategy_name]
if not strategy.inited:
self.write_log(f"策略{strategy.strategy_name}启动失败,请先初始化")
return
if strategy.trading:
self.write_log(f"{strategy_name}已经启动,请勿重复操作")
return
self.call_strategy_func(strategy, strategy.on_start)
strategy.trading = True
self.put_strategy_event(strategy)