154 浏览
0

两个问题,我的逻辑是在 5min K线上下反手单,限价单开盘买卖平仓,可是在我在开盘的时候平掉了空仓,然后开多
1. 平空

2. 开多

两者下单时间并不一致,虽然价格能对上。这样的情况很多,导致很多下单的时间错乱掉了,一些信号也和向量化回测的结果对不上。
——————————————————————————————————————
还有一个就是未能成交的问题,10:35 发单了,但是一直没成交,最后被撤单了

是不是可以理解为天勤的回测是在进行 tick 级别的回放,并不是普通的向量化回测,而是从头到尾拿一个账户去模拟实盘交易?

chaos 已回答的问题 3天 前
0

不是普通的向量化回测,可以理解成“带撮合过程的账户模拟回测”,但也不要把它理解成简单的“信号一出就按K线价格立刻成交”。

天勤回测是事件驱动的,回测里下单、撤单、成交都要跟着 `api.wait_update()` 往后推进;而且撮合不是只看你这一根 5 分钟 K 线的收盘价。对最小订阅周期的 K 线,回测内部会按生成出来的盘口去做撮合,所以就可能出现你看到的两类现象:

1. 反手时,平空和开多不是同一个时刻完成,看起来时间错开。
2. 限价单价格看着“好像到了”,但按当时撮合条件其实没有成交,后面就撤掉了。

如果你这里是用 `TargetPosTask` 反手,还要再注意一点:`set_target_volume()` 不是调用那一刻立刻把单都发完,它是在后续 `api.wait_update()` 里持续执行;行情变化后,任务还可能先撤掉原来的委托,再按新价格重下,所以回测里看到“平仓先成交,开仓晚一点”或者“挂一会儿最后撤单”是正常的。

所以你的理解大方向是对的:它不是普通向量化回测,而是从头到尾拿一个模拟账户按撮合规则去推进。只是它的推进和成交结果,会受到你订阅的数据周期、下单方式、以及 `TargetPosTask`/撤单重报逻辑影响,因此不一定和你自己写的向量化结果一一对应。

如果你想让结果更细一些,可以试试订阅更小周期的数据,再对比成交时序。

chaos 发表新评论 3天 前

有其他问题欢迎加入官方Q群748265037一起交流

您正在查看1个答案中的1个,单击此处查看所有答案。