以下是vnpy.trader.converter里PositionHolding里的convert_order_request_lock函数,为什么第二个if判断的时候,需要区分标的交易所是否为上期/上期能源?我理解即使是上期所标的,在锁仓的情况下也是可以直接通过开仓的方式锁仓的?
`def convert_order_request_lock(self, req: OrderRequest) -> List[OrderRequest]:
""""""
if req.direction == Direction.LONG:
td_volume: int = self.short_td
yd_available: int = self.short_yd - self.short_yd_frozen
else:
td_volume: int = self.long_td
yd_available: int = self.long_yd - self.long_yd_frozen
close_yd_exchanges: Set[Exchange] = {Exchange.SHFE, Exchange.INE}
# If there is td_volume, we can only lock position
if td_volume and self.exchange not in close_yd_exchanges:
req_open: OrderRequest = copy(req)
req_open.offset = Offset.OPEN
return [req_open]
# If no td_volume, we close opposite yd position first
# then open new position
else:
close_volume: int = min(req.volume, yd_available)
open_volume: int = max(0, req.volume - yd_available)
req_list: List[OrderRequest] = []
if yd_available:
req_yd: OrderRequest = copy(req)
if self.exchange in close_yd_exchanges:
req_yd.offset = Offset.CLOSEYESTERDAY
else:
req_yd.offset = Offset.CLOSE
req_yd.volume = close_volume
req_list.append(req_yd)
if open_volume:
req_open: OrderRequest = copy(req)
req_open.offset = Offset.OPEN
req_open.volume = open_volume
req_list.append(req_open)
return req_list`