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

QMT两融交易:query_credit_opvolume 返回值类型详解与使用示例

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

问题描述

请问查询两融最大下单量query_credit_opvolume,他的返回值是股数还是金额啊?急求

万分感谢

解决方案

您好!在 QMT 平台中,使用 query_credit_opvolume 函数查询两融最大可下单量时,其最终回调返回的结果(result)代表的是数量(股数),而不是金额。

核心机制说明

需要特别注意的是,query_credit_opvolume 是一个异步查询函数,它本身不直接返回结果。您必须配合回调函数 credit_opvolume_callback 来接收服务器返回的数据。

完整使用示例

以下是一个完整的代码示例,展示如何发起查询并获取返回的股数:

#coding:gbk
import time

def init(ContextInfo):
    # 设置您的信用资金账号
    ContextInfo.accid = '您的信用账号'
    ContextInfo.set_account(ContextInfo.accid)

def handlebar(ContextInfo):
    # 为了避免频繁查询,可以设置条件,例如只在特定时间或特定K线查询
    if ContextInfo.is_last_bar():
        # 查询担保品买入 600000.SH,限价10元的最大可下单量(股数)
        # 参数说明:账号, 股票代码, 操作类型(33为信用买入), 报价类型(11为限价), 价格, 序列号, ContextInfo
        seq = int(time.time())
        query_credit_opvolume(ContextInfo.accid, '600000.SH', 33, 11, 10, seq, ContextInfo)
        print(f"已发起查询,序列号: {seq}")

# 定义回调函数接收结果
def credit_opvolume_callback(ContextInfo, accid, seq, ret, result):
    """
    查询两融最大可下单量的回调函数
    :param accid: 查询的账号
    :param seq: 发起查询时传入的序列号
    :param ret: 查询状态(1:正常返回, -1:查询中, -2:账号非法, -3:参数非法, -4:服务器报错)
    :param result: 查询到的结果(最大可下单股数)
    """
    if ret == 1:
        print(f"查询成功!账号: {accid}, 序列号: {seq}, 最大可下单量: {result} 股")
    else:
        print(f"查询失败或正在查询中,状态码: {ret}")

⚠️ 注意事项

  1. 查询频率限制:该函数会向服务器发起实时查询,不可频繁调用。官方建议平均查询时间间隔为 30秒一次。如果前面的查询正在进行中,后面的查询将会提前返回。
  2. 批量查询stockCode 参数支持传入 List 类型,可以一次最多查询 200 只股票的两融最大下单量。如果传入 List,price 参数也需要传入长度相同的 List。
  3. 操作类型 (opType):查询时传入的 opType 需与实际交易意图一致(如 27:融资买入, 28:融券卖出, 33:信用账号股票买入 等)。