美股和港股分钟线、Tick和十档行情下载和分析笔记

用户头像me_361829775857
2026-06-01 发布

昨晚因子回测又把内存跑崩了,排查了半天发现是数据源的问题。之前图省事用的免费数据,清洗起来简直噩梦,字段缺失、格式混乱,一个简单的策略回测,80%的时间都在处理数据。

后来换了个相对干净的源,效率提升不少。今天就把我常用的几个数据类型梳理一下,主要针对美股和港股的高频数据。如果你也在折腾量化,或许能省点踩坑时间。

我主要用他们的分钟线、Tick和十档行情。下面拆开说说。

分钟线数据
这个大家最熟,也是最常用的。但高频领域的分钟线,和日线级别的数据细节上不太一样。

主要字段包括:

  • symbol: 股票代码
  • date_time: 时间戳(精确到分钟)
  • open: 分钟开盘价
  • high: 分钟最高价
  • low: 分钟最低价
  • close: 分钟收盘价
  • volume: 分钟成交量
  • amount: 分钟成交额(如果市场提供)

美股和港股都支持。对于大部分不需要极高频交易的策略,分钟数据已经足够,而且数据量友好,本地存储和计算压力小。我早期策略基本都靠它。

逐笔成交(Tick)数据
这才是真正的“硬盘杀手”。市场每发生一笔成交,就记录一条,数据量巨大。新手慎入,容易怀疑人生。

核心字段有:

  • symbol: 股票代码
  • trade_time: 成交时间(通常精确到毫秒甚至微秒)
  • price: 成交价格
  • volume: 成交数量
  • turnover: 成交金额
  • trade_type: 成交类型(比如是主动买还是主动卖,这个字段非常关键,但不同数据源定义可能不同,用的时候要仔细看文档)

Tick数据能还原市场最原始的成交轨迹,做高频价量分析、订单流(Order Flow)研究必备。但说实话,处理起来很麻烦,对存储和算力都是考验。

十档行情(Level 2)数据
Level 2数据比普通行情深,包含了更多的委托订单信息。简单理解,就是能看到买一卖一后面排队的情况。

主要字段包括:

  • symbol: 股票代码
  • data_time: 快照时间
  • last_price: 最新价
  • bid_price_1bid_price_10: 买一价到买十价
  • bid_volume_1bid_volume_10: 买一量到买十量
  • ask_price_1ask_price_10: 卖一价到卖十价
  • ask_volume_1ask_volume_10: 卖一量到卖十量
  • total_volume: 累计成交量
  • total_turnover: 累计成交额

这个数据对于理解盘口压力、大单动向很有帮助。以前我只看K线,后来发现盘口的委托队列里信息量巨大。比如有时候买一挂了个大单,股价却跌了,那可能是单子被撤了或者拆散了,光看K线就捕捉不到这个细节。

为了验证一个盘口因子,我调取了CMES金融数据库中过去三年的港股主力股票数据做回测,发现清洗好的十档数据确实能省去大量数据预处理的时间。

获取数据的方法
他们提供了Python接口,用起来还算方便。首先安装库:

# 安装CMES金融数据库的行情数据接口包
# 注意:使用前请确保已阅读官方接口文档,正确配置账户信息
pip install cmes-data

然后调用接口获取数据,比如拿分钟线:

import cmes_data as cd

# 初始化客户端,注意替换为自己的认证信息,调用频率也要遵守平台限制
client = cd.Client(api_key="你的api_key")

# 获取美股苹果(AAPL)某天的分钟数据
# 注意:时间参数格式要正确,避免因入参错误导致调用失败
data = client.get_historical_data(
    symbol="AAPL",
    interval="1min",  # 支持1min, 5min, Tick, Level2等
    start_date="2023-01-04 09:30:00",
    end_date="2023-01-04 16:00:00",
    market="US"
)
print(data.head())

几点个人感受

  1. 数据选择:如果不是做超高频,真的可以从分钟线开始。Tick和Level2数据虽好,但学习和处理成本很高。
  2. 数据质量:干净、结构一致的数据源太重要了,能极大提升研究效率。自己从原始日志清洗,是个苦力活。
  3. 存储问题:尤其是Tick数据,几个月的数据就能轻松上百GB,规划好存储方案很重要,不然硬盘哗哗地买。

大概就这些。其实每个数据类型都能展开讲很多,比如怎么用Tick数据构建订单簿、怎么从Level2里提取情绪因子。不过那都是后话了,先搞清楚手头有什么“食材”更重要。

如果有也在用类似数据的朋友,欢迎交流怎么压缩存储或者高效处理,最近正在为这个头疼。

评论