🚀 AI 一键生成 qmt 策略代码

QMT 平台如何获取股票成交时间?解决 get_history_trade_detail_data 未定义报错

qmt | 发布时间: 2026/5/27
以下内容由 EasyQuant 生成。

问题描述

get_history_trade_detail_data

【2025-03-21 11:08:42.876】 start back test mode
【2025-03-21 11:08:42.876】 0D:\quant\国金 QMT 交易端模拟\python\函数测试用.py_SH00030075NameError:name 'get_history_trade_detail_data' is not defined
【2025-03-21 11:08:42.877】 Traceback (most recent call last):

File "", line 49, in handlebar

NameError: name 'get_history_trade_detail_data' is not defined
我的券商版为什么提示没有这个函数?哪位大神帮帮忙,想要获取股票成交的时间

解决方案

错误原因分析

在 QMT 平台的 Python API 中,并没有 get_history_trade_detail_data 这个函数,因此在调用时会抛出 NameError: name 'get_history_trade_detail_data' is not defined 的错误。

如果您想要获取账户的交易明细(包括股票的成交时间),应该使用 QMT 官方提供的 get_trade_detail_data 函数。

正确的函数:get_trade_detail_data

get_trade_detail_data 函数用于获取交易明细数据,包括持仓、委托、成交、账号和任务信息。

函数用法

get_trade_detail_data(accountID, strAccountType, strDatatype, strategyName)
# 或不区分策略
get_trade_detail_data(accountID, strAccountType, strDatatype)

参数说明

  • accountIDstring,资金账号。
  • strAccountTypestring,账号类型。股票账户填 'STOCK',信用账户填 'CREDIT',期货填 'FUTURE' 等。
  • strDatatypestring,数据类型。要获取成交信息,请填 'DEAL'
  • strategyNamestring,(可选)策略名,用于过滤特定策略的成交。

返回值

返回一个包含 Python 对象的列表(list)。当 strDatatype'DEAL' 时,返回的是 成交对象(deal) 列表。

如何获取股票成交时间?

在返回的成交对象(deal)中,包含以下两个属性用于表示成交时间:

  • m_strTradeDate:成交日期(如 "20231025")
  • m_strTradeTime:成交时间(如 "14:30:00")

示例代码

以下是一个完整的示例,展示如何在 handlebar 中获取并打印股票的成交时间:

#coding:gbk

def init(ContextInfo):
    # 设置您的资金账号
    ContextInfo.accid = '您的资金账号'
    ContextInfo.set_account(ContextInfo.accid)

def handlebar(ContextInfo):
    # 获取股票账户的成交明细
    deal_list = get_trade_detail_data(ContextInfo.accid, 'STOCK', 'DEAL')
    
    if deal_list:
        for deal_obj in deal_list:
            # 获取证券代码
            stock_code = deal_obj.m_strInstrumentID
            # 获取成交日期
            trade_date = deal_obj.m_strTradeDate
            # 获取成交时间
            trade_time = deal_obj.m_strTradeTime
            # 获取成交均价
            trade_price = deal_obj.m_dPrice
            # 获取成交数量
            trade_volume = deal_obj.m_nVolume
            
            print(f"代码: {stock_code}, 成交日期: {trade_date}, 成交时间: {trade_time}, 价格: {trade_price}, 数量: {trade_volume}")
    else:
        print("当前无成交记录")

注意事项

  1. 运行模式get_trade_detail_data 函数在实盘运行模拟运行模式下有效。在回测模式下,由于是虚拟撮合,该函数可能无法返回真实的成交明细。
  2. 属性查看:如果您想知道成交对象还有哪些属性,可以使用 print(dir(deal_obj)) 打印出该对象的所有可用属性。