交易中的Tick是什么?最小变动价位、Tick价值与Tick图详解

交易中的Tick是什么?最小变动价位、Tick价值与Tick图详解
"Tick"是交易中使用最频繁、也最容易混淆的词之一。根据语境,它既可以指最小的价格变动单位,也可以指行情中的一笔成交。两种含义都很重要,并且共同催生了日内交易者最爱用的图表之一:Tick 图。
Tick 的两种含义
1. 作为价格单位的 Tick。 交易所会为每个品种规定最小价格变动,称为最小变动价位(Tick Size)。股票可能以 0.01 美元为单位变动,E-mini 标普 500 期货则以 0.25 个指数点为单位变动。
2. 作为一笔成交(或报价更新)的 Tick。 在行情数据中,一个 Tick 就是一个事件——一笔成交及其价格、数量和时间戳。由这些事件组成的数据流称为 Tick 数据或逐笔数据,详见 Tick数据详解。
最小变动价位与每跳价值
- Tick Size(最小变动价位) = 最小价格增量
- Tick Value(每跳价值) = 一手/一张合约变动一个 Tick 的盈亏金额
每跳价值 = 最小变动价位 × 合约乘数
| 品种 | 最小变动价位 | 合约乘数 | 每跳价值 |
|---|---|---|---|
| E-mini 标普500(ES) | 0.25 点 | 每点 50 美元 | 12.50 美元 |
| 微型 E-mini 标普500(MES) | 0.25 点 | 每点 5 美元 | 1.25 美元 |
| 原油(CL) | 0.01 美元/桶 | 1,000 桶 | 10.00 美元 |
| 黄金(GC) | 0.10 美元/盎司 | 100 盎司 | 10.00 美元 |
| 美股 | 0.01 美元 | 1 股 | 每股 0.01 美元 |
合约规格可能调整,交易前请以交易所公布为准。
一个点等于多少 Tick?
用 1 个点除以最小变动价位:
每点 Tick 数 = 1 / 最小变动价位
ES 期货:1 / 0.25 = 每点 4 个 Tick。原油上涨 1 美元等于 100 个 Tick。外汇市场通常用**点(pip)**计量(多数货币对为 0.0001),很多经纪商还会报价到更小的 0.00001。
什么是 Tick 图?
Tick 图按固定的成交笔数而非固定时间生成新K线。在 233 Tick 图上,每根K线恰好包含 233 笔成交。
| 时间图(如 5 分钟) | Tick 图(如 233 Tick) | |
|---|---|---|
| 何时生成新K线 | 过了 5 分钟 | 发生 233 笔成交 |
| 活跃行情 | K线少,每根信息量大 | K线多,细节更丰富 |
| 清淡行情 | 大量平淡、信息量低的K线 | K线少,噪音更低 |
| 适合 | 各类风格、多周期分析 | 活跃日内交易、剥头皮 |
Tick 图在成交活跃时展开、清淡时压缩,因此能显示真实交易发生在哪里。常见参数有 133、233、512、1000 Tick——具体数字不如保持一致重要。
优缺点
优点: 过滤清淡时段,更早发现动能爆发,适合剥头皮与订单流分析。 缺点: 需要真正的逐笔数据,不适合成交稀少的品种,跨市场比较较难。
用 Python 基于实时逐笔数据生成 Tick 图
生成 Tick 图需要每一笔成交。iTick Tick数据API 通过 WebSocket 推送逐笔成交。以下脚本每 100 个 Tick 聚合成一根 OHLCV K线:
import json
import websocket # pip install websocket-client
TOKEN = "YOUR_API_TOKEN"
TICKS_PER_BAR = 100
bar, count = None, 0
def on_open(ws):
ws.send(json.dumps({"ac": "subscribe", "params": "AAPL$US", "types": "tick"}))
def on_message(ws, message):
global bar, count
msg = json.loads(message)
if msg.get("data", {}).get("type") != "tick":
return
t = msg["data"]
price, size = float(t["ld"]), float(t.get("v", 0)) # 字段名请以 iTick WebSocket 文档为准
if bar is None:
bar = {"open": price, "high": price, "low": price, "close": price, "volume": 0}
bar["high"] = max(bar["high"], price)
bar["low"] = min(bar["low"], price)
bar["close"] = price
bar["volume"] += size
count += 1
if count == TICKS_PER_BAR:
print("新 Tick K线:", bar)
bar, count = None, 0
ws = websocket.WebSocketApp("wss://api.itick.org/stock", header={"token": TOKEN},
on_open=on_open, on_message=on_message)
ws.run_forever(ping_interval=20)
不同资产类别的消息字段请查阅 iTick WebSocket 文档,聚合逻辑对股票、期货和加密货币完全通用。
常见问题
交易中 1 个 Tick 是什么意思? 既可以指品种允许的最小价格变动,也可以指行情数据流中的一笔成交。
ES 一个点是多少个 Tick? 4 个,最小变动价位是 0.25 点。
Tick 和 pip 一样吗? 不完全一样。pip 是外汇的惯用单位(通常 0.0001),Tick 是交易场所允许的最小变动,可能更小。
Tick 图和时间图哪个好? Tick 图适合流动性好的市场中的活跃日内交易者;时间图更通用,更适合多周期分析。
获取逐笔 Tick 数据
Tick 图的准确性取决于背后的 Tick 数据源。iTick 以毫秒级延迟提供股票、期货、外汇和加密货币的逐笔成交与 Level 2 盘口。免费开始。