我看offset_converter.convert_order_request()中如果要求锁仓,调用PositionHolding.convert_order_request_lock()。这个方法的逻辑是,比如下单方向是Direction.LONG,只要今日有空头仓位则无论是哪个交易所的订单都是改为开仓,这里对于上期所和能源交易所如果昨天有空头仓位,感觉应该优先平昨,再把剩下的改为开仓吧?
我看offset_converter.convert_order_request()中如果要求锁仓,调用PositionHolding.convert_order_request_lock()。这个方法的逻辑是,比如下单方向是Direction.LONG,只要今日有空头仓位则无论是哪个交易所的订单都是改为开仓,这里对于上期所和能源交易所如果昨天有空头仓位,感觉应该优先平昨,再把剩下的改为开仓吧?
vnpy.trader.converter.py里288,289行的convert_order_request_lock函数里有对这个两个交易所在有昨仓情况下先平昨的处理的
xiaohe wrote:
vnpy.trader.converter.py里288,289行的convert_order_request_lock函数里有对这个两个交易所在有昨仓情况下先平昨的处理的
我看convert_order_request_lock函数的275行的逻辑是如果td_volume不为0,就直接将订单改为开仓并返回了,也就是说即使有昨仓,只要今日有开仓,就不会平昨。
锁仓主要是为了避免平今惩罚,而怎么判断是否平今,怎看今天有没有开仓。这个函数里的td_volume是今天反方向开仓的数量。那如果今天反方向开过仓了再去平那肯定就是平今了。
这个锁仓转换有在官网微信公众号里的vn.py全实战进阶-CTA策略的第32课锁仓转换做具体讲解,感兴趣的话可以去看一下。