get_trade_detail_data 是 QMT 内置 Python 中用于查询账户交易明细数据的函数,可获取账户资产、持仓、委托记录、成交记录及冻结信息。返回值为对象列表,每个对象包含若干属性字段,可通过点号(.)访问。
QMT get_trade_detail_data 函数原型与适用环境
【事实】 函数原型:
get_trade_detail_data(accountid, datatype, accountType)
【事实】 适用环境与权限要求:
| 环境 | 是否支持 | 说明 |
|---|---|---|
| 回测环境 | 支持 | 返回回测引擎中的模拟数据 |
| 模拟信号环境 | 支持 | 返回信号计算时的账户数据 |
| 仿真交易环境 | 支持 | 返回仿真服务器的交易明细 |
| 真实交易环境 | 支持 | 返回真实交易服务器的交易明细 |
| 所需权限 | 交易权限 | 需在客户端中开通对应账户的交易权限 |
QMT get_trade_detail_data 参数详解
accountid — 账户 ID
【事实】 accountid 为 str 类型,指定要查询的资金账号。该账号需在客户端中已登录并处于连接状态。
【解释】 可通过 ContextInfo.accountid 获取当前策略绑定的账号 ID。
datatype — 数据类型
【事实】 datatype 为 str 类型,指定要查询的数据类别,取值如下:
| 值 | 含义 | 说明 |
|---|---|---|
'ACCOUNT' |
账户资产 | 账户的资金、市值、盈亏等信息 |
'DEAL' |
成交记录 | 当日已成交的委托记录 |
'ORDER' |
委托记录 | 当日已提交的委托记录 |
'POSITION' |
持仓信息 | 当前持仓明细 |
'FROZEN' |
冻结信息 | 冻结的资金和持仓明细 |
accountType — 账户类型
【事实】 accountType 为 str 类型,指定账户的市场类别,取值如下:
| 值 | 含义 |
|---|---|
'STOCK' |
普通股票账户 |
'CREDIT' |
信用(融资融券)账户 |
'FUTURE' |
期货账户 |
【建议】 accountType 需与实际账户类型一致,否则可能无法返回数据或返回错误数据。
QMT get_trade_detail_data 返回值说明
【事实】 返回值为对象列表(list),列表中每个元素是一个对象,包含若干属性字段。属性通过点号访问,如 detail.m_dBalance。
【事实】 如果没有数据,返回空列表 []。
【解释】 该函数返回的是对象而非字典,访问字段时使用点号(.)语法,不能用方括号([])语法。
QMT get_trade_detail_data 各 datatype 返回字段说明
ACCOUNT — 账户资产字段
【事实】 datatype='ACCOUNT' 时,返回对象的字段:
| 字段 | 类型 | 含义 |
|---|---|---|
m_strAccountID |
str | 资金账号 |
m_strBrokerID |
str | 服务机构代码 |
m_dBalance |
float | 总资产(资金+市值) |
m_dAvailable |
float | 可用资金 |
m_dFetchBalance |
float | 可取资金 |
m_dFrozenCash |
float | 冻结资金 |
m_dPositionValue |
float | 持仓市值 |
m_dProfit |
float | 当日盈亏 |
m_dMargin |
float | 保证金(期货/信用) |
m_dFrozenMargin |
float | 冻结保证金 |
m_dAssureAsset |
float | 保证资产 |
m_dFetchBalance |
float | 可取金额 |
POSITION — 持仓信息字段
【事实】 datatype='POSITION' 时,返回对象的字段:
| 字段 | 类型 | 含义 |
|---|---|---|
m_strInstrumentID |
str | 证券代码 |
m_strExchangeID |
str | 交易所代码 |
m_dVolume |
float | 持仓数量 |
m_dCanCloseVolume |
float | 可平/可卖数量 |
m_dOpenCost |
float | 开仓成本 |
m_dPositionCost |
float | 持仓成本 |
m_dPositionProfit |
float | 持仓盈亏 |
m_strOpenDate |
str | 开仓日期 |
m_strExpireDate |
str | 到期日期(期权) |
m_dTradeType |
float | 开平标志 |
ORDER — 委托记录字段
【事实】 datatype='ORDER' 时,返回对象的字段:
| 字段 | 类型 | 含义 |
|---|---|---|
m_strInstrumentID |
str | 证券代码 |
m_strExchangeID |
str | 交易所代码 |
m_strAccountID |
str | 资金账号 |
m_dVolume |
float | 委托数量 |
m_dTradedVolume |
float | 已成交数量 |
m_dPrice |
float | 委托价格 |
m_nOrderStatus |
int | 委托状态(见委托状态枚举) |
m_strInsertDate |
str | 委托日期 |
m_strInsertTime |
str | 委托时间 |
m_strOrderRef |
str | 委托编号 |
m_strOrderSysID |
str | 撮合编号 |
DEAL — 成交记录字段
【事实】 datatype='DEAL' 时,返回对象的字段:
| 字段 | 类型 | 含义 |
|---|---|---|
m_strInstrumentID |
str | 证券代码 |
m_strExchangeID |
str | 交易所代码 |
m_strAccountID |
str | 资金账号 |
m_dVolume |
float | 成交数量 |
m_dPrice |
float | 成交价格 |
m_dTradeAmount |
float | 成交金额 |
m_strTradeDate |
str | 成交日期 |
m_strTradeTime |
str | 成交时间 |
m_strTradeID |
str | 成交编号 |
m_strOrderSysID |
str | 关联的委托编号 |
FROZEN — 冻结信息字段
【事实】 datatype='FROZEN' 时,返回对象的字段:
| 字段 | 类型 | 含义 |
|---|---|---|
m_strInstrumentID |
str | 证券代码 |
m_strExchangeID |
str | 交易所代码 |
m_dFrozenVolume |
float | 冻结数量 |
m_dFrozenAmount |
float | 冻结金额 |
m_strFrozenReason |
str | 冻结原因 |
【建议】 以上字段为常用字段,不同客户端版本可能包含更多或更少字段。具体可用字段以当前客户端版本为准。
QMT get_trade_detail_data 示例代码
查询账户资产
# -*- coding: utf-8 -*-
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
accountid = ContextInfo.accountid
# 查询账户资产
acct_list = get_trade_detail_data(accountid, 'ACCOUNT', 'STOCK')
if acct_list:
acct = acct_list[0]
print(f'总资产: {acct.m_dBalance}')
print(f'可用资金: {acct.m_dAvailable}')
print(f'持仓市值: {acct.m_dPositionValue}')
print(f'当日盈亏: {acct.m_dProfit}')
else:
print('未获取到账户资产数据')
查询持仓信息
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
accountid = ContextInfo.accountid
# 查询所有持仓
pos_list = get_trade_detail_data(accountid, 'POSITION', 'STOCK')
for pos in pos_list:
print(f'代码: {pos.m_strInstrumentID}, '
f'持仓: {pos.m_dVolume}, '
f'可卖: {pos.m_dCanCloseVolume}, '
f'成本: {pos.m_dOpenCost}, '
f'盈亏: {pos.m_dPositionProfit}')
查询委托记录
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
accountid = ContextInfo.accountid
# 查询当日委托
order_list = get_trade_detail_data(accountid, 'ORDER', 'STOCK')
for order in order_list:
print(f'委托: {order.m_strInstrumentID}, '
f'价格: {order.m_dPrice}, '
f'数量: {order.m_dVolume}, '
f'已成交: {order.m_dTradedVolume}, '
f'状态: {order.m_nOrderStatus}, '
f'时间: {order.m_strInsertTime}')
查询成交记录
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
accountid = ContextInfo.accountid
# 查询当日成交
deal_list = get_trade_detail_data(accountid, 'DEAL', 'STOCK')
for deal in deal_list:
print(f'成交: {deal.m_strInstrumentID}, '
f'价格: {deal.m_dPrice}, '
f'数量: {deal.m_dVolume}, '
f'金额: {deal.m_dTradeAmount}, '
f'时间: {deal.m_strTradeTime}')
综合示例:下单前检查资金与持仓
def check_before_buy(ContextInfo, stock_code, price, volume):
"""买入前检查资金是否充足"""
accountid = ContextInfo.accountid
# 查询可用资金
acct_list = get_trade_detail_data(accountid, 'ACCOUNT', 'STOCK')
if not acct_list:
print('无法获取账户信息')
return False
available = acct_list[0].m_dAvailable
cost = price * volume
if available < cost:
print(f'资金不足: 需要 {cost:.2f}, 可用 {available:.2f}')
return False
# 查询已有持仓
pos_list = get_trade_detail_data(accountid, 'POSITION', 'STOCK')
for pos in pos_list:
if pos.m_strInstrumentID in stock_code:
print(f'已有持仓: {pos.m_strInstrumentID}, '
f'数量: {pos.m_dVolume}, '
f'可卖: {pos.m_dCanCloseVolume}')
return True
QMT get_trade_detail_data 注意事项
【事实】 回测环境与实盘环境的数据差异:
| 对比项 | 回测环境 | 实盘环境 |
|---|---|---|
| 账户资产 | 回测引擎模拟计算 | 交易服务器实时返回 |
| 持仓数据 | 回测引擎模拟维护 | 交易服务器实时返回 |
| 委托记录 | 回测引擎模拟生成 | 交易服务器实际记录 |
| 成交记录 | 回测引擎模拟生成 | 交易服务器实际记录 |
| 数据延迟 | 无延迟 | 可能有网络延迟 |
| 字段完整性 | 部分字段可能为空 | 字段完整 |
【建议】 1. 回测中获取的数据可能与实盘不同,策略逻辑不应依赖特定字段的精确值 2. 查询返回空列表时,应检查账户是否已连接、账号类型是否正确 3. 频繁调用该函数可能影响策略性能,建议合理控制查询频率 4. 部分字段在不同客户端版本中命名可能不同,以当前客户端版本为准
QMT get_trade_detail_data 相关函数
| 函数 | 说明 | 链接 |
|---|---|---|
passorder |
下单函数 | passorder |
ContextInfo.get_account |
获取账户信息(封装) | 交易与账户 |
ContextInfo.get_positions |
获取所有持仓(封装) | 交易与账户 |
order_callback |
委托状态变化回调 | 委托回调 |
deal_callback |
成交回报回调 | 委托回调 |
QMT get_trade_detail_data 来源与更新时间
【事实】 本页面内容基于 QMT 官方文档整理。
| 项目 | 值 |
|---|---|
| 数据来源 | QMT 官方文档 |
| 更新时间 | 2026-08-04 |
| 验证时间 | 2026-08-04 |
| 适用版本 | 以当前客户端版本为准 |