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

如何在 QMT 平台使用 order_target_value 实现自动化目标价值调仓?

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

问题描述

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

Title: qmt 目标价值调仓:order_target_value 自动化再平衡实战

Question: 如何使用 order_target_value 快速将持仓股票调整到指定的固定金额?

解决方案

如何在 QMT 平台使用 order_target_value 实现自动化目标价值调仓?

在资产配置和量化交易中,投资者经常需要将特定股票的持仓市值定期或根据触发条件调整到设定的目标金额(即“目标价值调仓”)。QMT 提供了便捷的股票下单函数 order_target_value,可自动计算当前持仓市值与目标市值的差额并执行补仓或减仓操作。


一、order_target_value 函数详解

order_target_value 用于将指定的股票仓位自动调整到目标价值(单位:元)。

1. 运行机制

  • 无持仓时:自动计算对应买入股数(向下调整为 100 股的整数倍)并全额买入至目标金额。
  • 已有持仓时:自动计算当前持仓价值与目标价值的差额。若当前价值小于目标价值,则买入补足差额;若当前价值大于目标价值,则卖出多余持仓。
  • 资金/持仓不足:若可用资金不足或可卖持仓不足,API 将终止下单或按规则限制执行。

2. 函数签名与参数

order_target_value(stockcode, tar_value[, style, price], ContextInfo[, accId])
  • stockcode: 股票代码,如 '000002.SZ'
  • tar_value: 目标金额(元),必须为非负数。如果设为 0,则代表清仓该股票。
  • style: 下单选价类型(字符串),默认为最新价 'LATEST'。可选值包括:
    • 'LATEST': 最新价
    • 'FIX': 指定价(需配合 price 参数)
    • 'COMPETE': 对手价
    • 'MARKET': 市价
  • price: 下单价格(仅在 style='FIX' 时生效)。
  • ContextInfo: 策略全局上下文对象。
  • accId: 资金账号(字符串)。

二、Python 实战代码示例

以下示例展示了如何在 handlebar 中判断调仓条件,并使用 order_target_value 将平安银行(000001.SZ)的持仓调整至固定金额 10,000 元。

#encoding:gbk

def init(ContextInfo):
    # 设定资产账号
    ContextInfo.accID = '600000248'
    ContextInfo.set_account(ContextInfo.accID)
    # 设置股票池
    ContextInfo.set_universe(['000001.SZ'])
    print("策略初始化完成,目标调仓金额:10000 元")

def handlebar(ContextInfo):
    # 仅在最后一根 Bar 上触发调仓逻辑
    if not ContextInfo.is_last_bar():
        return
    
    stock = '000001.SZ'
    target_amount = 10000.0  # 目标调仓金额(元)
    
    # 使用对手价(COMPETE)将 000001.SZ 的仓位自动调整到 10000 元持仓
    print(f"开始执行目标价值调仓,标的: {stock}, 目标市值: {target_amount}")
    order_target_value(stock, target_amount, 'COMPETE', ContextInfo, ContextInfo.accID)

三、注意事项

  1. 最小交易单位:A 股买卖受限于 100 股(1 手)的整倍数限制,实际调仓后的市值可能与绝对目标金额存在微小偏差。
  2. 选价类型结算规则:在回测模式下,除指定价(FIX)外,其他下单选价类型均以当前 K 线的收盘价进行撮合结算。
  3. 账户绑定:在实盘/模拟盘中调用交易函数前,请务必在 init 函数中使用 ContextInfo.set_account() 绑定交易账号。