🚀 AI 一键生成 joinquant 策略代码

JoinQuant 平台如何使用 order_value 下单科创板股票?

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

问题描述

请问回测用order_value下单科创板股票怎么写?

ERROR - 订单委托失败:StockOrder(entrust_id=1689589492 security=688247.XSHG mode=OrderValue: _value=1000000.0 style=MarketOrderStyle: _limit_price=0.0 side=long action=open margin=False entrust_time=2023-01-06 13:31:00 cancel_time=None finish_time=None comment= error=科创板市价单需要指定保护限价,取值必须大于 0 且小于 1 万元)

提示:科创板市价单需要指定保护限价,取值必须大于 0 且小于 1 万元

请问这块下单应该如何写呢?

解决方案

在 JoinQuant 平台中,科创板股票(以 688 开头)的交易规则与主板有所不同。当您使用市价单(order_value 默认使用市价单)交易科创板股票时,必须指定保护限价

错误原因分析

您遇到的错误:

error=科创板市价单需要指定保护限价,取值必须大于 0 且小于 1 万元

是因为您在调用 order_value 时,没有传入 style 参数,系统默认使用了普通的市价单,而科创板要求市价单必须带有保护限价。

解决方法

您需要使用 MarketOrderStyle 并传入一个保护限价(limit_price)。

代码示例

假设您要买入价值 1,000,000 元的 688247.XSHG,并且您能接受的最高买入价格(保护价)为 50 元,代码应该这样写:

# 导入需要的下单样式
from jqdata import MarketOrderStyle

# 下单科创板股票,指定保护限价为 50 元
order_value('688247.XSHG', 1000000, style=MarketOrderStyle(50))

如果您是卖出,假设您能接受的最低卖出价格为 40 元:

# 卖出科创板股票,指定保护限价为 40 元
order_value('688247.XSHG', -1000000, style=MarketOrderStyle(40))

科创板保护价逻辑说明

根据 JoinQuant API 文档,科创板保护价的逻辑如下:

  • 市价买入时:成交的最高价格不高于本价格,若最优一档的价格高于该价格,剩余未成交部分撤单。
  • 市价卖出时:成交的最低价格不低于本价格,若最优一档的价格低于该价格,剩余未成交部分撤单。

提示:在实际策略中,您可以通过 get_current_data() 获取该股票的最新价或涨跌停价,动态计算出一个合理的保护价传入 MarketOrderStyle 中,以确保订单能够顺利成交。