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

JoinQuant 平台 order_target 下单的撮合价格机制解析

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

问题描述

order_target 撮合价格问题

我在某分钟开始时报单,发现成交价格按该分钟收盘价格基础上加滑点来撮合,我的理解对否?

解决方案

您的理解不完全正确

在 JoinQuant 平台中,order_target 函数默认使用的是市价单(MarketOrder)。根据官方 API 文档的撮合机制说明,具体情况如下:

1. 默认情况(市价单)

如果您没有特别指定 style 参数,order_target 会以市价单发出。

  • 撮合价格:市价单的成交价格是 最新价 + 滑点(买入加滑点,卖出减滑点)。
  • 最新价的定义:在分钟频率的回测或模拟中,当您在某分钟开始时(例如 handle_data 被触发时)下单,此时引擎获取到的“最新价”实际上是上一分钟的最后一个价格(即上一分钟的收盘价),而不是当前这分钟的收盘价。

结论:对于市价单,成交价格是基于上一分钟的收盘价加上滑点,而不是您所说的“该分钟收盘价格”。

2. 指定为限价单(LimitOrderStyle)

如果您在 order_target 中指定了限价单(例如 style=LimitOrderStyle(10.0)):

  • 下单时撮合:系统会先尝试按“最新价(上一分钟收盘价)+ 滑点”进行撮合。如果满足限价条件,则立即成交。
  • 挂单撮合:如果未能完全成交,剩余部分会挂单。挂单的限价单会在本分钟 Bar 结束时,按照本分钟的 Bar 信息(最高价、最低价)尝试撮合。如果满足条件(买价高于最低价,卖价低于最高价),则成交,成交价为您设定的委托价,而不是收盘价加滑点。

总结

  • 市价单:成交价 = 上一分钟收盘价 ± 滑点。
  • 限价单:成交价 = 您设定的委托价(在满足本分钟 Bar 价格区间的前提下)。

因此,系统并不会使用“当前分钟的收盘价 + 滑点”来撮合您的市价单,这主要是为了避免引入未来函数(因为在分钟开始时,当前分钟的收盘价是未知的)。