目前vnpy返回的持仓数据字段只有一个持仓均价,就是昨日的结算价。
有什么办法获取开仓均价呢?
挨个交易日去查询交易记录不太有效率啊,难道一个仓位如果我已经持仓3个月,要查到3月前的成交记录才能计算获得开仓均价?CTP返回的持仓数据中是否包含这一数据呢?
有没有大神了解的,谢谢
目前vnpy返回的持仓数据字段只有一个持仓均价,就是昨日的结算价。
有什么办法获取开仓均价呢?
挨个交易日去查询交易记录不太有效率啊,难道一个仓位如果我已经持仓3个月,要查到3月前的成交记录才能计算获得开仓均价?CTP返回的持仓数据中是否包含这一数据呢?
有没有大神了解的,谢谢
zlengine wrote:
目前vnpy返回的持仓数据字段只有一个持仓均价,就是昨日的结算价。
有什么办法获取开仓均价呢?挨个交易日去查询交易记录不太有效率啊,难道一个仓位如果我已经持仓3个月,要查到3月前的成交记录才能计算获得开仓均价?CTP返回的持仓数据中是否包含这一数据呢?
有没有大神了解的,谢谢
要实现你的需求,需要自己保存交易后返回的TradeData,按照reference进行统计,按照逐笔方式统计出多、空两个方向上的持仓均价。
感谢楼上大佬
我看了看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)