推送过来的position事件的data是PositionData类, 定义如下, 这里有一个price属性和pnl属性:
@dataclass
class PositionData(BaseData):
"""
Positon data is used for tracking each individual position holding.
"""
symbol: str
exchange: Exchange
direction: Direction
volume: float = 0
frozen: float = 0
price: float = 0
#profit and loss
pnl: float = 0
yd_volume: float = 0
def __post_init__(self):
""""""
self.vt_symbol = f"{self.symbol}.{self.exchange.value}"
self.vt_positionid = f"{self.vt_symbol}.{self.direction.value}"
1, 这里的price属性是不是多次不同价格开仓的平均开仓价? 同理这里的pnl是不是多次不同开仓价下的平均盈亏?
2, 如果1成立的话, 平均开仓价和平均盈亏是交易所推过来的还是vnpy实现的, 如果是vnpy实现的, 未来是否考虑将PositionData类增加策略属性, 扩展成分策略的平均开仓price和平均pnl?
3, 如果1成立的话, 那么其实不用去思考” 如何计算多个策略同一个合约的盈亏”, 推送过来的PositionData就是所有策略同一个合约的盈亏
OffsetConverter类主要功能有两个, 一个是用于保存某合约代码更丰富的持仓信息(之前一直疑问为啥有了PositionData类为啥还要有PositionHolding类, 有点既生瑜何生亮的感觉..); 另一个功能用于转换订单请求, 将冻结仓位、今仓、昨仓、平今、平昨等因素考虑进去, 向交易所报合理的订单. 不过对于新手来说, 这个名字确实让我头大了好一阵子..