finshare | 专业的金融数据获取工具库
finshare 是一个专业的金融数据获取 Python 库,支持从多个数据源获取股票、ETF、LOF、期货等金融产品的历史数据、实时行情、财务数据、特色数据等。
完全免费:无需 API Key,无调用次数限制
功能特性
多数据源支持 - 东方财富、腾讯、新浪、通达信、BaoStock,多源自动切换
多市场覆盖 - A股、港股、美股、期货、基金,全面金融数据
自动故障切换 - 数据源失败时自动切换备用源,保证服务可用
高性能获取 - 支持异步批量获取,减少等待时间
内置缓存机制 - 减少重复请求,提升响应速度
统一数据格式 - 所有数据源返回统一格式,方便处理
企业级稳定性 - 熔断器、智能路由、健康探测、监控统计
支持的数据类型
类别 |
数据类型 |
接口函数 |
说明 |
|---|---|---|---|
股票 |
历史K线 |
|
日线、周线、月线、分钟线,支持前/后复权 |
实时快照 |
|
实时行情报价 |
|
批量快照 |
|
批量获取多只股票行情 |
|
港股 |
实时快照 |
|
腾讯/新浪数据源 |
历史K线 |
|
东方财富数据源 |
|
期货 |
历史K线 |
|
支持所有国内期货品种 |
实时快照 |
|
新浪实时行情 |
|
批量快照 |
|
批量获取期货行情 |
|
基金 |
基金净值 |
|
场外基金净值数据 |
基金信息 |
|
基金基本信息 |
|
基金列表 |
|
全部基金列表 |
|
财务数据 |
利润表 |
|
营业收入、净利润等 |
资产负债表 |
|
总资产、负债等 |
|
现金流量表 |
|
经营/投资/筹资现金流 |
|
财务指标 |
|
EPS、ROE、毛利率等 |
|
特色数据 |
资金流向 |
|
个股资金流向 |
行业资金流向 |
|
各行业资金流向 |
|
龙虎榜 |
|
历史龙虎榜数据 |
|
龙虎榜明细 |
|
营业部买卖明细 |
|
融资融券 |
|
市场/个股融资融券 |
|
融资融券明细 |
|
个股融资融券明细 |
|
证券列表 |
股票列表 |
|
A股全部股票 |
ETF列表 |
|
全部ETF基金 |
|
LOF列表 |
|
全部LOF基金 |
|
期货列表 |
|
期货合约列表 |
快速开始
安装:
pip install finshare
使用:
import finshare as fs
# 获取历史K线数据
df = fs.get_historical_data('000001.SZ', start='2024-01-01', end='2024-01-31')
print(df.head())
# 获取实时快照
snapshot = fs.get_snapshot_data('000001.SZ')
print(f"最新价: {snapshot.last_price}")
# 批量获取行情
snapshots = fs.get_batch_snapshots(['000001.SZ', '600519.SH'])
高级特性
模块 |
功能 |
说明 |
|---|---|---|
缓存系统 |
内存/Redis缓存 |
支持TTL配置,减少重复请求 |
异步客户端 |
AsyncDataSourceManager |
批量异步获取,提升性能 |
熔断器 |
CircuitBreaker |
故障自动熔断,保护系统 |
智能路由 |
SmartRouter |
按数据类型偏好路由 |
监控统计 |
Monitor |
请求统计、性能分析 |
Note
本项目完全由 AI (Claude) 实现,展示了 AI 在软件工程领域的强大能力。
finshare
专业的金融数据获取工具库
A Professional Financial Data Fetching Toolkit for Python
📖 在线文档 • 官网 • GitHub • Discord • 问题反馈
📖 在线文档
详细使用文档请访问: 👉 finshare 文档网站
文档网站包含:
完整的 API 参考
快速开始指南
数据源说明
常见问题解答
更多代码示例
🚀 快速开始
import finshare as fs
# 获取历史K线
df = fs.get_historical_data('000001.SZ', start='2024-01-01', end='2024-12-31')
# 获取实时快照
snapshot = fs.get_snapshot_data('000001.SZ')
# 批量获取快照
snapshots = fs.get_batch_snapshots(['000001.SZ', '600519.SH'])
print(df.head())
✨ 核心特性
📊 多数据源 - 东方财富、Yahoo Finance、腾讯、新浪、通达信、BaoStock
🔄 自动故障切换 - 数据源失败时自动切换备用源
📈 统一数据格式 - 所有数据源返回统一格式
⚡ 高性能 - 优化的数据获取性能
🔧 简单易用 - 简洁的 API 设计,开箱即用
🌍 多市场支持 - A股、港股、美股、期货、基金
📦 安装
pip install finshare
📚 支持的数据类型
类别 |
功能 |
|---|---|
股票 |
K线、实时快照、资金流向、龙虎榜、融资融券 |
基金 |
净值、信息、列表、ETF、LOF |
期货 |
K线、实时快照 |
证券列表 |
股票列表、ETF列表、LOF列表、期货列表 |
🛠️ 用 finshare 创建工具
finshare 不仅是一个数据库,更是一个可以快速构建金融工具的基础库。以下是几个示例:
1. 行情看板 (finboard)
# finboard - 实时行情看板
# 基于 Streamlit + finshare 构建
import streamlit as st
import finshare as fs
import plotly.graph_objects as go
# 获取自选股行情
stocks = ['000001.SZ', '600519.SH', '300750.SZ']
data = fs.get_batch_snapshots(stocks)
# 显示行情
for code, snap in data.items():
st.metric(code, snap.last_price, f"{snap.change_pct:.2f}%")
# K线图
kline = fs.get_historical_data('600519.SH', start='2024-01-01')
fig = go.Figure(data=[go.Candlestick(
x=kline['trade_date'],
open=kline['open_price'],
high=kline['high_price'],
low=kline['low_price'],
close=kline['close_price']
)])
st.plotly_chart(fig)
效果预览:

