Skip to main content

A professional financial data fetching toolkit for Python

Project description

finshare

专业的金融数据获取工具库

A Professional Financial Data Fetching Toolkit for Python

官网GitHubDiscord问题反馈

Stars Python License


🚀 快速开始

from finshare import get_data_manager

# 获取数据管理器
manager = get_data_manager()

# 获取 K线数据(只需传入股票代码,无需市场后缀)
data = manager.get_historical_data(
    code='000001',
    start='2024-01-01',
    end='2024-01-31',
    adjust='qfq'  # 前复权
)
print(data.head())

# 获取实时快照
snapshot = manager.get_snapshot_data('000001')
print(f"最新价: {snapshot.last_price}")
print(f"涨跌幅: {(snapshot.last_price - snapshot.prev_close) / snapshot.prev_close * 100:.2f}%")

✨ 核心特性

  • 📊 多数据源支持 - 东方财富、腾讯、新浪、通达信、BaoStock
  • 🔄 自动故障切换 - 数据源失败时自动切换到备用源
  • 📈 统一数据格式 - 所有数据源返回统一的 DataFrame 格式
  • 高性能获取 - 优化的数据获取和解析性能
  • 🔧 简单易用 - 简洁的 API 设计,开箱即用
  • 🤖 AI 驱动开发 - 完全由 Claude AI 实现,代码质量有保障

📦 安装

pip install finshare

注意: 包名为 finshare,但导入时使用 finshare

import finshare
from finshare import get_data_manager

📚 支持的数据源

数据源 K线数据 实时快照 复权数据
东方财富
腾讯财经
新浪财经
通达信
BaoStock

📚 支持的数据类型

股票数据

  • A股股票实时快照、历史K线
  • 港股实时快照、历史K线
  • 美股实时快照、历史K线

基金数据

  • 基金净值数据
  • 基金基本信息
  • ETF列表
  • LOF列表

期货数据

  • 期货历史K线 (股指、金属、能源、化工)
  • 期货实时快照

证券列表

  • A股股票列表
  • ETF基金列表
  • LOF基金列表

💡 使用示例

基础用法

from finshare import get_data_manager, logger

manager = get_data_manager()

# 获取日线数据(只需传入6位股票代码)
data = manager.get_historical_data(
    code='000001',  # 平安银行
    start='2024-01-01',
    end='2024-01-31',
    adjust='qfq'  # 前复权
)

if data is not None and len(data) > 0:
    logger.info(f"成功获取 {len(data)} 条数据")
    logger.info(f"开盘价: {data['open_price'].iloc[0]:.2f}")
    logger.info(f"收盘价: {data['close_price'].iloc[-1]:.2f}")
    logger.info(f"最高价: {data['high_price'].max():.2f}")
    logger.info(f"最低价: {data['low_price'].min():.2f}")

# 获取实时快照
snapshot = manager.get_snapshot_data('000001')
if snapshot:
    logger.info(f"股票代码: {snapshot.code}")
    logger.info(f"最新价格: {snapshot.last_price}")
    logger.info(f"成交量: {snapshot.volume}")
    logger.info(f"成交额: {snapshot.amount}")
    if snapshot.prev_close:
        change_percent = (snapshot.last_price - snapshot.prev_close) / snapshot.prev_close * 100
        logger.info(f"涨跌幅: {change_percent:.2f}%")

批量获取

from finshare import get_data_manager, logger

manager = get_data_manager()

# 批量获取多只股票(使用6位代码)
symbols = ['000001', '000002', '600000', '600036']

results = {}
for symbol in symbols:
    try:
        logger.info(f"正在获取 {symbol}...")
        data = manager.get_historical_data(
            code=symbol,
            start='2024-01-01',
            end='2024-01-31'
        )

        if data is not None and len(data) > 0:
            results[symbol] = data
            logger.info(f"✓ {symbol}: {len(data)} 条数据")
        else:
            logger.warning(f"✗ {symbol}: 未获取到数据")
    except Exception as e:
        logger.error(f"✗ {symbol}: {e}")

# 数据分析示例
if results:
    logger.info("\n数据分析:")
    for symbol, data in results.items():
        change = (data['close_price'].iloc[-1] - data['close_price'].iloc[0]) / data['close_price'].iloc[0] * 100
        logger.info(f"  {symbol}: 涨跌幅 {change:+.2f}%")

