环境
操作系统: Windows 7
Anaconda版本: Anaconda 4.0.0 Python 2.7 32位
vn.py版本: From 1.5 to latest
Issue类型
Bug
预期程序行为
随意开任意品种的单若干手,如N手,然后挂任意数量的平仓单如M手(M小于等于N),期待Position Monitor冻结量显示数量为M。
实际程序行为
但大多数情况下显示冻结量不对。
重现步骤
随意开任意品种的单若干手,如N手,然后挂任意数量的平仓单如M手(M小于等于N),期待冻结量显示数量为M,但大多数情况下显示数量不对。
CTP文档和vnpy的CTP相关代码中,关于持仓中的Frozen,是这样赋值的:
CTPGateway -> onRspQryInvestorPosition(self, data, error, n, last):
# 读取冻结
if pos.direction is DIRECTION_LONG:
pos.frozen = data['LongFrozen']
else:
pos.frozen = data['ShortFrozen']
但是这样出来的值并不对,我试着将两者交换如下,就得到了正确的结果:
# 读取冻结
if pos.direction is DIRECTION_LONG:
pos.frozen = data['ShortFrozen']
else:
pos.frozen = data['LongFrozen']
因为之前自己写的软件没有太关注这个量,所以我不清楚这到底是以前就一直存在的问题,还是怎么回事,为什么是这样反过来的呢?莫非接口的意思是多头持仓需要平空,所以冻结量是空头冻结?