VeighNa量化社区
你的开源社区量化交易平台
jacobxie's Avatar
Member
离线
7 帖子
声望: 0

vnpy的converter里面,在update_trade中,是针对上期所优先平昨仓,再平今仓。但是calculate_frozen里面对仓位冻结都是优先冻结今仓,不足再冻结昨仓。如果是多头昨仓5手,多头今仓2手。平5手的时候下单手数会变成{多头平今2手,多头平昨3手},但是处理仓位冻结的时候,变成{多头昨仓冻结5手,多头今仓冻结0手}?

    def calculate_frozen(self) -> None:
        """"""
        self.long_pos_frozen = 0
        self.long_yd_frozen = 0
        self.long_td_frozen = 0

        self.short_pos_frozen = 0
        self.short_yd_frozen = 0
        self.short_td_frozen = 0

        for order in self.active_orders.values():
            # Ignore position open orders
            if order.offset == Offset.OPEN:  
                continue

            frozen: float = order.volume - order.traded  

            if order.direction == Direction.LONG:
                if order.offset == Offset.CLOSETODAY:
                    self.short_td_frozen += frozen
                elif order.offset == Offset.CLOSEYESTERDAY:
                    self.short_yd_frozen += frozen
                elif order.offset == Offset.CLOSE:
                    self.short_td_frozen += frozen  # 冻结时先冻结今仓,再冻结昨仓,不再匹配上期所模式?

                    if self.short_td_frozen > self.short_td:
                        self.short_yd_frozen += (self.short_td_frozen
                                                 - self.short_td)
                        self.short_td_frozen = self.short_td

On_stop_order里面分成两步骤做了一些处理,但是感觉第一个步骤处理完的变量并没有被缓存下来,第二个步骤条件不可能被满足。能否解答?

`

def on_stop_order(self, stop_order: StopOrder):

    # 只处理撤销或者触发的停止单委托
    if stop_order.status == StopOrderStatus.WAITING:
        return

    # 移除已经结束的停止单委托号
    for buf_orderids in [
        self.buy_vt_orderids,
        self.sell_vt_orderids,
        self.short_vt_orderids,
        self.cover_vt_orderids
    ]:
        if stop_order.stop_orderid in buf_orderids:
            buf_orderids.remove(stop_order.stop_orderid)  # 为什么是在这个临时list中remove,没有去各个orderids的list中remove?


    # 发出新的委托
    # Q:这部分代码真的会被执行吗?
    if self.pos == 0:
        if not self.buy_vt_orderids:
            if self.buy_price:
                self.buy_vt_orderids = self.buy(self.buy_price, self.fixed_size, True)
                self.buy_price = 0
            # 没有再做遍历撤单了,因为锁仓交易可能把一笔拆成好几笔,不做额外的撤单操作

        if not self.short_vt_orderids:
            if self.short_price:
                self.short_vt_orderids = self.short(self.short_price, self.fixed_size, True)
                self.short_price = 0

    elif self.pos > 0:
        if not self.sell_vt_orderids:
            if self.sell_price:
                self.sell_vt_orderids = self.sell(self.sell_price, abs(self.pos), True)
                self.sell_price = 0

    else:
        if not self.cover_vt_orderids:
            if self.cover_price:
                self.cover_vt_orderids = self.cover(self.cover_price, abs(self.pos), True)
                self.cover_price = 0`

看《海龟交易法则》的过程中,觉得作者提到的检验策略信号和回测稳定性/可靠性的几个方法案例都很有有意思,不知道大佬们能不能补充到课程中呢?
比如书里提的E-比率,用来衡量特定策略入场信号对应的趋势周期,其实对匹配合适的止盈止损方法非常有帮助。
又比如作者提到了部分“稳健”的回测指标,通过对原始数据的收益率进行resample或者分段resample生成虚拟价格序列进行模拟回测,可以大幅提高回测结果的统计可靠性。

也不知道这些问题之前论坛里有没有大佬已经解决过了,有知道的也欢迎甩链接

官网机器人客服说有当月主连数据,但是实际用vnpy的datamanager下载还是0条,是没法下载主连吗?

description
description

© 2015-2022 微信 18391752892
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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