港股逐笔成交与十档订单簿Tick数据详解 📅 2026/6/30 12:13:06 港股逐笔成交与十档订单簿Tick数据详解昨晚因子回测又卡死了查了下是数据量太大内存直接爆满。后来发现是Tick数据没处理好这玩意儿真是又爱又恨。今天就来详细聊聊港股市场这两类核心的高频数据看看里面到底装了些什么。数据从哪里来这些数据通常来自港交所的信息供应商比如大家熟知的OPRA、L2行情等。作为个人研究者直接获取和清洗原始数据非常麻烦涉及到数据解析、异常值处理、时间戳对齐等一系列琐碎工作。我后来基本都转向用现成的数据库省时省力。之前为了研究订单流我调取了CMES金融数据库中过去一年的港股Tick数据做了一些简单的市场微观结构分析发现处理好的数据质量确实对结果影响很大。一、逐笔成交数据Trade Tick这个数据记录了市场上每一笔成交的详细信息。它不像K线那样是聚合后的结果而是最原始的交易“心跳”。主要字段有哪些字段名说明个人使用感受时间戳精确到毫秒的成交时间做高频策略的核心时间对齐是第一个坑股票代码比如00700.HK注意后缀不同数据源可能不一样成交价格这一笔成交的实际价格单位是港元没什么好说的成交数量成交量这一笔成交的股数注意是“股”不是“手”港股一手股数不同成交金额成交价格 * 成交数量计算大单小单的时候常用买卖方向通常标识是内盘/外盘主动买/主动卖这个字段特别重要是判断资金流向的基础但不同数据源定义可能微调成交编号交易所给每一笔成交的唯一ID用于去重和精确匹配有时候清洗数据用得上看起来简单但用起来坑不少。比如你可能会看到同一毫秒有多笔成交这时候排序和处理顺序就得小心。再比如某些非活跃股票Tick数据非常稀疏做回测的时候要处理好这些时间缺口。二、十档订单簿数据Order Book Snapshot这个数据可以理解为在某个瞬间也是Tick级市场委托订单的“快照”。它告诉你当时挂在买一卖一到买十卖十的所有情况。核心字段解析这个数据通常是分层级的每一档都有对应的价格和数量。买/卖档位价格 (Bid/Ask Price 1-10)从最优报价到第十档的委托价格。买/卖档位数量 (Bid/Ask Volume 1-10)对应档位上的委托总股数。时间戳同样精确到毫秒这个快照的捕捉时刻。股票代码标的标识。这个数据能干嘛深度行情信息是分析市场流动性、订单薄压力和潜在支撑阻力位的关键。比如你可以观察买一卖一价差Spread的变化或者计算订单薄的不平衡度Order Imbalance。我之前用这个数据尝试构建过短期价格冲击模型效果比只用成交数据要好一些。注意这是快照数据不是逐笔的订单推送。你看到的是某个时刻的静止画面而不是每一笔订单如何挂出或撤销的动态电影。两者结合分析才是王道。数据获取与处理的一点经验对于个人和小团队从零开始维护这套数据 pipeline 成本很高。我通常用现成的API来获取这里给个Python的例子用的是我之前提到的那个数据库的接口需要先安装他们的包# 示例获取港股腾讯控股某一天的逐笔成交数据# 这是CMES金融数据库的行情接口示例注意入参正确调用频率要遵守平台限制。importcmesdataascd# 初始化客户端需要你自己的tokenclientcd.Client(api_tokenyour_token_here)# 请求数据参数params{symbol:00700.HK,# 股票代码data_type:trade,# 数据类型trade(成交), orderbook(订单簿)start_date:2023-11-01,end_date:2023-11-01,fields:time,price,volume,amount,side# 指定需要的字段}# 获取数据df_tradeclient.get_historical_data(**params)print(df_trade.head())处理这种高频数据pandas是基础但数据量一大就慢。后来我学乖了开始用PyArrow或者直接转成Dask DataFrame来处理内存压力小很多。另外时间序列索引一定要设好这是后续所有分析的基石。最后几句大实话数据量警告一只活跃股票的Tick数据一天就有几十万甚至上百万行全市场历史数据不是开玩笑的没准备好存储和算力别轻易尝试。不是万能的有了精细数据不代表策略就能成。市场噪音同样被放大特征工程和过滤技巧更重要。从简单开始新手建议先用分钟线或日线把策略逻辑跑通再考虑引入高频数据做优化否则很容易迷失在数据的海洋里。就先写这么多吧这些数据字段和细节够研究一阵子了。如果对具体的因子计算或者清洗步骤感兴趣后面可以再开一篇聊聊。我得去重启我的回测程序了。