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

joinquant 平台如何使用 order_target_value 实现目标价值调仓?(附 Python 代码)

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: joinquant 目标价值调仓:使用 order_target_value 调整股票权重

Question: 如何在 joinquant 中把个股持仓精确调整到指定的金额价值?

解决方案

joinquant 目标价值调仓:使用 order_target_value 调整股票权重

在 JoinQuant(聚宽)量化交易平台中,若需要将某只股票或标的的持仓调整到固定的目标金额(如将持仓调整至 10,000 元,或清仓调至 0 元),可以使用系统提供的交易 API 函数 order_target_value


1. 函数定义与参数说明

order_target_value 用于调整标的持仓到指定的总价值。

函数签名:

order_target_value(security, value, style=None, side='long', pindex=0, close_today=False)

参数解析:

  • security: 标的代码(如 '000001.XSHE')。
  • value: 期望的标的最终价值(单位:元)。
    • value = 0:表示卖出该标的的所有持仓(清仓)。
    • value > 0:系统会自动计算当前持仓价值与目标价值的差额进行增减仓。
  • style: 下单方式,默认为 None(即 MarketOrderStyle 市价单)。也可指定 LimitOrderStyle(price) 限价单。
  • side: 持仓方向,'long'(多单)或 'short'(空单,股票/基金暂不支持空单)。
  • pindex: 多仓位时的子仓位索引,默认为 0
  • close_today: 平今字段,仅对部分期货交易所生效。

返回值:

  • 成功创建委托则返回 Order 对象,失败则返回 None

2. 核心使用示例

以下示例展示了如何在策略中将股票持仓调整至指定的金额:

import jqdata

def initialize(context):
    # 设置基准与真实价格模式
    set_benchmark('000300.XSHG')
    set_option('use_real_price', True)
    g.security = '000001.XSHE'
    # 定时运行
    run_daily(rebalance, time='9:30')

def rebalance(context):
    security = g.security
    
    # 示例1:将平安银行的持仓价值直接调整为 10,000 元
    order_target_value(security, 10000)
    log.info("已将股票 %s 的持仓价值调整至 10,000 元" % security)
    
    # 示例2:清仓某只股票(将目标价值设为 0)
    # order_target_value(security, 0)

3. 注意事项与常见问题

  1. 订单撤销规则:使用 order_target_value 下单时,若该标的当前存在未完成的挂单,系统会自动取消先前的未完成订单。
  2. 最小交易单位限制:A 股买入时受 100 股(一手)整数倍限制,系统在根据目标价值计算所需股数时会自动调整到符合交易所规则的股数,可能导致最终成交价值与设定的 value 有微小偏差。
  3. 资金与持仓限制
    • 若目标价值大于当前持仓且可用资金不足,系统会按最大可用资金限制下单。
    • 股票停牌或跌停时可能导致调仓指令无法成交。
  4. 科创板限制:若对科创板股票(如 '688001.XSHG')使用市价单调仓,建议指定保护价:order_target_value('688001.XSHG', 10000, style=MarketOrderStyle(10.0))