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

QMT 平台如何通过代码实现两融担保品划转与查询?(附 API 详解)

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

问题描述

qmt 两融自动化进阶:如何通过代码实现担保品划转?
qmt 怎么在融资融券交易中通过 API 进行担保品划转下单?

解决方案

QMT 融资融券自动化进阶:如何通过 Python API 实现担保品划转与查询

在量化交易中,融资融券(两融)业务的自动化操作是许多进阶交易员的核心需求。国信证券 QMT 平台提供了丰富的两融交易接口,支持信用账户的资产查询、负债合约明细获取、可融券查询以及担保品管理。本文将详细介绍如何通过 QMT Python API 实现两融担保品的查询与划转操作。


1. 两融担保品核心 API 介绍

在 QMT 中,与担保品直接相关的 API 主要包括以下几个:

1.1 获取信用账户担保标的明细 get_assure_contract()

  • 用法get_assure_contract(accId)
  • 释义:获取信用账户当前的担保合约明细。
  • 参数accId (string) 信用账户 ID。
  • 返回:包含 StkSubjects 对象的列表,可通过 dir(obj) 查看其属性(如 m_strInstrumentName 担保合约名称、m_dAssureRatio 担保品折算比例等)。

1.2 综合交易下单 passorder() 中的两融操作

在进行两融交易时,passorder 提供了专门的信用交易操作类型(opType):

  • 27:融资买入
  • 28:融券卖出
  • 29:买券还券
  • 30:直接还券
  • 31:卖券还款
  • 32:直接还款
  • 33:信用账号股票买入
  • 34:信用账号股票卖出

1.3 担保品划转的价格类型定义

在底层接口中,QMT 定义了担保品划转的价格类型(EBrokerPriceType):

  • BROKER_PRICE_PROP_COLLATERAL_TRANSFER:对应数值为 107,代表担保品划转

2. Python 代码实现示例

2.1 查询信用账户担保品明细

在进行划转或交易前,通常需要先查询当前账户的担保品状态:

#coding:gbk

def init(ContextInfo):
    # 设定信用交易账号
    ContextInfo.accid = '6000000248' 
    ContextInfo.set_account(ContextInfo.accid)

def handlebar(ContextInfo):
    if ContextInfo.is_last_bar():
        # 获取信用账户担保标的明细
        assure_list = get_assure_contract(ContextInfo.accid)
        print(f"--- 信用账户 {ContextInfo.accid} 担保品明细 ---")
        for obj in assure_list:
            # 打印担保品代码、名称及折算率
            print(f"代码: {obj.m_strInstrumentID}, 名称: {obj.m_strInstrumentName}, 折算比例: {obj.m_dAssureRatio}")

2.2 担保品划转与信用下单

在实际交易中,担保品划转通常需要配合券商柜台的划转指令。在 QMT API 中,可以通过 passorder 传入信用账户进行担保品买入或通过底层价格类型 107 尝试触发划转逻辑:

#coding:gbk

def init(ContextInfo):
    ContextInfo.accid = '6000000248' # 替换为您的真实信用账号
    ContextInfo.set_account(ContextInfo.accid)

def handlebar(ContextInfo):
    if not ContextInfo.is_last_bar():
        return
        
    # 示例:使用信用账号买入担保品股票(opType=33)
    # 参数说明:opType=33 (信用账号股票买入), orderType=1101 (单股单账号普通下单), prType=5 (最新价)
    target_stock = '600000.SH'
    passorder(33, 1101, ContextInfo.accid, target_stock, 5, -1, 100, ContextInfo)
    print(f"已发送信用账户担保品买入委托: {target_stock}")

3. 重要注意事项

  1. 实盘权限限制:担保品划转及两融交易接口(如 get_assure_contract)仅在实盘运行模式下生效,模拟运行或历史回测时无法获取真实的柜台负债与担保品数据。
  2. 账号绑定:必须在 init 函数中调用 ContextInfo.set_account() 绑定您的信用账号,否则后续的回调函数(如 account_callback)将无法接收到主推数据。
  3. 风控与维持担保比例:频繁的担保品划转会影响信用账户的个人维持担保比例m_dPerAssurescaleValue)。在编写自动化划转策略时,务必先通过 get_trade_detail_data 获取 ACCOUNT 类型的信用账户对象,实时监控维持担保比例,避免触发强制平仓风控。