📦 项目地址: finboard
2. 选股器
# 条件选股器
import finshare as fs
import pandas as pd
# 获取全部股票列表
stocks = fs.get_stock_list()
# 筛选条件
# 1. 涨幅 > 5%
# 2. 成交额 > 1亿
# 3. 换手率 > 10%
filtered = stocks[
(stocks['change_pct'] > 5) &
(stocks['amount'] > 1e8) &
(stocks.get('turnover_rate', 0) > 10)
]
print(f"符合条件的股票: {len(filtered)} 只")
print(filtered[['code', 'name', 'change_pct']])
3. 价格提醒机器人
# 微信/钉钉价格提醒
import finshare as fs
import requests
import time
# 监控股票
WATCH_LIST = ['000001.SZ', '600519.SH']
PRICE_ALERTS = {
'600519.SH': {'high': 2000, 'low': 1800}, # 茅台
}
def send_alert(code, price, alert_type):
"""发送钉钉消息"""
webhook = "YOUR_DINGTALK_WEBHOOK"
msg = {
"msgtype": "text",
"text": {
"content": f"🚨 {code} 价格{alert_type}提醒!当前价格: {price}"
}
}
requests.post(webhook, json=msg)
# 持续监控
while True:
snapshots = fs.get_batch_snapshots(WATCH_LIST)
for code, snap in snapshots.items():
if code in PRICE_ALERTS:
alerts = PRICE_ALERTS[code]
if snap.last_price >= alerts.get('high'):
send_alert(code, snap.last_price, "突破")
elif snap.last_price <= alerts.get('low'):
send_alert(code, snap.last_price, "跌破")
time.sleep(60) # 每分钟检查一次
4. 数据导出工具
# 导出历史数据到 Excel
import finshare as fs
codes = ['000001.SZ', '600519.SH', '601318.SH']
with pd.ExcelWriter('stock_data.xlsx') as writer:
for code in codes:
df = fs.get_historical_data(code, start='2020-01-01')
df.to_excel(writer, sheet_name=code, index=False)
print("数据已导出到 stock_data.xlsx")
5. 实时行情 API
# Flask API 服务
from flask import Flask, jsonify
import finshare as fs
app = Flask(__name__)
@app.route('/quote/<code>')
def get_quote(code):
snapshot = fs.get_snapshot_data(code)
return jsonify({
'code': snapshot.code,
'price': snapshot.last_price,
'change_pct': snapshot.change_pct,
'volume': snapshot.volume
})
@app.route('/kline/<code>')
def get_kline(code):
df = fs.get_historical_data(code, start='2024-01-01')
return jsonify(df.to_dict(orient='records'))
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
6. 更多创意
工具 |
描述 |
|---|---|
📊 量化回测 |
使用历史数据进行策略回测 |
📈 自动交易 |
条件触发自动买卖 |
🔔 新闻监控 |
监控个股相关新闻 |
📱 小程序 |
微信/支付宝小程序展示行情 |
📊 Excel插件 |
Excel 实时看盘 |
📖 更多示例
查看 examples 目录获取更多示例代码。
🌟 相关项目
项目 |
描述 |
|---|---|
实时行情看板 |
|
智能选股器 |
|
量化回测框架 |
|
OpenClaw AI 助手技能 |
|
免费量化回测平台 |
🙏 致谢
参照的开源项目
本项目在设计思路和 API 风格上参考了以下优秀的开源项目:
项目 |
描述 |
|---|---|
专业的金融数据开源库,为本项目提供了重要参考 |
数据源网站
感谢以下数据源网站提供的免费 API 接口:
数据源 |
用途 |
|---|---|
东方财富 |
A股行情、财务数据、龙虎榜、融资融券 |
腾讯财经 |
港股行情、实时报价 |
新浪财经 |
港股行情、实时报价 |
通达信 |
行情数据 |
BaoStock |
证券数据 |
天天基金 |
基金净值数据 |
🤝 贡献
欢迎贡献代码!查看 贡献指南。
📄 许可证
MIT License - 详见 LICENSE
⭐ 如果这个项目对你有帮助,请给我们一个 Star!
🤖 由 米波量化 团队开发