VeighNa量化社区
你的开源社区量化交易平台
Member
avatar
加入于:
帖子: 27
声望: 1

目前vnpy返回的持仓数据字段只有一个持仓均价,就是昨日的结算价。
有什么办法获取开仓均价呢?

挨个交易日去查询交易记录不太有效率啊,难道一个仓位如果我已经持仓3个月,要查到3月前的成交记录才能计算获得开仓均价?CTP返回的持仓数据中是否包含这一数据呢?

有没有大神了解的,谢谢

Member
avatar
加入于:
帖子: 420
声望: 181

zlengine wrote:

目前vnpy返回的持仓数据字段只有一个持仓均价,就是昨日的结算价。
有什么办法获取开仓均价呢?

挨个交易日去查询交易记录不太有效率啊,难道一个仓位如果我已经持仓3个月,要查到3月前的成交记录才能计算获得开仓均价?CTP返回的持仓数据中是否包含这一数据呢?

有没有大神了解的,谢谢

要实现你的需求,需要自己保存交易后返回的TradeData,按照reference进行统计,按照逐笔方式统计出多、空两个方向上的持仓均价。

Member
avatar
加入于:
帖子: 27
声望: 1

感谢楼上大佬

我看了看Ctp的官方文档,提供的仓位查询函数的回报字段中实际是包括了开仓均价的。是vnpy在处理汇报数据的时候 没有取这个字段。
只需要在vnpy.gateway.ctp.ctp_gateway.py这个文件中,修改onRspQryInvestorPosition这个持仓查询的回报函数,给加上开仓均价字段即可。这样get_all_position获取到的持仓数据就有了open_price这个开仓均价字段

            if position.volume and size:

                cost += data["PositionCost"]
                position.price = cost / (position.volume * size)
                # 增加开仓均价字段
                open_cost = data["OpenCost"]
                position.open_price = open_cost / (position.volume * size)
© 2015-2022 上海韦纳软件科技有限公司
备案服务号:沪ICP备18006526号

沪公网安备 31011502017034号

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