🚀 AI 一键生成 qmt 策略代码

QMT 信用交易:如何查询融资融券账户的担保品明细?

qmt | 发布时间: 2025/12/20
以下内容由 EasyQuant 生成。

问题描述

如何查询信用账户里哪些股票可以作为担保品?

解决方案

在 QMT 量化交易平台中,查询信用账户(两融账户)中哪些股票可以作为担保品(担保标的),需要使用交易函数 get_assure_contract()

该函数返回一个包含担保标的信息的对象列表,通过遍历该列表可以获取具体的股票代码、名称以及折算率等信息。

核心步骤

  1. 设置账户:确保在 init 中设置了信用账户账号。
  2. 调用函数:使用 get_assure_contract(accountID) 获取担保品列表。
  3. 解析数据:遍历返回的对象列表,访问其属性(如 m_strInstrumentID 代码, m_dAssureRatio 折算率等)。

代码实现

以下是一个完整的策略示例,用于查询并打印指定信用账户的所有担保品及其折算率。

# -*- coding: gbk -*-

def init(ContextInfo):
    # 设置资金账号,请替换为您的实际信用账号
    ContextInfo.accid = '6000000248'
    
    # 标记是否已经查询过,防止在handlebar中重复查询
    ContextInfo.has_queried = False

def handlebar(ContextInfo):
    # 仅在最后一根K线(实时行情)且未查询过时执行
    if not ContextInfo.is_last_bar() or ContextInfo.has_queried:
        return

    # 获取信用账户担保标的明细
    # 参数为信用账户ID
    assure_list = get_assure_contract(ContextInfo.accid)
    
    print(f'查询账号 {ContextInfo.accid} 的担保品列表,共找到 {len(assure_list)} 条记录:')
    
    # 遍历返回的列表
    for obj in assure_list:
        # 获取证券代码
        code = obj.m_strInstrumentID
        # 获取证券名称
        name = obj.m_strInstrumentName
        # 获取交易所代码
        exchange = obj.m_strExchangeID
        # 获取担保品折算比例 (例如 0.7 表示 70%)
        ratio = obj.m_dAssureRatio
        
        # 打印详细信息
        print(f"代码: {code}.{exchange}, 名称: {name}, 折算率: {ratio}")
        
    # 标记为已查询
    ContextInfo.has_queried = True

返回对象属性说明

get_assure_contract 返回的是 StkSubjects 对象列表,主要属性如下:

  • m_strInstrumentID: 证券代码(如 '600000')
  • m_strInstrumentName: 证券名称(如 '浦发银行')
  • m_strExchangeID: 交易所代码(如 'SH' 或 'SZ')
  • m_dAssureRatio: 担保品折算比例(关键数据,决定了该股票能充抵多少保证金)
  • m_eAssureStatus: 是否可做担保(状态位)

注意事项

  1. 账号类型:此函数仅适用于信用账户(两融账户),普通股票账户调用可能返回空列表或无效数据。
  2. 调用频率:该函数涉及查询柜台或本地缓存的静态数据,建议在 init 或特定的触发条件下调用,不要在每一根 K 线或每一个 Tick 中频繁调用,以免影响策略性能。
  3. 数据更新:券商的担保品名单和折算率可能会调整,实盘交易中建议每日开盘前或盘中定时更新获取最新数据。

Q&A

Q: get_assure_contract 函数返回的数据是实时的吗?
A: 该数据通常反映的是券商柜台当日的静态设置。担保品名单和折算率通常按日更新,盘中极少变动。

Q: 如何查询某只股票是否可以融资买入(作为融资标的)?
A: 可以使用 get_debt_contract(accId) 查询负债合约,或者查看 StkSubjects 对象中的 m_dFinRatio(融资保证金比例)和 m_eFinStatus(融资状态)属性。虽然 get_assure_contract 主要用于担保品,但返回的对象结构通常包含多维度的两融属性。

Q: 如果返回列表为空是什么原因?
A: 可能原因包括:1. 填写的账号不是信用账号;2. 账号未登录或连接断开;3. 券商柜台数据未同步到本地终端。建议检查交易连接状态。