前言
今天想要和大家分享的一个问题是委托的数量和盘口中的volume交易量是不一致的!
一、问题描述
回测的时候,客户的委托数量和当时获取行情内volume获取值不一样,并且成交撮合和委托对不上!
14:36:00 WARNING Order Cancelled: market order 515120.XSHG volume 40000 is larger than 25.0 percent of current bar volume, fill 4800.0 actually
14:37:00 INFO 挂卖出 515120.SS 40000 0.697 bar量: 2504200.0 bar金额 1742924.0 2023-03-21 06:37:00+00:00
二、解决方案
1、当时是14:36进行的委托,14:37进行撮合交易,但是成交数量和bar盘口对不上!
2、检查交易日志,14:36委托40000股,查看委托价格,和14:36的price价格一致!当时盘口volume为19300
为了更好的模拟真实成交,按照set_volume_ratio默认比例0.25成交,成交4800股,即14:36进行委托,当前周期满足,则正常进行撮合,不是在下一分钟进行撮合成交。
3、回测内模拟撮合逻辑为:
1.卖出价<=当前周期最新价,按当前周期最新价成交;买入价>=当前周期最新价,按当前周期最新价成交
2.分钟级别回测,周期为分钟,即取分钟线数据;日级别回测,周期为日,即取日线数据;
3.当前周期没成交的订单会挂单,直至价格符合要求,进入撮合逻辑;未完成的订单可用get_open_orders函数查看;
4.如果到盘后事件仍未成交的订单会被清空,打印日志WARNING - Order Rejected: 600570.XSHG can not match. Market close。
结语
ptrade的渠道可以通过《ptrade开通详则》来获取,感谢看到这里,如果有更多疑问欢迎在评论区提出!