474 浏览
0

目前正在使用试用的回测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的情况, 并且买单手数充足:

  1. Tick: 2023-07-04 21:00:10.945000-1688475610945000000: ask: 3975.0, 187, bid: 3974.0,41, price: 3974.0
  2. Tick: 2023-07-04 21:00:11.443000-1688475611443000000: ask: 3975.0, 116, bid: 3974.0,141, price: 3974.0
  3. Tick: 2023-07-04 21:00:11.945000-1688475611945000000: ask: 3976.0, 127, bid: 3975.0,1, price: 3975.0
  4. 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 的价格作为最终的成交价。

我理解不少模拟盘都存在类似的情况,但是有以下三点烦请解答:

  1. 能否简要说明下模拟盘延迟成交背后的原因?
  2. 如果是正式的专业版,是否也可能有类似的问题?
  3. 比较重要的是,这种延迟成交是否会影响到实盘交易?

十分感谢!

zig15869 发表新评论 2024年8月23日

一个奇怪的现象是,如果加上一些条件断点, 比如在去检查一下tick的bid是否满足交易条件,则可能会将成交提前, 比如之前是3976, 现在加了条件断点则成为了3975。 似乎程序内部存在一些异步之类的时序问题?