Skip to content

QMT get_trade_detail_data 当日明细

手册全文:QMT API

这是主动查询。委托/成交状态变化的主推是 order_callback / deal_callback,见 委托回调怎么写

get_trade_detail_data-查询账号资金信息、委托记录等

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

参数

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

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

有五种交易相关信息,包括:

ACCOUNT:账号对象信用账号对象

POSITION:持仓明细

POSITION_STATISTICS: 持仓统计

ORDER:委托

DEAL:成交

TASK:任务

示例:

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)

开通 / 代写:关注公众号 Kimi量化