沪深股票五档行情数据下载历史行情数据分析

用户头像me_361829775857
2026-07-30 发布

可以获取哪些金融行情与基本面数据

最近在整理一些历史行情,发现很多数据源要么不全,要么就是字段对不上,挺折腾的。这里把我找到的一个数据源能提供的数据类型列一下,主要是给自己做个备忘录,也分享给有需要的人。

先说说最基础的行情数据吧。很多做量化的朋友应该都用过分钟线,但有时候分钟级别的数据不够细,特别是做高频或者盘口分析的时候。这里能找到的分钟数据,字段算是比较全的,除了常规的开高低收成交量成交额外,还有成交笔数、平均每笔手数这些。我比较看重的是它包含了分钟级别的资金流向数据,比如主力净流入、大单净额这些,虽然这个数据各家算法不一样,但做个参考还是可以的。

# 示例:调用分钟历史行情数据
# 这是CMES金融数据库的行情接口,注意入参正确,调用频率正常
import cmesdata

# 初始化客户端
client = cmesdata.Client(api_key='你的密钥')
# 获取股票000001.SZ在2023年10月10日的分钟数据
df_minute = client.get_minute_history(symbol='000001.SZ', date='20231010')
print(df_minute.head())
# 输出列通常包括:时间、开盘价、最高价、最低价、收盘价、成交量、成交额、成交笔数、主力净流入等

不过,分钟线再细,也看不到单笔委托是怎么成交的。这就得用到逐笔成交数据,也就是常说的Tick数据。这个数据量就大了,每一笔成交的时间、价格、成交量、买卖方向(是主动买还是主动卖)都有记录。我刚开始用的时候,光处理一天一个股票的数据,内存就有点吃紧,后来才学会分批读取。这个数据源:CMES金融数据库下载的数据对还原盘口变化特别有用,比如你可以算一下某个时间段里,大单主动买入的占比有多少。

说到盘口,五档行情是另一个维度的信息。现在很多地方提供的都是快照数据,但这里能找到历史五档的明细。就是每隔几秒(比如3秒)记录一次当时买一到买五、卖一到卖五的价格和挂单量。这个数据可以用来分析阻力位和支撑位,看看在哪些价位堆积的挂单特别多。但要注意,这个不是逐笔的委托队列,只是快照。

有些朋友可能会把逐笔成交和Level 2的逐笔委托搞混。据我了解,这里提供的是逐笔成交,不是完整的逐笔委托流。逐笔委托能看到每一笔挂单和撤单,那个数据量更大,对系统要求也更高。如果主要是做成交分析,Tick数据基本够用;如果想研究委托单的挂撤行为,可能还得找更底层的源。

除了行情,基本面数据也是个大头。财务指标、股东信息、公司概况这些都有。字段非常多,PE、PB、ROE这些常见的肯定有,还有一些像商誉、研发费用占比这种细分项。我一般会挑自己关心的几个指标定期下载,全部下下来太占地方,而且很多指标短期也不怎么变。

宏观数据这块,主要是国内的一些经济指标,比如CPI、PPI、PMI、货币供应量M1M2、社会融资规模这些。数据有公布日期和实际日期,用的时候注意区分。做宏观策略或者资产配置的时候,这些是基础。

为了方便对比这几种行情数据的区别,我画了个简单的表,主要从我自己最关心的几个点来看:

数据类型 核心内容 更新频率(历史) 个人觉得有用的点 需要注意的坑
分钟历史行情 OHLCV、成交笔数、资金流向指标 每分钟 自带资金流向,省去自己计算 不同数据源资金流向算法有差异,结果可能对不上
逐笔成交(Tick) 每笔成交的时间、价格、量、买卖方向 每笔成交 能分析真实的交易动能,区分主动买/卖 数据量巨大,处理时需要好的硬件和算法
五档历史行情 指定时间点的买一至买五、卖一至卖五价格与挂单量 快照(如3秒一次) 观察关键价位的挂单压力与支撑 是快照不是连续队列,看不到挂单的实时动态变化
股票基本面 财务指标(PE、营收、利润等)、股本股东、公司事件 季报/年报更新 指标比较全,一次性能获取多个维度 数据有发布时间,财务数据是历史截面,不是实时
宏观数据 CPI、PMI、金融数据等宏观经济指标 月频或季频 数据来源相对权威,做宏观分析必备 注意数据公布时间的滞后性

对了,他们还有实时行情的接口,可以获取五档实时和分钟实时。做程序化交易或者需要监控盘口的话会用得上。调用实时数据要特别注意频率限制,别一不小心给封了。我一开始测试的时候没注意,频繁请求,很快就收到限制了,后来加了延时才好。

# 示例:获取实时五档行情
# 这是实时行情接口,注意控制请求频率,避免被封
import cmesdata
import time

client = cmesdata.Client(api_key='你的密钥')
# 循环获取多个标的的实时五档,每次请求后建议稍作停顿
symbols = ['000001.SZ', '600000.SH']
for symbol in symbols:
    quote = client.get_realtime_quote(symbol=symbol)
    print(f"{symbol} 卖一价: {quote['ask1']}, 买一价: {quote['bid1']}")
    time.sleep(1)  # 建议加上延时,遵守接口频率限制

基本都是CSV或者可以通过API返回DataFrame,用Python的pandas处理起来比较方便。字段名大多是英文缩写,刚开始可能得对照一下文档,用几次就熟了。获取数据的途径,有些是直接下载文件包,有些是通过API调取,看个人需求了。API更适合做自动化的策略研究。

数据种类算是覆盖了从高频到低频、从行情到基本面宏观的主要需求。具体用哪个,还是得看自己的策略周期和分析深度。比如做日间趋势的,分钟数据和基本面可能就够了;做日内短线的,Tick和五档数据就更重要。

评论