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

qmt 两融自动化策略:如何编写卖券还款与直接还款逻辑(附 Python 源码)

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

问题描述

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

Title: qmt 两融自动化策略:卖券还款与直接还款的 Python 实现

Question: 如何在 qmt 策略中实现两融账户的自动卖券还款逻辑?

解决方案

qmt 两融自动化策略:卖券还款与直接还款的 Python 实现

在 QMT(迅投/国信 QMT)平台中,进行融资融券(两融)交易时,可以通过 API 自动执行信用账户特有的还款操作,如卖券还款(卖出持仓证券归还融资欠款)和直接还款(使用资金账户可用资金归还融资欠款)。


一、两融交易的核心接口介绍

QMT 通过 passorder 接口统一处理股票、期货及两融交易。针对信用账户,opType(操作类型)参数提供了专门的指令编码:

操作类型说明 opType 值 说明
卖券还款 31 卖出证券,卖出所得资金自动用于偿还融资负债
直接还款 32 直接使用账户内可用资金偿还融资负债
信用账号股票买入 33 使用担保品或融资资金买入股票
信用账号股票卖出 34 普通卖出信用账户持仓股票

二、核心代码实现逻辑

1. 卖券还款实现

通过调用 passorder 并将 opType 设置为 31 实现:

# 卖券还款示例:以最新价卖出 1000 股 600000.SH 用于还款
passorder(31, 1101, ContextInfo.accIDCredit, '600000.SH', 5, -1, 1000, ContextInfo)

2. 直接还款实现

通过调用 passorder 并将 opType 设置为 32 实现:

# 直接还款示例:使用 10000 元可用资金进行直接还款
passorder(32, 1102, ContextInfo.accIDCredit, '600000.SH', 5, -1, 10000, ContextInfo)

三、完整策略源码示例

以下策略展示了如何在 init 中绑定两融资金账号,并在符合条件时查询负债明细并触发自动还款逻辑:

#encoding:gbk
import time

def init(ContextInfo):
    # 设定两融资金账号
    ContextInfo.accIDCredit = '6000000248'
    ContextInfo.set_account(ContextInfo.accIDCredit)
    ContextInfo.has_repaid = False

def handlebar(ContextInfo):
    # 仅在最后一根 Bar 执行
    if not ContextInfo.is_last_bar():
        return
    
    # 避免重复触发
    if ContextInfo.has_repaid:
        return
        
    # 1. 查询信用账户负债合约明细
    debt_contracts = get_debt_contract(ContextInfo.accIDCredit)
    if not debt_contracts:
        print("当前账户无负债合约")
        return
        
    for debt in debt_contracts:
        print(f"合约代码: {debt.m_strInstrumentID}, 未还金额: {debt.dUnRepayBalance}")
        
        # 2. 示例逻辑:如存在特定股票融资负债,执行卖券还款
        if debt.m_strInstrumentID == '600000.SH' and debt.dUnRepayBalance > 0:
            print("触发卖券还款逻辑...")
            # 使用最新价(prType=5)卖出 1000 股进行卖券还款(opType=31, orderType=1101)
            passorder(31, 1101, ContextInfo.accIDCredit, '600000.SH', 5, -1, 1000, '两融自动还款', 1, 'order_repay_01', ContextInfo)
            ContextInfo.has_repaid = True
            break

四、注意事项

  1. 账号设置:必须在 init 中调用 ContextInfo.set_account() 绑定两融账号,否则无法接收主推及查询信用明细。
  2. 委托选价prType 推荐使用对手价(14)或最新价(5),以确保还款委托快速成交。
  3. 下单模式:实盘下单时将 quickTrade 参数设置为 1(立即触发),可避免因等待 K 线走完而延迟还款。