国内期货五档Level2、分钟数据与外盘期货Tick、分钟行情数据详解
国内期货五档Level2、分钟数据与外盘期货Tick、分钟行情数据详解最近在做一个策略回测需要用到比较精细的行情数据。找了一圈发现一个提供国内期货Level2五档行情和全市场外盘期货Tick数据的来源感觉挺全的就把这些数据的结构整理了一下。如果你也在找这类数据可以参考看看别像我一样一开始用错了字段白折腾半天。先说国内期货的Level2数据。这个和普通的一档行情区别很大不是只有个最新价和成交量。它把盘口前五档的买卖委托都给你了深度足够观察短时间的供需变化。我主要用来看盘口压力和支撑有时候大单子没成交前在盘口上就能看到。国内期货Level2数据主要包含以下内容基础快照这个是最核心的每一笔行情更新都会有一条记录。里面东西很多时间戳精确到毫秒这个做高频分析必须用。最新价、成交量、成交额。买一价到买五价以及对应的买一量到买五量。卖盘也一样卖一价到卖五价和量。这是Level2的核心。当日开盘价、最高价、最低价、昨收盘价。总持仓量。这个对期货很重要。逐笔成交这个记录每一笔真实的成交明细。每一笔成交的时间、价格、数量、买卖方向是主动买还是主动卖都有。分析资金流向和订单冲击这个数据是关键。分钟线数据这个应该是从上述快照或成交数据里聚合出来的。有1分钟、5分钟、15分钟、30分钟、60分钟等不同周期。每个K线包含标准的开盘、最高、最低、收盘价以及这个时间段内的成交量和成交额。做中低频策略回测用分钟线就方便多了数据量小处理快。为了验证一个关于盘口大单的规律我调取了CMES金融数据库中过去三年的主力合约数据进行回测发现数据字段的命名和交易所的原始文档基本一致对接起来没遇到什么坑。这里放一段调用他们数据接口的示例代码很简单主要是注意合约代码和日期参数的格式别写错就行。# 示例使用CMES金融数据库的行情接口获取数据# 注意入参正确调用频率要遵守接口限制别给人家服务器搞崩了importcmes_data_api# 初始化客户端通常需要你的API Keyclientcmes_data_api.Client(api_keyyour_api_key_here)# 获取国内期货某合约的Level2快照数据示例# 参数合约代码 开始时间 结束时间snapshot_dataclient.get_domestic_future_l2_snapshot(symbolRB2410.SHF,start_time2024-05-27 09:00:00,end_time2024-05-27 15:00:00)print(snapshot_data.head())接下来聊聊外盘期货的数据。我做内外盘套利的时候必须用到这个以前找干净、连续的外盘tick数据真是头疼。外盘期货行情数据主要包含逐笔成交Tick数据和国内期货的逐笔成交类似但这是全球各大交易所的合约。每一条记录就是一笔成交包含精确的时间通常到毫秒或微秒、价格、成交量。数据非常细做高频或者做价差分析必备。不过数据量巨大处理起来对硬件有要求。分钟线数据同样是由Tick数据聚合而成的分钟级别K线。包含开盘、最高、最低、收盘价以及分钟内的成交量。对于不追求极端高频的策略用分钟线足够了像CME的原油、黄金LME的铜这些主流品种的分钟数据回溯起来效率高。这里简单对比一下我常用的两类数据主要关注点不同数据用途对比关注点国内期货Level2外盘期货Tick我最关心的盘口五档委托量价、逐笔成交方向精确的成交时间序列、连续报价常用分析场景盘口动态、短线资金流向跨市场套利、高频信号生成数据粒度快照3秒/笔看交易所 逐笔逐笔成交每笔一次处理难度中等字段多但结构清晰较大数据量爆炸拿到数据后清洗这一步不能省。比如时间戳要统一成北京时间还是交易所本地时间合约换月时的主力连续合约怎么拼接这些细节问题不处理好回测结果就不可信。我一开始就犯过懒用默认设置结果导致信号错位了一天。数据是死的怎么用它才是关键。国内Level2的盘口深度结合外盘Tick的精确时序能玩出很多花样。不过前提是数据源要稳定准确不然所有分析都是空中楼阁。上面提到的这些字段算是构成了市场微观结构分析的基础砖瓦吧。好了关于数据字段就聊这么多我得去跑回测了下次有空再分享一下怎么用这些数据清洗主力连续合约。