3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 miniQMT (XtQuant) 中,connect() 返回 0 说明您的 Python 代码已经成功与 miniQMT 客户端建立了底层通信连接。但是 subscribe() 返回 -1 以及 query_stock_asset() 返回 None,说明客户端无法识别或无权访问您指定的资金账号。
这通常是由以下几个原因引起的,请逐一排查:
您在代码中使用了 StockAccount('*****'),这代表普通股票账户。如果您登录的是信用账户(融资融券账号),必须使用 CreditAccount 类。
from xtquant.xttype import StockAccount; acc = StockAccount('资金账号')from xtquant.xttype import CreditAccount; acc = CreditAccount('资金账号')请检查传入的资金账号字符串是否与 miniQMT 客户端左上角或交易面板中显示的账号完全一致。不要包含多余的空格,也不要误填为客户号或登录账号(有些券商的登录号和资金账号不同)。
XtQuantTrader(path, session_id) 中的 path 必须指向当前正在运行且已登录的 miniQMT 客户端的 userdata_mini 文件夹。如果您的电脑上安装了多个 QMT/miniQMT,或者路径指向了普通的 userdata 文件夹,就会出现连接成功(连到了另一个进程)但找不到账号的情况。
r'D:\国信证券QMT交易端\userdata_mini'虽然您已经登录了 miniQMT,但请检查客户端右下角的连接状态。如果“交易”显示为红色断开状态,API 同样无法订阅和查询资产。请确保客户端内的交易模块已成功连接到券商服务器。
您可以加上账号类型的判断和更详细的打印信息来排查:
from xtquant.xttrader import XtQuantTrader
from xtquant.xttype import StockAccount, CreditAccount
import random
# 1. 确保路径是 userdata_mini
path = r'D:\您的券商QMT安装目录\userdata_mini'
session_id = int(random.randint(100000, 999999))
xt_trader = XtQuantTrader(path, session_id)
# 2. 根据实际情况选择账户类型
account_id = '您的资金账号'
# 如果是普通账户:
acc = StockAccount(account_id)
# 如果是两融账户,请注释上一行并取消注释下一行:
# acc = CreditAccount(account_id)
xt_trader.start()
connect_result = xt_trader.connect()
print('建立交易连接,返回 0 表示连接成功:', connect_result)
if connect_result == 0:
subscribe_result = xt_trader.subscribe(acc)
print('交易回调订阅状态 (0为成功):', subscribe_result)
if subscribe_result == 0:
account_info = xt_trader.query_stock_asset(acc)
if account_info:
print('资产查询成功,总资产:', account_info.m_dBalance)
else:
print('资产查询返回 None,请检查账号是否有资产或是否为信用账户未正确声明。')
else:
print('订阅失败!请严格检查:1.账号是否与客户端一致 2.是否为信用账户 3.path是否指向userdata_mini')