Skip to main content

统一的多源股票数据接口库:可插拔、按优先级兜底,把 akshare/mootdx/腾讯/新浪/东财/openstockdata/iTick 收敛为一套契约。

Project description

stockdata-hub

统一的多源股票数据接口库:可插拔、按优先级兜底,把 akshare / mootdx / 腾讯 / 新浪 / 东财 / openstockdata / iTick 收敛为一套统一契约

你只管 fetch("600519"),底层用哪个源、怎么 fallback、返回什么格式,全部透明。


特性

  • 统一契约:所有源返回结构一致的 DataFramedate/open/high/low/close/volume,可选 amountma5/ma10/ma20),volume 统一为「手」。
  • 多源兜底:内置 11 个数据源,按 priority 顺序尝试,命中第一个成功的源。
  • 缺依赖降级akshare / mootdx / openstockdata / itick-sdk 都是可选依赖;缺失时对应源自动跳过,不影响其它源。
  • 可插拔:想加自己的源?继承 DataProvider 两个方法即可(见 docs/add_provider.md)。
  • 零强制网络依赖:核心只依赖 pandas + requests,其余按需安装。

安装

# 仅核心(用默认兜底链路,但多数源需要下面 extra)
pip install stockdata-hub

# 安装全部数据源支持(推荐)
pip install stockdata-hub[all]

# 或按需安装单个源
pip install stockdata-hub[akshare]        # A股/ETF/港股
pip install stockdata-hub[mootdx]         # 通达信 TCP 高速 K线
pip install stockdata-hub[openstockdata]  # 百度/腾讯 K线(alpha)
pip install stockdata-hub[itick]          # 全球行情(需 Token)

30 秒上手

from stockdata_hub import StockDataFetcher

fetcher = StockDataFetcher()
df, reason, code = fetcher.fetch_stock_data("600519", days=30)

if df is not None:
    print(df.tail())
    print("实际命中源:", fetcher.get_last_used_provider())
else:
    print("失败原因:", reason)

返回三元组:(DataFrame, 失败原因, 实际代码)。成功时 reason=None


统一契约

所有 Provider 最终返回的 DataFrame 满足:

类型 说明
date datetime64 交易日期
open / high / low / close float OHLC
volume float 成交量,单位 = 手 (lot)(A股/ETF 1 手 = 100 股)
amount float(可选) 成交额
ma5 / ma10 / ma20 float(可选) 均线(源提供时保留)

⚠️ 新增 Provider 的硬规则:返回的 volume 必须是「手」。返回「股」的源(如 openstockdata)必须在 fetch_data 内先 ÷ VOLUME_SHARE_TO_LOT(100)。管理器会 再做一次统一规范化(列别名、数值化、日期、排序、截取、去多余列)。


内置数据源与优先级(越小越优先)

优先级 Provider 依赖 能力
0 腾讯批量实时 (零额外依赖) 当日快照(批量,days=1)
1 通达信TCP(mootdx) mootdx A股/ETF 日线(<50ms)
2 openstockdata cn-a-stock-data 百度/腾讯 K线(alpha)
3 iTick 全球行情 itick-sdk + Token 全球多市场
3 新浪A股 akshare A股日线
4 腾讯A股 / ETF(akshare) akshare A股/ETF 日线
5 港股(akshare) akshare 港股日线
6 A股(akshare) / 东财A股 akshare A股日线
7 东财替代 (零额外依赖) 直连东财 K线
10 通用(akshare) akshare 最后兜底

自定义:管理器 / 新增源

from stockdata_hub import DataProviderManager, StockDataFetcher

# 只看 Provider 列表
mgr = DataProviderManager.build_default()
for info in mgr.get_provider_list():
    print(info["name"], info["priority"])

# 调整优先级 / 移除 / 新增
mgr.set_provider_priority("openstockdata", 0)
mgr.remove_provider("东财替代")

fetcher = StockDataFetcher(manager=mgr)

如何新增一个数据源? 见 👉 docs/add_provider.md(含完整可运行示例)。


项目结构

stockdata-hub/
├── pyproject.toml
├── README.md
├── LICENSE
├── CONTRIBUTING.md
├── docs/
│   └── add_provider.md         # 如何新增 Provider
├── src/stockdata_hub/
│   ├── __init__.py             # 公共 API
│   ├── core.py                 # DataProvider / DataProviderManager / 重试
│   ├── code_utils.py           # 股票代码标准化
│   ├── normalization.py        # 统一契约规范化
│   ├── cache.py                # 可选缓存
│   ├── fetcher.py              # StockDataFetcher 门面
│   ├── name_provider.py        # 名称->代码(可选)
│   └── providers/              # 各数据源实现
│       ├── akshare_provider.py
│       ├── mootdx_provider.py
│       ├── http_provider.py    # 新浪/腾讯/东财
│       ├── fast_tencent_provider.py
│       ├── openstockdata_provider.py
│       └── itick_provider.py
└── tests/

开发 / 测试

git clone https://github.com/stockdata-hub/stockdata-hub
cd stockdata-hub
pip install -e .[all]
pip install pytest

python -m pytest tests/ -q

许可证

MIT

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

stockdata_hub-0.1.4.tar.gz (31.8 kB view details)

Uploaded Source

Built Distribution

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

stockdata_hub-0.1.4-py3-none-any.whl (38.2 kB view details)

Uploaded Python 3

File details

Details for the file stockdata_hub-0.1.4.tar.gz.

File metadata

  • Download URL: stockdata_hub-0.1.4.tar.gz
  • Upload date:
  • Size: 31.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for stockdata_hub-0.1.4.tar.gz
Algorithm Hash digest
SHA256 cd13f1076b02814d4c9c48ee2111ce4fc7571ef0dcea6178f0704a701d9df966
MD5 8bc49a52f6b153999a22e8626c3a0879
BLAKE2b-256 6440e6c6a98a6315d2a0d918b764f993204a018cc8e6a52b81e1f09866e3dd55

See more details on using hashes here.

File details

Details for the file stockdata_hub-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: stockdata_hub-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 38.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for stockdata_hub-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fe6663489b1442c1912a46d3a66d9cb047abc8ee7eb3fcfe190dc7527abb1363
MD5 b7f7ba553c0fde1abd4be58845e6f48e
BLAKE2b-256 3226b506cfe3341c68367ed671e01ede2fad82f0f6873aac9170b8b5e9f97160

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