目前正在使用试用的回测TqBacktest功能测试实验接口,使用2023年的数据,参数如下:
- symbol = ‘DCE.m2309’
- start = 230705
- end = 230708
在启动后,tick.ts = 1688475604445000000提交空单,
- 通知: 账户 TQSIM, 合约代码:DCE.m2309, 开平:OPEN, 方向:SELL, 委托数量:2, 未成交数量:2, 价格:3974.000000, 状态:ALIVE, 信息:下单成功
之后再多个tick期间,已经存在了多次买单价大于3974.0的情况, 并且买单手数充足:
- Tick: 2023-07-04 21:00:10.945000-1688475610945000000: ask: 3975.0, 187, bid: 3974.0,41, price: 3974.0
- Tick: 2023-07-04 21:00:11.443000-1688475611443000000: ask: 3975.0, 116, bid: 3974.0,141, price: 3974.0
- Tick: 2023-07-04 21:00:11.945000-1688475611945000000: ask: 3976.0, 127, bid: 3975.0,1, price: 3975.0
- Tick: 2023-07-04 21:00:12.445000-1688475612445000000: ask: 3976.0, 128, bid: 3975.0,158, price: 3976.0
并且最后订单在如下tick成交:
- Tick: 2023-07-04 21:00:13.445000-1688475613445000000: ask: 3977.0, 152, bid: 3976.0,211, price: 3976.0
后续核对持仓数据和原始订单对象的引用,确实使用了 3976.0 的价格作为最终的成交价。
我理解不少模拟盘都存在类似的情况,但是有以下三点烦请解答:
- 能否简要说明下模拟盘延迟成交背后的原因?
- 如果是正式的专业版,是否也可能有类似的问题?
- 比较重要的是,这种延迟成交是否会影响到实盘交易?
十分感谢!
李思恒 已回答的问题 2024年9月20日
一个奇怪的现象是,如果加上一些条件断点, 比如在去检查一下tick的bid是否满足交易条件,则可能会将成交提前, 比如之前是3976, 现在加了条件断点则成为了3975。 似乎程序内部存在一些异步之类的时序问题?