问题描述
使用 get_history_trade_detail_data 时,MameError: 提示错误 name'get_history_trade_detail_data’is not defined
解决方案
在 QMT 平台中遇到 NameError: name 'get_history_trade_detail_data' is not defined 错误,是因为 QMT 官方 Python API 中并没有提供名为 get_history_trade_detail_data 的函数。
如果您想获取交易明细数据(包括持仓、委托、成交、账号资金等信息),您应该使用 QMT 提供的正确 API:get_trade_detail_data。
正确的 API:get_trade_detail_data
get_trade_detail_data 函数用于获取实盘或模拟交易中的各项明细数据。
用法
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,数据类型。可选值:'POSITION':持仓'ORDER':委托'DEAL':成交'ACCOUNT':账号资金'TASK':任务
- strategyName:
string,(可选)策略名,对应passorder下单函数中的参数strategyName的值,只对委托'ORDER'、成交'DEAL'起作用。
返回值
返回一个 list,列表中包含的是 Python 对象。可以通过 dir(obj) 查看对象的属性列表。
示例代码
以下是如何使用 get_trade_detail_data 获取可用资金、当前持仓和历史成交明细的示例:
def init(ContextInfo):
# 设置资金账号
ContextInfo.accid = '您的资金账号'
def handlebar(ContextInfo):
# 1. 查询可用资金
acct_info = get_trade_detail_data(ContextInfo.accid, 'stock', 'account')
for i in acct_info:
print(f"可用资金: {i.m_dAvailable}")
# 2. 查询当前持仓
position_info = get_trade_detail_data(ContextInfo.accid, 'stock', 'position')
for i in position_info:
print(f"持仓代码: {i.m_strInstrumentID}, 持仓数量: {i.m_nVolume}")
# 3. 查询成交明细
deal_info = get_trade_detail_data(ContextInfo.accid, 'stock', 'deal')
for i in deal_info:
print(f"成交代码: {i.m_strInstrumentID}, 成交均价: {i.m_dPrice}, 成交数量: {i.m_nVolume}, 成交时间: {i.m_strTradeTime}")
总结
请将您代码中的 get_history_trade_detail_data 替换为 get_trade_detail_data,并根据需要传入 'ORDER' 或 'DEAL' 参数来获取委托或成交的历史明细记录。