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

QMT 两融实盘管理:如何使用 get_debt_contract API 查询负债合约与未还利息明细?

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

问题描述

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

Title: QMT 两融实盘管理:`get_debt_contract` 查询负债合约明细

Question: 如何在信用账户中使用 API 查询具体的负债合约与未还利息明细?

解决方案

QMT 两融实盘管理:使用 get_debt_contract 查询负债合约明细

在融资融券(两融)自动化交易与风控管理中,实时获取信用账户的负债详情至关重要。通过 QMT 平台提供的 get_debt_contract API,开发者可以精准查询账户当前的融资融券负债合约、未还本金、未还利息以及归还截止日等关键数据,从而实现自动还款、风险预警与动态调仓策略。


1. API 接口说明

get_debt_contract(accId)

  • 功能:获取指定信用账户的负债合约明细列表。
  • 参数
    • accId (str):信用资金账号。
  • 返回值
    • 返回包含 StkCompacts(负债合约对象)的 list。可以通过 dir(obj) 查看对象的全部属性。

负债合约对象(StkCompacts)核心属性

属性名 类型 说明
m_strInstrumentID str 证券代码(如 '600000.SH')
m_strInstrumentName str 股票名称
m_strCompactId str 合约编号
m_eCompactType enum 合约类型(融资 / 融券)
m_eCompactStatus enum 合约状态(未归还 / 部分归还等)
m_dRealCompactBalance float 未还合约金额(本金)
m_dRealCompactInterest float 未还合约利息
m_dRealCompactFare float 未还合约费用
m_dCompactInterest float 合约总利息
m_nOpenDate int 合约开仓日期
m_nRetEndDate int 归还截止日期

2. Python 示例代码

以下示例展示了如何在 QMT 的 handlebar 驱动函数中,查询信用账户的所有未还负债合约,并打印详细的负债与利息信息:

#coding:gbk

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

def handlebar(ContextInfo):
    # 仅在最后一根 Bar 执行,避免重复刷屏
    if not ContextInfo.is_last_bar():
        return
    
    # 获取信用账户负债合约明细
    debt_contracts = get_debt_contract(ContextInfo.accid)
    
    if not debt_contracts:
        print("当前账户无负债合约信息")
        return
        
    print(f"=== 账号 {ContextInfo.accid} 负债合约明细 ===")
    total_balance = 0.0
    total_interest = 0.0
    
    for contract in debt_contracts:
        code = contract.m_strInstrumentID
        name = contract.m_strInstrumentName
        compact_id = contract.m_strCompactId
        unrepaid_bal = contract.m_dRealCompactBalance
        unrepaid_int = contract.m_dRealCompactInterest
        ret_date = contract.m_nRetEndDate
        
        total_balance += unrepaid_bal
        total_interest += unrepaid_int
        
        print(f"合约编号: {compact_id} | 标的: {code} {name}")
        print(f"  ├─ 未还本金: {unrepaid_bal:.2f} 元")
        print(f"  ├─ 未还利息: {unrepaid_int:.2f} 元")
        print(f"  └─ 到期截止日: {ret_date}")
        print("-" * 40)
        
    print(f"汇总: 累计未还本金: {total_balance:.2f} 元 | 累计未还利息: {total_interest:.2f} 元")

3. 注意事项与应用场景

  1. 应用场景
    • 自动化还款策略:结合 passorder 中的直接还款(opType 32)或卖券还款(opType 31),优先清偿高利息或即到期的负债。
    • 临期风险控制:监控 m_nRetEndDate,在合约即将到期(例如距 180 天上线仅剩 5 天)时触发自动平仓或提醒。
  2. 调用频率:负债数据需从柜台服务端获取,建议设置定时器或在固定时间点(如开盘前/收盘前)查询,避免高频频繁调用。
  3. 环境模式get_debt_contract 仅在实盘运行模式下生效,回测模式下无真实柜台负债数据。