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

比如我要开多头5手,但是现在有-3手空头,这样只会平掉这3个空头,没有再补开2手多头
如果同一个vt_symbol有多种不同策略在交易,那这样子所有策略的持仓都会乱掉了

    def send_order(
        self,
        algo: SpreadAlgoTemplate,
        vt_symbol: str,
        price: float,
        volume: float,
        direction: Direction,
        lock: bool
    ) -> List[str]:
        """"""
        holding = self.offset_converter.get_position_holding(vt_symbol)
        contract = self.main_engine.get_contract(vt_symbol)

        if direction == Direction.LONG:
            available = holding.short_pos - holding.short_pos_frozen
        else:
            available = holding.long_pos - holding.long_pos_frozen

        # If no position to close, just open new
        if not available:
            offset = Offset.OPEN
        # If enougth position to close, just close old
        elif volume < available:
            offset = Offset.CLOSE
        # Otherwise, just close existing position
        else:
            volume = available
            offset = Offset.CLOSE
Member
avatar
加入于:
帖子: 15
声望: 3

帖子删不掉?
看了SpreadTakerAlgo的代码,如果只平掉了3手,后面会再重新下2手的单,从更上层解决了这个问题。

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

沪公网安备 31011502017034号

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