从 efinance 到 TickFlow:斩获 GitHub 3.4k ⭐ 后,我又开发了免费、稳定、全面的股票、ETF 行情数据服务
📌 太长不看
- 官网:https://tickflow.org
- 文档:https://docs.tickflow.org
- Github:https://github.com/tickflow-org/tickflow —
前言
2021 年,我发布了 efinance,一个专注从东方财富获取股票、ETF 、期货、基金等数据的 Python 库。至今累计获得 3.4k ⭐。开发难度不大,但它的火爆说明了量化研究者对高质量数据的需求非常大。
当时接口没有严格限流,efinance 上手简单、数据齐全,受到广泛好评。可惜到 2025 年上半年,东方财富开始限制匿名接口调用,频繁访问会被阻断,需要验证或审核。通过后又可能被拉入“小黑屋”,反复循环。
AI 的快速发展降低了量化研究门槛,参与人数激增,导致数据提供方带宽成本上升,限流在所难免。但限流并不能阻挡大家的热情,自此,efinance 仓库收到越来越多关于数据稳定性的问题反馈。可见,一个稳定且价格合理的数据源,已经成为量化研究者的刚需。
TickFlow 的诞生
为了解决这一痛点,我和团队启动了新项目 TickFlow,提供覆盖 A 股行情、K 线、财务数据的 API 。目标是:
- 低延迟、高可用
- 让开发者专注策略本身,而非数据抓取
开发过程中,有几十位 GitHub 网友作为早期用户,他们见证了 TickFlow 从 0 到 1 的成长。解决他们的需求,也能覆盖大部分量化研究者的需求。
定价与服务
TickFlow 区分两类用户:
- 免费用户:只需要日 K 级别历史数据
- 高级用户:需要实时行情、分钟级 K 线及全市场覆盖
免费用户无需注册和 API key ;高级用户需注册获取 API key ,以保障流量和权限管理。
产品对比
| 特性 | TickFlow | Tushare | Akshare |
|---|---|---|---|
| 数据稳定性 | ✅ 可靠 | ✅ 可靠 | ❌ 完全爬虫,易中断 |
| 日 K 线 | 全量历史,免费层支持不复权、等差/等比复权,可批量获取 | 全量历史,免费层仅不复权 | 全量历史,复权依赖数据源 |
| 分钟 K 线 | 近一年历史 + 当日实时 | j 近十几年历史+高价订阅实时 K 线 | 仅近几天分钟级 |
| 实时行情 | 全量 A 股、ETF 、指数 | 需付费且昂贵 | ❌ 无可靠实时行情 |
| 接入门槛 | 5 分钟上手,文档齐全,SDK + API 接入 | 低 | 低 |
| 数据完整性 | 历史 K 线、财务、除权因子 | 免费版有限,高阶贵 | 数据缺失多,零散 |
| 开发体验 | 免费套餐长期可用,按需升级 | 免费版受限,高阶贵 | 稳定性差,维护成本高 |
TickFlow 的优势:低门槛、稳定、免费套餐可长期使用、高阶功能按需升级。
快速体验
TickFlow 提供官方 Python SDK,支持 A 股、ETF 、美股、港股、国内期货等。
安装
# 安装完整版(支持 DataFrame 与进度条)
pip install "tickflow[all]" --upgrade
# 安装基础版
pip install tickflow
支持 Python 3.9+,推荐 3.10+。
初始化客户端
免费服务(无需注册)
from tickflow import TickFlow
tf = TickFlow.free() # 免费服务
# 获取日 K 线
df = tf.klines.get("600000.SH", period="1d", count=100, as_dataframe=True)
print(df.tail())
# 获取标的信息
instruments = tf.instruments.batch(symbols=["600000.SH", "000001.SZ"])
print(instruments)
特点:
- ✅ 无需注册
- ✅ 提供历史日 K 线( 1d 、1w 、1M 、1Q 、1Y )
- ✅ 标的信息、交易所、标的池查询
- ❌ 不提供实时行情
- ❌ 不提供分钟级 K 线
完整服务(需注册 API key )
获取 API Key
登录 tickflow.org,在控制台生成 API key 。配置认证
方式一:直接传入
from tickflow import TickFlow
tf = TickFlow(api_key="your-api-key")
方式二:环境变量( Windows / Linux / Mac )
# Linux / Mac
export TICKFLOW_API_KEY="your-api-key"
# Windows CMD
set TICKFLOW_API_KEY=your-api-key
from tickflow import TickFlow
tf = TickFlow() # 自动读取环境变量
- 发起第一个请求
quotes = tf.quotes.get(symbols=["600000.SH", "000001.SZ"])
for q in quotes:
print(f"{q['symbol']}: {q['last_price']}")
完整服务特点:
- ✅ 实时行情数据
- ✅ 分钟级 K 线( 5m 、15m 、30m 、60m 、4h )
- ✅ 日内分时数据
- ✅ 高调用频率支持
标的代码与支持市场
统一格式:代码.市场后缀,示例:
- 股票:
600000.SH(浦发银行)、000001.SZ(平安银行)
- ETF:
510300.SH(沪深 300 ETF )
- 指数:
000001.SH(上证指数)
- 期货:
au2604.SHF(上期所黄金主力合约)
| 后缀 | 市场 | 说明 |
|---|---|---|
| SH | 上海证券交易所 | 沪市 A 股、ETF 、债券等 |
| SZ | 深圳证券交易所 | 深市 A 股、创业板、ETF 等 |
| BJ | 北京证券交易所 | 北交所股票 |
| SHF | 上海期货交易所 | 上期所期货 |
| DCE | 大连商品交易所 | 大商所期货 |
| ZCE | 郑州商品交易所 | 郑商所期货 |
| CFX | 中国金融期货交易所 | 股指/国债期货 |
| INE | 上海国际能源交易中心 | 原油等期货 |
| GFE | 广州期货交易所 | 广期所期货 |
| US | 美股 | 美国证券市场 |
| HK | 港股 | 香港联交所 |
支持 A 股、国内期货,部分美股、港股接口已支持格式,但暂无数据。
基础用法示例
K 线
# 单标的获取日 K 线
klines = tf.klines.get("600000.SH", period="1d", count=10000, as_dataframe=True)
print(klines.tail(5))
# 批量获取多标的
symbols = ["600000.SH", "000001.SZ", "600519.SH"]
dfs = tf.klines.batch(symbols, period="1d", count=10000, as_dataframe=True, show_progress=True)
print(list(dfs.keys()))
日内分时 K 线
# 单标的 1 分钟 K 线
df = tf.klines.intraday("600000.SH", period="1m", as_dataframe=True)
print(df.tail())
# 批量
dfs = tf.klines.intraday_batch(["600000.SH", "000001.SZ"], as_dataframe=True, show_progress=True)
print(dfs["600000.SH"].tail())
实时行情
# 按标的查询
quotes = tf.quotes.get(symbols=["600000.SH", "000001.SZ"], as_dataframe=True)
# 按标的池查询
quotes_a = tf.quotes.get(universes=["CN_Equity_A"], as_dataframe=True)
quotes_etf = tf.quotes.get(universes=["CN_ETF"], as_dataframe=True)
异步使用
import asyncio
from tickflow import AsyncTickFlow
async def main():
async with AsyncTickFlow(api_key="your-api-key") as tf:
df = await tf.klines.get("600000.SH", as_dataframe=True)
print(df.tail())
tasks = [tf.klines.get(s, as_dataframe=True) for s in ["600000.SH", "000001.SZ"]]
results = await asyncio.gather(*tasks)
asyncio.run(main())
结语
TickFlow 提供低延迟、稳定、易用的行情数据服务,适合量化研究者快速上手:
- 免费服务:历史日 K ,直接用,无需注册
- 完整服务:实时行情、分钟级 K 线,高并发支持
无论你是初学者还是专业量化团队,TickFlow 都能帮助你专注策略开发,而非数据抓取。
@somebodybbb 现在还没有。后续 1-2 个月会考虑支持。
@alex0618 需要港和 A 的实时 WS 推送,加油
有 WS 订阅推送吗?