## 原型

```python
get_trade_detail_data(accountID, strAccountType, strDatatype, strategyName)
```

## 释义

get_trade_detail_data 是 QMT 内置 Python 中用于查询账号资金信息、委托记录等的接口。

研究：官方目录未明确；回测：官方目录未明确；模拟：官方目录未明确；实盘：官方目录未明确。

## 参数

| 参数 | 是否必填 | 官方原始定义 |
|---|---:|---|
| `accountID` | 是 | accountID |
| `strAccountType` | 是 | strAccountType |
| `strDatatype` | 是 | strDatatype |
| `strategyName` | 是 | strategyName |

## 返回值

以实际接口返回和下方详细说明为准。

## 示例

```python
python返回值

#coding:gbk

account = '800174' # 在策略交易界面运行时，account的值会被赋值为策略配置中的账号，编辑器界面运行时，需要手动赋值；编译器环境里执行的下单函数不会产生实际委托

def init(ContextInfo):

pass

def handlebar(ContextInfo):

if not ContextInfo.is_last_bar():

return

orders = get_trade_detail_data(account, 'stock', 'order')

print('查询委托结果：')

for o in orders:

print(f'股票代码: {o.m_strInstrumentID}, 市场类型: {o.m_strExchangeID}, 证券名称: {o.m_strInstrumentName}, 买卖方向: {o.m_nOffsetFlag}',

f'委托数量: {o.m_nVolumeTotalOriginal}, 成交均价: {o.m_dTradedPrice}, 成交数量: {o.m_nVolumeTraded}, 成交金额:{o.m_dTradeAmount}')

deals = get_trade_detail_data(account, 'stock', 'deal')

print('查询成交结果：')

for dt in deals:

print(f'股票代码: {dt.m_strInstrumentID}, 市场类型: {dt.m_strExchangeID}, 证券名称: {dt.m_strInstrumentName}, 买卖方向: {dt.m_nOffsetFlag}',

f'成交价格: {dt.m_dPrice}, 成交数量: {dt.m_nVolume}, 成交金额: {dt.m_dTradeAmount}')

positions = get_trade_detail_data(account, 'stock', 'position')

print('查询持仓结果：')

for dt in positions:

print(f'股票代码: {dt.m_strInstrumentID}, 市场类型: {dt.m_strExchangeID}, 证券名称: {dt.m_strInstrumentName}, 持仓量: {dt.m_nVolume}, 可用数量: {dt.m_nCanUseVolume}',

f'成本价: {dt.m_dOpenPrice:.2f}, 市值: {dt.m_dInstrumentValue:.2f}, 持仓成本: {dt.m_dPositionCost:.2f}, 盈亏: {dt.m_dPositionProfit:.2f}')

accounts = get_trade_detail_data(account, 'stock', 'account')

print('查询账号结果：')

for dt in accounts:

print(f'总资产: {dt.m_dBalance:.2f}, 净资产: {dt.m_dAssureAsset:.2f}, 总市值: {dt.m_dInstrumentValue:.2f}',

f'总负债: {dt.m_dTotalDebit:.2f}, 可用金额: {dt.m_dAvailable:.2f}, 盈亏: {dt.m_dPositionProfit:.2f}')

position_statistics = get_trade_detail_data(account,"FUTURE",'POSITION_STATISTICS')

for obj in position_statistics:

if obj.m_nDirection == 49:

continue

PositionInfo_dict[obj.m_strInstrumentID+"."+obj.m_strExchangeID]={

"持仓":obj.m_nPosition,

"成本":obj.m_dPositionCost,

"浮动盈亏":obj.m_dFloatProfit,

"保证金占用":obj.m_dUsedMargin

}

print(PositionInfo_dict)
```

## 详细说明

调用方法 get_trade_detail_data(accountID, strAccountType, strDatatype, strategyName)
或不区分策略
get_trade_detail_data(accountID, strAccountType, strDatatype)

### 参数详细说明

| 参数名 | 类型 | 说明 | 备注 |
| --- | --- | --- | --- |
| accountID | string | 资金账号 | 必填 |
| strAccountType | string | 账号类型 可选： / 'FUTURE'：期货 / 'STOCK'：股票 / 'CREDIT'：信用 / 'HUGANGTONG'：沪港通 / 'SHENGANGTONG'：深港通 / 'STOCK_OPTION'：期权 | 必填 |
| strDatatype | string | 要查询数据类型 可选： / ACCOUNT：账号对象或信用账号对象 / POSITION：持仓 / POSITION_STATISTICS：持仓统计 / ORDER：委托 / DEAL ：成交 / TASK：任务 | 必填 |
| strategyName | string | 策略 当用passorder下单时指定了strategyName 参数时，当查询成交和委托时传入同样的strageName，则可以只返回包含strategyName的委托子集或成交子集 | strategyName参数只对成交和委托有效,选填 |

返回 list，list 中放的是对应strDatatype的 Python对象，通过 dir(pythonobj) 可返回某个对象的属性列表。

有五种交易相关信息，包括：

ACCOUNT：账号对象或信用账号对象

POSITION：持仓明细

POSITION_STATISTICS: 持仓统计

ORDER：委托

DEAL：成交

TASK：任务