批量获取实时快照

from finshare import get_data_manager, logger

manager = get_data_manager()

# 支持股票、ETF、LOF 等多种类型
symbols = [
    "000001",  # 股票:平安银行
    "600519",  # 股票:贵州茅台
    "510300",  # ETF:沪深300ETF
    "159915",  # ETF:创业板ETF
    "163402",  # LOF:兴全趋势
]

# 使用批量接口获取快照(更高效)
results = manager.get_batch_snapshots(symbols)

# 展示实时行情
if results:
    logger.info(f"成功获取 {len(results)} 只股票的快照")
    for symbol, snapshot in results.items():
        change_percent = 0.0
        if snapshot.prev_close and snapshot.prev_close > 0:
            change_percent = (snapshot.last_price - snapshot.prev_close) / snapshot.prev_close * 100
        logger.info(f"{symbol}: {snapshot.last_price:.2f} ({change_percent:+.2f}%)")

### 使用特定数据源

```python
from finshare import EastMoneyDataSource, TencentDataSource

# 使用东方财富
eastmoney = EastMoneyDataSource()
data = eastmoney.get_historical_data('000001', start='2024-01-01')

# 使用腾讯财经
tencent = TencentDataSource()
data = tencent.get_historical_data('000001', start='2024-01-01')

便捷接口 (推荐)

import finshare as fs

# 获取历史K线
data = fs.get_historical_data('000001.SZ', start='2024-01-01', end='2024-01-31')

# 获取实时快照
snapshot = fs.get_snapshot_data('000001.SZ')

# 批量获取快照
snapshots = fs.get_batch_snapshots(['000001.SZ', '600519.SH'])

# 获取基金净值
fund_data = fs.get_fund_nav('161039', '2024-01-01', '2024-12-31')

# 获取期货K线
future_data = fs.get_future_kline('cu0', '2024-06-01', '2024-07-17')

# 获取股票列表
stocks = fs.get_stock_list()

# 获取ETF列表
etfs = fs.get_etf_list()

🌟 为什么选择 finshare?

finshare 是 米波量化平台 的数据层,经过生产环境验证,稳定可靠。

完整的量化交易解决方案

如果你需要更强大的功能,可以使用完全免费的米波量化平台:

功能 finshare 米波量化
数据获取 ✅ 开源免费 ✅ 完全免费
策略回测 ✅ 完全免费
参数优化 ✅ 完全免费
30+ 内置策略 ✅ 完全免费
策略市场 ✅ 完全免费

🎉 米波量化所有功能永久免费,无次数限制,无功能阉割

👉 立即体验米波量化

📖 文档

🤝 贡献

欢迎贡献代码!查看 贡献指南

📄 许可证

MIT License - 详见 LICENSE

🔗 相关链接


米波量化 团队开发和维护

🤖 本项目完全由 AI (Claude) 实现,展示了 AI 在软件工程领域的强大能力

⭐ 如果这个项目对你有帮助,请给我们一个 Star!

💡 需要完整的量化交易平台?访问 米波量化 - 完全免费,无限使用

🚀 开源计划:米波量化回测框架计划于 2026 Q2 开源(MIT License)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

finshare-1.0.2.tar.gz (70.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

finshare-1.0.2-py3-none-any.whl (84.7 kB view details)

Uploaded Python 3

File details

Details for the file finshare-1.0.2.tar.gz.

File metadata

  • Download URL: finshare-1.0.2.tar.gz
  • Upload date:
  • Size: 70.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for finshare-1.0.2.tar.gz
Algorithm Hash digest
SHA256 55a3cc53f21552aacc21bd189b345aa0912f97b81ab2ad8c05bd8ccee9a9b739
MD5 d642aa55253a433b183dcac60c537acb
BLAKE2b-256 301e862e04bd3f88d07087c94c842b6f6e6f28c093790b5fa612aedf0de5d4eb

See more details on using hashes here.

File details

Details for the file finshare-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: finshare-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 84.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for finshare-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a1482ac706c316f027043478f30a1be4adc4ebb3f7ee7d118d5845de718c60dd
MD5 cbe7b167c841149c280cf9ddf0294290
BLAKE2b-256 724224e43cbb96ae45a59d57ac327972b454c9941e10b6b88a0e0f72e6797edd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page