get_full_tick — QMT 全推 Tick 数据 API 参考
ContextInfo.get_full_tick 是 QMT 内置 Python 中用于获取最新全推 Tick 数据的函数。调用后立即返回指定证券的当前 Tick 快照,包含最新价、开盘价、最高价、最低价、成交量、成交额以及多档买卖盘信息。与 subscribe_quote 的区别在于,get_full_tick 是主动拉取方式,不会注册回调。
QMT get_full_tick 函数原型与适用环境
【事实】 函数原型:
ContextInfo.get_full_tick(stock_code)
【事实】 适用环境与权限要求:
| 环境 | 是否支持 | 说明 |
|---|---|---|
| 回测环境 | 不适用 | 回测中无实时 Tick 数据 |
| 模拟信号环境 | 不适用 | 信号模式无实时行情 |
| 仿真交易环境 | 支持 | 获取仿真行情的全推 Tick |
| 真实交易环境 | 支持 | 获取实时行情的全推 Tick |
| 所需权限 | 行情权限 | 需在客户端中开通行情权限 |
【解释】 get_full_tick 仅在盘中实时运行环境有效。回测环境中应使用 get_market_data_ex 获取历史 Tick 数据。
QMT get_full_tick 参数详解
stock_code — 证券代码
【事实】 stock_code 为 str 或 list 类型,指定要查询的证券代码。
| 参数类型 | 示例 | 说明 |
|---|---|---|
str |
'600000.SH' |
查询单个证券 |
list |
['600000.SH', '000001.SZ'] |
查询多个证券 |
【建议】 批量查询时传入 list 类型可减少函数调用次数,提高效率。
QMT get_full_tick 返回值结构
【事实】 返回值为 dict 类型,以证券代码为键,以 Tick 数据字典为值。
【事实】 返回值结构:
{
'600000.SH': {
'last_price': 10.52,
'open': 10.50,
'high': 10.55,
'low': 10.48,
'last_volume': 100,
'amount': 1052000.0,
'bid_price': [10.51, 10.50, 10.49, 10.48, 10.47, 0, 0, 0, 0, 0],
'ask_price': [10.52, 10.53, 10.54, 10.55, 10.56, 0, 0, 0, 0, 0],
'bid_volume': [500, 800, 1200, 2000, 3000, 0, 0, 0, 0, 0],
'ask_volume': [300, 600, 1000, 1500, 2500, 0, 0, 0, 0, 0],
'stock_code': '600000.SH',
'time': 20240104093015
}
}
【事实】 Tick 数据字段说明:
| 字段 | 类型 | 含义 |
|---|---|---|
last_price |
float | 最新成交价 |
open |
float | 今日开盘价 |
high |
float | 今日最高价 |
low |
float | 今日最低价 |
last_volume |
int | 最新成交量(单笔) |
amount |
float | 今日累计成交额 |
bid_price |
list[float] | 买价列表,索引 0~9 对应买一至买十 |
ask_price |
list[float] | 卖价列表,索引 0~9 对应卖一至卖十 |
bid_volume |
list[int] | 买量列表,索引 0~9 对应买一至买十 |
ask_volume |
list[int] | 卖量列表,索引 0~9 对应卖一至卖十 |
stock_code |
str | 证券代码 |
time |
int | 时间戳,格式 YYYYMMDDHHMMSS |
【解释】 买卖盘档位数量取决于行情权限。Level-1 行情通常提供 5 档买卖盘,Level-2 行情提供 10 档买卖盘。未使用的档位价格为 0,数量为 0。
QMT get_full_tick 示例代码
获取单个证券的 Tick 数据
# -*- coding: utf-8 -*-
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
# 获取 600000.SH 的最新 Tick 数据
tick_data = ContextInfo.get_full_tick('600000.SH')
if tick_data:
tick = tick_data.get('600000.SH')
if tick:
print(f'证券代码: {tick["stock_code"]}')
print(f'最新价: {tick["last_price"]}')
print(f'开盘价: {tick["open"]}')
print(f'最高价: {tick["high"]}')
print(f'最低价: {tick["low"]}')
print(f'成交额: {tick["amount"]}')
# 打印五档买卖盘
bid_price = tick['bid_price']
ask_price = tick['ask_price']
bid_volume = tick['bid_volume']
ask_volume = tick['ask_volume']
for i in range(5):
if bid_price[i] > 0:
print(f' 买{i+1}: {bid_price[i]} x {bid_volume[i]}')
if ask_price[i] > 0:
print(f' 卖{i+1}: {ask_price[i]} x {ask_volume[i]}')
else:
print('未获取到 Tick 数据')
获取多个证券的 Tick 数据
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
# 批量获取多只证券的 Tick 数据
stocks = ['600000.SH', '000001.SZ', '000002.SZ']
tick_data = ContextInfo.get_full_tick(stocks)
for stock in stocks:
tick = tick_data.get(stock)
if tick:
last_price = tick['last_price']
bid1 = tick['bid_price'][0] if tick['bid_price'] else 0
ask1 = tick['ask_price'][0] if tick['ask_price'] else 0
print(f'{stock}: 最新价={last_price}, '
f'买一={bid1}, 卖一={ask1}')
计算买卖价差和盘口深度
def handlebar(ContextInfo):
if not ContextInfo.is_last_bar():
return
tick_data = ContextInfo.get_full_tick('600000.SH')
tick = tick_data.get('600000.SH')
if tick and tick['last_price'] > 0:
bid_price = tick['bid_price']
ask_price = tick['ask_price']
bid_volume = tick['bid_volume']
ask_volume = tick['ask_volume']
# 买卖价差
if bid_price[0] > 0 and ask_price[0] > 0:
spread = ask_price[0] - bid_price[0]
print(f'买卖价差: {spread}')
# 五档买盘深度
bid_depth = sum(v for v in bid_volume[:5] if v > 0)
ask_depth = sum(v for v in ask_volume[:5] if v > 0)
print(f'五档买盘深度: {bid_depth}')
print(f'五档卖盘深度: {ask_depth}')
# 盘口压力比
if ask_depth > 0:
pressure_ratio = bid_depth / ask_depth
print(f'盘口压力比: {pressure_ratio:.2f}')
if pressure_ratio > 1.5:
print('买盘压力较大,偏向多头')
elif pressure_ratio < 0.67:
print('卖盘压力较大,偏向空头')
QMT get_full_tick 注意事项
【事实】 使用该函数需注意以下事项:
| 注意项 | 说明 |
|---|---|
| 数据时效性 | 返回的是调用时刻的最新快照,非历史数据 |
| 行情权限 | 买卖盘档位数取决于行情权限(Level-1/Level-2) |
| 非交易时间 | 非交易时间段返回的 Tick 数据为上一交易日的最后数据 |
| 停牌证券 | 停牌证券返回的 Tick 数据中价格可能为 0 |
| 数据来源 | 数据来自全推行情,需确保行情源已连接 |
【建议】
- 使用前检查
last_price是否大于 0,以排除停牌或无数据的情况 - 批量查询时传入
list类型可提高效率 - 回测环境中该函数无效,应使用
get_market_data_ex获取历史 Tick 数据 - 如需持续监控行情变化,建议使用
subscribe_quote订阅行情,而非在handlebar中轮询get_full_tick
QMT get_full_tick 与 subscribe_quote 对比
【事实】 两种获取实时 Tick 数据方式的对比:
| 对比项 | get_full_tick |
subscribe_quote |
|---|---|---|
| 获取方式 | 主动拉取(Poll) | 被动推送(Push) |
| 触发时机 | 由策略代码主动调用 | 行情变化时自动触发回调 |
| 数据完整性 | 获取调用时刻的快照 | 每次行情更新都会触发 |
| 适用场景 | 按需查询、低频监控 | 实时监控、高频策略 |
| 资源消耗 | 按需消耗,不调用不消耗 | 持续占用资源 |
| 回测支持 | 不支持 | 不支持 |
【建议】 如果策略需要捕捉每一次行情变化(如高频策略),使用 subscribe_quote;如果仅需在特定时刻查询当前行情(如定时下单),使用 get_full_tick 更合适。
QMT get_full_tick 相关函数
| 函数 | 说明 | 链接 |
|---|---|---|
ContextInfo.subscribe_quote |
订阅实时行情(推送方式) | subscribe_quote |
ContextInfo.unsubscribe_quote |
取消行情订阅 | unsubscribe_quote |
ContextInfo.get_market_data_ex |
获取历史 K 线数据 | get_market_data_ex |
ContextInfo.get_last_price |
获取最新价 | 行情与数据获取 |
ContextInfo.get_bid_price |
获取买盘价格 | 行情与数据获取 |
QMT get_full_tick 来源与更新时间
【事实】 本页面内容基于 QMT 官方文档整理。
| 项目 | 值 |
|---|---|
| 数据来源 | QMT 官方文档 |
| 更新时间 | 2026-08-04 |
| 验证时间 | 2026-08-04 |
| 适用版本 | 以当前客户端版本为准 |