🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant量化平台回测时,分钟级别市价单的成交价格是如何确定的?

joinquant | 发布时间: 2026/5/29
以下内容由 EasyQuant 生成。

问题描述

请问下,回测时报的时间戳是这样,2022-06-10 11:15:00,我的理解及时撮合的话用的11:15一分钟开盘时的价格,可是我看价格成交用的是11:15收盘时的价格。是不是系统是这样设置的?

解决方案

您的观察是非常准确的,JoinQuant(聚宽)系统的撮合机制确实是这样设置的。这主要与聚宽平台的 K线时间戳标识(后对齐) 以及 市价单撮合逻辑 有关。

以下是详细的机制解析:

1. K线时间戳是“后对齐”的

在聚宽平台中,所有的行情K线数据为后对齐,即标识K线的时间为该分钟数据的结束时间

  • 例如:时间戳标识为 11:15:00 的一分钟K线(Bar),它实际包含的数据时间段是 11:14:00 ~ 11:14:59
  • 这根K线的“收盘价”,实际上就是 11:14:59 这一刻的最新价格。

2. 分钟回测的运行时间点

在按分钟回测时,策略(如 handle_data 函数)是在每分钟的第一秒运行的。

  • 当您的策略在 11:15:00 被触发执行时,系统传入的 data 是上一分钟的数据,也就是标识为 11:15:00 的这根K线(包含了 11:14:00 ~ 11:14:59 的行情)。

3. 市价单的撮合价格逻辑

根据聚宽API文档中关于【下单时的撮合逻辑】的说明:

  • 交易价格:最新价 + 滑点。
  • 最新价的定义:如果在开盘时刻(如09:30)运行,最新价格为开盘价。其他情况下,为上一分钟的最后一个价格(或上一个tick的最新价)。

总结您的场景

当您在 11:15:00 触发交易信号并下达市价单时:

  1. 系统会立即进行撮合。
  2. 撮合使用的“最新价”是上一分钟的最后一个价格
  3. 上一分钟的最后一个价格,正好就是标识为 11:15:00 这根K线的收盘价

因此,您看到在 11:15:00 下单,成交价格使用的是 11:15 这根K线的收盘价,这完全符合聚宽系统的底层回测撮合设计。系统假设在 11:15:00 这一刻,您能获取到的最新市场切片价格就是上一分钟结束时的价格。