vn.py量化社区
By Traders, For Traders.
Member
avatar
加入于:
帖子: 4
声望: 0

错误发生环境:
VNPY1.91
2019.2.22日,周五,13:55左右
实盘
上期所橡胶

预想的是策略抛出开仓成交后,挂2笔单子去买入平仓,如果tick.lastPrice大于策略计算的止损价,那就挂单全撤,然后将剩余手数加3个滑点止损。

实际情况是挂单全撤之后,策略下的平仓单没有发到ctp,下单返回的orderID是空列表[]

橡胶,下单价格12475,手数3手
策略文件里写的是orderID = self.cover(price, abs(self.pos))
price是12475,abs(self.pos)是3

之后用模拟账户跑过沪镍、沪铝、沪金,onTick止损有时可以发单,有时却又发不了单,并返回空列表。

我猜测,可能是在ctaEngine里的sendOrder出问题了,因为返回的订单列表是空列表,并且未出现 u'策略%s发送委托,%s,%s,%s@%s' 这行log
请问大家碰到过这个问题吗?

Administrator
avatar
加入于:
帖子: 1441
声望: 63

建议在策略里的该行代码下加个print或者writeLog输出,看看是否不发单的时候纯粹是逻辑没有调用到这里(策略写错了)

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

用Python的交易员 wrote:

建议在策略里的该行代码下加个print或者writeLog输出,看看是否不发单的时候纯粹是逻辑没有调用到这里(策略写错了)

群主你好,我这里应该是调用过了策略里的发单函数,但是返回的是空list。图片搞了半天还是发不上,qq私信你了。

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

群主回复:
上期所委托自动转换功能,是依靠委托更新推送的。
快速发单时,之前委托的状态还没更新回来,导致数据转换出错。DataEngine的convertOrderReq,一般最低的时间架构只适用到分钟级别。

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