VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 8
声望: 0

我看了下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)
Member
avatar
加入于:
帖子: 1446
声望: 102

on_start下执行的是【启动时】的相关操作,所以你这里应该无法开仓。

写在on_tick里,用一个状态变量控制下,收到第一个tick的时候发出委托好了。

Member
avatar
加入于:
帖子: 8
声望: 0

谢谢,看样子也只能这样操作比较合适。

© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

【用户协议】
【隐私政策】
【免责条款】