A股美股全覆盖!这款开源Python实时股票行情SDK真香
来源: 微信公众号(创新技术阁)
GitHub: https://github.com/tickplus
发布平台: 程序员茄子(chenxutan.com)
标签: Python, 股票, 量化交易, SDK, 数据接口, 金融科技
引言
在构建量化交易系统或开发金融数据分析工具时,获取稳定可靠的实时行情往往是一大痛点。商业级接口费用高昂,而免费接口常常面临延迟高、不稳定、甚至随时停服的风险。
今天,为大家分享一款名为 TickPlus 的开源 Python 行情 SDK。它专为解决金融数据获取痛点而生,不仅接口丰富,而且调用简单,非常适合个人开发者和量化爱好者使用。
一、TickPlus 能做什么?
TickPlus 是基于高性能数据分发系统构建的 SDK,主要提供了以下四大类核心数据接口:
1. 全品种实时行情
不仅支持传统的 A股、港股、美股,还涵盖了期货市场的实时波动数据。
| 市场 | 支持情况 |
|---|---|
| A股 | ✅ 全市场实时行情 |
| 港股 | ✅ 实时行情 |
| 美股 | ✅ 实时行情 |
| 期货 | ✅ 实时波动数据 |
2. 高价值历史数据
无论是复盘所需的 日 K 线、分钟 K 线,还是用于微观结构分析的历史 Tick 数据,都能轻松获取。
| 数据类型 | 说明 |
|---|---|
| 日K线 | 每日OHLCV数据 |
| 分钟K线 | 1/5/15/30/60分钟周期 |
| Tick数据 | 逐笔成交明细 |
3. 丰富的基础信息
提供股票列表、核心财务指标、板块成分股划分,以及历史复权(除权除息)数据。
| 数据类型 | 应用场景 |
|---|---|
| 股票列表 | 全市场扫描 |
| 财务指标 | 价值投资筛选 |
| 板块成分 | 行业轮动策略 |
| 复权数据 | 历史回测 |
4. 深度量化高级数据
支持获取 逐笔交易记录、买卖五档深度盘口,以及 资金流向等进阶数据。
| 数据类型 | 说明 |
|---|---|
| 逐笔交易 | 每一笔成交的详细信息 |
| 五档盘口 | 买卖各5档深度报价 |
| 资金流向 | 大单/散户资金进出 |
二、核心优势解析
相比市面上良莠不齐的免费接口,TickPlus 拥有三个非常实用的特性:
1. 数据稳如泰山
底层依托自研的高性能分发引擎,数据延迟低且不易丢包,最大程度保证行情的实时性与准确度。
2. 丝滑的开发体验
SDK 支持链式调用,你可以直接将数据返回为标准的 JSON 格式,或者直接输出为 Pandas DataFrame,无缝对接你的量化策略分析流程。
# JSON 格式输出
quotes = BasicApi.getFullQuotes(symbol="stock", code="000001", token=token)
# 直接是字典列表
# DataFrame 格式输出
df = BasicApi.getFullQuotes(symbol="stock", code="000001", token=token, as_df=True)
# 直接是 pandas DataFrame
3. 全平台兼容
无论你是在 Windows 开发环境、Linux 服务器,还是 macOS 笔电上,都能顺畅运行。
| 操作系统 | 支持情况 |
|---|---|
| Windows | ✅ |
| Linux | ✅ |
| macOS | ✅ |
三、极简实战:3分钟跑通第一个接口
第一步:安装依赖库
pip install tickplus
第二步:申请 API Token
注意:正式调用前,你需要前往 TickPlus 官网申请一个免费的 API Token 进行初始化。
官网地址:http://www.tickplus.org
第三步:实战代码
示例一:一键获取多只股票实时行情
如何同时紧盯平安银行、万科A 和贵州茅台的走势?只需两行核心代码:
# 批量获取指定股票的最新行情
codes = "000001,000002,600000,600519"
quotes = BasicApi.getFullQuotes(symbol="stock", code=codes, token=token)
for quote in quotes:
print(f"{quote['code']}: 最新价={quote['c']}, 昨收={quote['pc']}")
输出示例:
000001: 最新价=12.35, 昨收=12.10
000002: 最新价=8.67, 昨收=8.55
600000: 最新价=7.23, 昨收=7.18
600519: 最新价=1688.00, 昨收=1675.50
示例二:直接拉取30+种技术指标
如果你需要获取市盈率、换手率等指标进行因子选股,可以直接调用 getFullFactor 接口:
# 获取个股全方位的技术指标
indicators = BasicApi.getFullFactor(
symbol="stock",
code="000001",
token=token
)
if indicators:
data = indicators[0]
print(f"最新价: {data['zxj']} | 涨跌幅: {data['zdf']}%")
print(f"换手率: {data['hsl']}% | 市盈率(TTM): {data['ttmsyl']}")
输出示例:
最新价: 12.35 | 涨跌幅: 2.06%
换手率: 1.23% | 市盈率(TTM): 8.56
示例三:获取买卖五档盘口深度数据
# 获取五档盘口数据
entrust = BasicApi.getEntrust(
symbol="stock",
code="000001",
token=token
)
if entrust:
# 卖五档
for i, sell in enumerate(entrust.get('sell', [])[:5]):
print(f"卖{i+1}: {sell['price']} | {sell['volume']}手")
# 买五档
for i, buy in enumerate(entrust.get('buy', [])[:5]):
print(f"买{i+1}: {buy['price']} | {buy['volume']}手")
示例四:获取历史K线数据
from datetime import datetime, timedelta
# 获取平安银行最近30天的日K线
kline = HistoryApi.getDailyKline(
symbol="stock",
code="000001",
token=token,
start_date=(datetime.now() - timedelta(days=30)).strftime("%Y%m%d"),
end_date=datetime.now().strftime("%Y%m%d")
)
for bar in kline:
print(f"{bar['date']}: O={bar['open']} H={bar['high']} L={bar['low']} C={bar['close']} V={bar['volume']}")
四、与其他数据源对比
| 特性 | TickPlus | 商业接口 | 免费接口 |
|---|---|---|---|
| 价格 | 免费/低价 | 高昂 | 免费 |
| 数据稳定性 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ |
| 延迟 | 低 | 低 | 高 |
| 历史数据 | 完整 | 完整 | 不全 |
| API设计 | 现代化 | 各不相同 | 简陋 |
| Python支持 | 原生 | 一般 | 一般 |
| 技术指标 | 30+ | 部分 | 少 |
五、项目架构
项目包含了清晰的模块划分:
tickplus/
├── api/ # 核心API接口
│ ├── basic_api.py # 基础行情接口
│ ├── history_api.py # 历史数据接口
│ └── realtime_api.py # 实时行情接口
├── utils/ # 工具函数
│ ├── parser.py # 数据解析
│ └── formatter.py # 格式化工具
├── tests/ # 测试用例
├── references/ # 参考文档
│ └── apidoc.md # 接口文档
└── __init__.py # 包入口
六、典型应用场景
1. 量化回测系统
# 获取历史数据用于回测
codes = ["000001", "600000", "600519"]
for code in codes:
kline = HistoryApi.getDailyKline(
symbol="stock",
code=code,
token=token,
start_date="20230101",
end_date="20231231"
)
# 构建回测数据集
2. 实时盯盘系统
# 实时监控多只股票
codes = "000001,000002,600000,600519"
while True:
quotes = BasicApi.getFullQuotes(symbol="stock", code=codes, token=token)
for quote in quotes:
# 检查涨跌幅度
change = (quote['c'] - quote['pc']) / quote['pc'] * 100
if abs(change) > 5:
print(f"警告: {quote['code']} 涨跌幅超过5%!")
time.sleep(5)
3. 选股系统
# 筛选低估值股票
codes = "000001,000002,600000,600519"
quotes = BasicApi.getFullQuotes(symbol="stock", code=codes, token=token)
for quote in quotes:
# 获取基本面指标
indicators = BasicApi.getFullFactor(symbol="stock", code=quote['code'], token=token)
if indicators:
data = indicators[0]
pe = data.get('ttmsyl', 0)
# 筛选PE<15的股票
if 0 < pe < 15:
print(f"{quote['code']}: PE={pe}, 符合价值投资标准")
4. 交易信号系统
# 获取五档盘口,分析是否有大单买入
entrust = BasicApi.getEntrust(symbol="stock", code="000001", token=token)
if entrust:
buy_volume = sum([b['volume'] for b in entrust.get('buy', [])[:3]])
sell_volume = sum([s['volume'] for s in entrust.get('sell', [])[:3]])
if buy_volume > sell_volume * 2:
print("检测到强势买入信号!")
七、常见问题
Q1:数据是实时的吗?
答:是的,TickPlus 底层采用高性能分发引擎,数据延迟低,支持实时行情推送。
Q2:需要付费吗?
答:基础功能免费,如需高级功能可查看官网定价。
Q3:支持哪些编程语言?
答:目前主要支持 Python,SDK 设计遵循 Pythonic 风格。
Q4:API 调用有频率限制吗?
答:具体限制请查看官网文档,一般个人用户足够使用。
Q5:数据可以商用吗?
答:请查看项目开源协议和官网许可条款。
八、总结与项目地址
对于很多缺乏稳定数据源的个人量化交易者而言,TickPlus 得上是一个非常值得尝试的开源神器。它的接口设计非常契合 Python 投资者的使用习惯,大大降低了数据清洗与对接的门槛。
项目亮点
✅ 全品种覆盖:A股、港股、美股、期货
✅ 接口丰富:实时行情、历史数据、技术指标、五档盘口
✅ 开发友好:链式调用、JSON/DataFrame 输出
✅ 全平台兼容:Windows、Linux、macOS
✅ 免费可用:个人用户免费 Token
相关链接
- GitHub:https://github.com/tickplus
- 官网:http://www.tickplus.org
- 接口文档:tickplus/references/apidoc.md
本文首发于「程序员茄子」博客,原文链接:https://chenxutan.com