3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 QMT 平台中,当 get_value_by_order_id 的 strDataType 参数设置为 'DEAL' 时,该函数返回的是单个对象(pythonObj),而不是列表(list)。
根据 QMT 官方 API 文档,get_value_by_order_id 的返回值类型明确为 pythonObj。这意味着:
orderid 只有 1 笔成交,函数会返回这笔成交的 deal 对象。orderid 发生了多次部分成交,get_value_by_order_id 不会返回一个包含所有成交对象的列表。通常情况下,它只会返回该委托对应的最新一笔成交对象。如果您需要获取某个委托号(orderid)对应的所有成交记录,不能依赖 get_value_by_order_id。正确的做法是使用 get_trade_detail_data 函数获取账户的所有成交记录(该函数返回的是 list),然后在 Python 代码中通过匹配委托号(m_strOrderSysID)来进行筛选。
def init(ContextInfo):
ContextInfo.accid = '6000000248'
def handlebar(ContextInfo):
# 假设我们要查询的委托号
target_order_id = '12345678'
# 1. 获取账户所有的成交记录(返回 list)
all_deals = get_trade_detail_data(ContextInfo.accid, 'stock', 'DEAL')
# 2. 筛选出对应委托号的所有成交记录
target_deals = []
for deal in all_deals:
# deal.m_strOrderSysID 是成交对象中记录的委托号
if deal.m_strOrderSysID == target_order_id:
target_deals.append(deal)
# 3. 输出结果
print(f"委托号 {target_order_id} 共有 {len(target_deals)} 笔成交")
for d in target_deals:
print(f"成交时间: {d.m_strTradeTime}, 成交价: {d.m_dPrice}, 成交量: {d.m_nVolume}")
get_value_by_order_id 永远只返回单个 pythonObj。get_trade_detail_data 获取列表后自行过滤。