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

JoinQuant 聚宽平台:如何设置 order_target / order_value 以当天开盘价或收盘价成交?

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

问题描述

order_target怎么设置用当天收盘价买入股票?

用order_target()或者order_value()函数怎么判断或者设置用当天的开盘价或者收盘价买入股票?

解决方案

在 JoinQuant (聚宽) 平台上,order_target()order_value() 函数默认使用的是市价单 (MarketOrder)。市价单的成交价格是由下单时策略运行的时间点决定的,而不是通过函数参数直接指定“开盘价”或“收盘价”。

根据聚宽的撮合机制:如果在开盘时刻运行,最新价格为开盘价;其他情况下,为上一分钟的最后一个价格。因此,要实现以开盘价或收盘价买入,你需要控制下单函数执行的时间

1. 如何以当天的【开盘价】买入股票?

要以开盘价成交,你需要让下单逻辑在每天开盘时(09:30)执行。你可以使用 run_daily 函数来定时触发。

代码示例:

def initialize(context):
    # 设定要操作的股票
    g.security = '000001.XSHE'
    # 每天 09:30 运行开盘买入逻辑
    run_daily(buy_at_open, time='09:30')

def buy_at_open(context):
    # 在 09:30 下市价单,系统会以当天的开盘价(或集合竞价后的最新价)撮合成交
    order_target(g.security, 1000) 
    # 或者使用 order_value(g.security, 10000)

注:在日级模拟盘中,time='09:30' 的实际运行时间是 9:27~9:30 之间,此时集合竞价已完成,可以获取到开盘价并以开盘价撮合。

2. 如何以当天的【收盘价】买入股票?

A股的收盘时间是 15:00。在聚宽平台中,如果你在 15:00 之后下单,由于已经闭市,订单会被废弃或挂单到第二天。因此,无法以绝对精确的收盘价成交,但你可以通过在**接近收盘的时间(如 14:50 或 14:55)**下单,来获取非常接近收盘价的成交价格。

代码示例:

def initialize(context):
    # 设定要操作的股票
    g.security = '000001.XSHE'
    # 每天 14:55 运行尾盘买入逻辑,获取接近收盘价的成交价
    run_daily(buy_near_close, time='14:55')

def buy_near_close(context):
    # 在 14:55 下市价单,成交价将非常接近当天的最终收盘价
    order_target(g.security, 1000)
    # 或者使用 order_value(g.security, 10000)

总结与注意事项

  1. 时间决定价格order_targetorder_value 默认是市价单,成交价取决于你调用该函数时的盘面最新价。利用 run_daily(func, time='xx:xx') 控制执行时间是关键。
  2. 滑点影响:即使你在 09:30 下单,实际成交价也会受到你设置的滑点 (Slippage) 影响(默认有滑点)。如果你希望回测时完全等于开盘价,可以在 initialize 中将滑点设置为 0:set_slippage(FixedSlippage(0))
  3. 限价单 (LimitOrder):如果你一定要指定某个具体的价格(例如你预测的收盘价),你可以传入 style 参数使用限价单,例如:order_target('000001.XSHE', 1000, LimitOrderStyle(10.5))。但如果市场价格未达到该限价,订单将无法成交。