🚀 AI 一键生成 qmt 策略代码

QMT量化平台查询实时最新价与开盘价的方法(get_full_tick详解)

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

问题描述

关于查询价格请教

1、查持仓股实时最新价用 get_full_tick 即可吗?盘中(10:30、14:45)调用有限制吗?
2、查”今日开盘价”也用 get_full_tick 的 open 字段吗?

解决方案

针对您在 QMT 平台中查询价格的问题,解答如下:

1. 查持仓股实时最新价用 get_full_tick 即可吗?盘中调用有限制吗?

是的,查持仓股实时最新价使用 ContextInfo.get_full_tick() 是非常合适且常用的方法。

  • 获取最新价:调用该函数后,会返回一个字典,您可以通过提取字典中的 lastPrice 字段来获取实时最新价。
  • 盘中调用限制:在盘中(如 10:30、14:45 等交易时段)调用 get_full_tick 没有严格的次数限制。但是,为了保证策略运行的效率和平台的稳定性,建议:
    • handlebar 函数中由行情 tick 驱动调用。
    • 或者使用 ContextInfo.run_time 设置定时器(例如每 3 秒或 5 秒查询一次)。
    • 避免while True 死循环中无休止地高频调用,这可能会导致界面卡顿或 CPU 占用过高。

2. 查“今日开盘价”也用 get_full_tickopen 字段吗?

是的,完全可以。

get_full_tick 返回的字典中包含了丰富的盘口和快照数据,其中的 open 字段即代表该股票当日的开盘价。此外,它还包含 high(最高价)、low(最低价)、lastClose(昨收价)等实用字段。


代码示例

以下是一个在 handlebar 中获取实时最新价和今日开盘价的示例代码:

#coding:gbk

def init(ContextInfo):
    # 设置需要查询的股票池,例如平安银行和万科A
    ContextInfo.stock_list = ['000001.SZ', '000002.SZ']

def handlebar(ContextInfo):
    # 确保只在最新的一根K线上执行,避免在历史回测阶段频繁打印
    if not ContextInfo.is_last_bar():
        return
        
    # 获取全量 tick 数据
    tick_data = ContextInfo.get_full_tick(ContextInfo.stock_list)
    
    for stock in ContextInfo.stock_list:
        if stock in tick_data:
            # 获取最新价
            last_price = tick_data[stock]['lastPrice']
            # 获取今日开盘价
            open_price = tick_data[stock]['open']
            
            print(f"股票代码: {stock}, 实时最新价: {last_price}, 今日开盘价: {open_price}")

补充说明
如果您只需要历史或当天的 K 线级别数据(如日线的开盘价),您也可以使用 ContextInfo.get_market_data_ex 函数获取 1d 周期的 open 字段,但在实盘中获取瞬时快照,get_full_tick 是最高效的选择。