`ContextInfo.get_full_tick` 是 QMT 内置 Python 中用于获取最新全推 Tick 数据的函数。调用后立即返回指定证券的当前 Tick 快照，包含最新价、开盘价、最高价、最低价、成交量、成交额以及多档买卖盘信息。与 `subscribe_quote` 的区别在于，`get_full_tick` 是主动拉取方式，不会注册回调。

## QMT get_full_tick 函数原型与适用环境

**【事实】** 函数原型：

```python
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 数据字典为值。

**【事实】** 返回值结构：

```python
{
    '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 数据

```python
# -*- 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 数据

```python
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}')
```

### 计算买卖价差和盘口深度

```python
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 |
| 数据来源 | 数据来自全推行情，需确保行情源已连接 |

**【建议】**
1. 使用前检查 `last_price` 是否大于 0，以排除停牌或无数据的情况
2. 批量查询时传入 `list` 类型可提高效率
3. 回测环境中该函数无效，应使用 `get_market_data_ex` 获取历史 Tick 数据
4. 如需持续监控行情变化，建议使用 `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](/docs/qmt/builtin-python/api-reference/contextinfo-subscribe-quote/) |
| `ContextInfo.unsubscribe_quote` | 取消行情订阅 | [unsubscribe_quote](/docs/qmt/builtin-python/api-reference/contextinfo-unsubscribe-quote/) |
| `ContextInfo.get_market_data_ex` | 获取历史 K 线数据 | [get_market_data_ex](/docs/qmt/builtin-python/api-reference/contextinfo-get-market-data-ex/) |
| `ContextInfo.get_last_price` | 获取最新价 | [行情与数据获取](/docs/qmt/builtin-python/api/market-data/) |
| `ContextInfo.get_bid_price` | 获取买盘价格 | [行情与数据获取](/docs/qmt/builtin-python/api/market-data/) |

## QMT get_full_tick 来源与更新时间

**【事实】** 本页面内容基于 QMT 官方文档整理。

| 项目 | 值 |
|------|-----|
| 数据来源 | QMT 官方文档 |
| 更新时间 | 2026-08-04 |
| 验证时间 | 2026-08-04 |
| 适用版本 | 以当前客户端版本为准 |
