vn.py官网
Veighna量化社区 | 你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 39
声望: 0

TradeData的数据结构如下:
@dataclass
class TradeData(BaseData):
"""
Trade data contains information of a fill of an order. One order
can have several trade fills.
"""

symbol: str
exchange: Exchange
orderid: str
tradeid: str
direction: Direction = None

offset: Offset = Offset.NONE
price: float = 0

volume: float = 0
datetime: datetime = None

def __post_init__(self):
    """"""
    self.vt_symbol = f"{self.symbol}.{self.exchange.value}"
    self.vt_orderid = f"{self.gateway_name}.{self.orderid}"
    self.vt_tradeid = f"{self.gateway_name}.{self.tradeid}"

它是不包含昨仓信息的。但是Offset的信息里面有:
class Offset(Enum):
"""
Offset of order/trade.
"""
NONE = ""
OPEN = "开"
CLOSE = "平"
CLOSETODAY = "平今"
CLOSEYESTERDAY = "平昨"

看这个Offset,如果trade.offset.value == "平今",那trade.volume肯定是今仓数量,trade.offset.value == "平昨",那trade.volume肯定是昨仓数量。那么问题来了,如果返回的信息是trade.offset.value == "平",我又想知道这时候trade.volume里包含的昨仓信息,如果实现了?

trade.offset.value == "平" or trade.offset.value == "平今" or trade.offset.value == "平昨"

Member
avatar
加入于:
帖子: 2875
声望: 200

只有上期所才有指定的平今平昨指令,所以官方版本只对上期所做了指定的平仓处理

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

xiaohe wrote:

只有上期所才有指定的平今平昨指令,所以官方版本只对上期所做了指定的平仓处理
找到解决办法了,启动时通过
position = self.get_position_detail()
self.today_long_volume = position.long_td
self.yesterday_long_volume = position.long_yd
self.today_short_volume = position.short_td
self.yesterday_short_volume = position.short_yd
查询到初始仓位;
然后再trade中在通过以上方式查询仓位,对比下就知道今仓和昨仓的变化了,当时我以为冻结会影响,结果测试发现冻结的仓位不会影响昨仓和今仓的量。

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

沪公网安备 31011502017034号

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