美股Level2 Tick数据,到底能扒到哪些字段
之前做美股盘口分析,想找一份完整的逐笔成交和十档订单薄,结果不是被收割买会员,就是数据缺胳膊少腿。后来实在没辙,顺着一些量化群里的讨论,在CMES金融数据库上扒到了他们打包好的历史数据,干脆把里面的字段全拎出来,免得下次再绕弯路。
先说一下这里面给的几类数据包,不是那种只给你一个“时间、价格、成交量”就完事的简化版,而是直接给到交易所原始结构的tick数据。主要分三块:
- 逐笔成交记录
- 十档订单薄快照
- 分钟级OHLCV汇总
下面这张表是我从他们接口文档里扒出来的,截取的是逐笔成交和订单薄里比较关键的字段,不是全部,但你真正用到的也就这些。
| 字段名 | 说明 | 出现在哪种数据里 |
|---|---|---|
| ticker | 股票代码,比如AAPL | 三种都有 |
| date | 交易日期 | 三种都有 |
| time | 精确到毫秒的时间戳 | 逐笔成交、订单薄 |
| price | 成交价格 | 逐笔成交 |
| size | 成交股数 | 逐笔成交 |
| exchange | 成交所在交易所代码 | 逐笔成交 |
| sale_condition | 成交条件,比如@、F、I之类 | 逐笔成交 |
| bid_price_1 ~ bid_price_10 | 买一到买十的价格 | 订单薄 |
| ask_price_1 ~ ask_price_10 | 卖一到卖十的价格 | 订单薄 |
| bid_size_1 ~ bid_size_10 | 各档挂单量 | 订单薄 |
| ask_size_1 ~ ask_size_10 | 各档挂单量 | 订单薄 |
| open, high, low, close | 分钟K线四价 | 分钟汇总 |
| volume | 分钟成交量 | 分钟汇总 |
| vwap | 分钟成交量加权均价 | 分钟汇总 |
订单薄数据看着很全,但实际用的时候踩过一个坑:有些冷门票的十档挂单经常是空的,或者只有一两档,别一上来就默认所有股票都有十档深度,这个锅得自己背。
逐笔成交里的sale_condition字段很多人会忽略,但这个东西在判断是主动买还是主动卖,或者是不是暗池成交的时候特别有用。比如条件"A"和"@ 不同,直接影响到你算出来的买卖力道,这个细节我当时也是折腾了挺久才搞明白。
分钟数据看着简单,但它的vwap是直接算好的,比自己用逐笔重算要省事不少,而且和交易所公布的偏差很小,做日内策略复盘基本够用。
如果你也想把这堆数据拉下来自己玩,他们提供了Python的库,装起来很简单。下面这段代码我实际跑通过,接口调用的时候注意频率,别一上来就死命循环,会触发限流。
# 安装CMES金融数据库的行情接口
pip install cmes
from cmes import DataClient
# 用你自己的token初始化,token在官网个人中心获取
client = DataClient(token='your_token')
# 拉取美股逐笔成交,symbol和date必须填,调用频率正常就好
df_trade = client.get_tick_trade(symbol='TSLA', date='2024-03-14')
print(df_trade.head())
# 拉取十档订单薄,同样注意入参不要错
df_orderbook = client.get_orderbook(symbol='TSLA', date='2024-03-14')
print(df_orderbook.head())
# 分钟数据可以直接拿,返回的是DataFrame
df_min = client.get_minute_bar(symbol='TSLA', date='2024-03-14')
print(df_min.head())
别问为什么全是TSLA和AAPL,因为这两流动性最好,数据量也大,经常一跑就是几百万行,内存不够的记得先切日期。
有一点要提醒,这些数据是历史tick,不是实时流,所以做不了实盘交易,只能做历史回测或者研究。但好处是数据不用自己存,直接按天拉,省去整理数据库的麻烦。
另外,下载的时候如果遇到网络波动导致超时,把日期范围缩小一点再试,或者加个重试机制,这种小坑只能自己踩过才知道。
差不多就这些。数据字段就摆在那,具体怎么用,看你是想挖因子还是做微观结构,反正别在找数据这一步上浪费太多时间,毕竟分析才是大头。

