Skip to main content

pytdxdata

CI PyPI version Python License PyPI downloads

通达信(TongDaXin)行情数据客户端:动态连接池 + 双层 TTL 缓存 + 多连接并发分页,纯 asyncio、零运行时依赖。

A股(沪/深/北) + 港股 + 美股 + 期货 + 期权,一套接口全市场。

📖 完整文档:https://openbot-coder.github.io/pytdxdata/

安装

pip install pytdxdata          # 或 uv add pytdxdata

可选异步加速:

pip install "pytdxdata[uvloop]"

30 秒上手

import asyncio
from pytdxdata import TdxData
from pytdxdata.models import KlinePeriod, Adjust

async def main():
    async with TdxData() as td:                     # 自动建连接池 + 缓存
        # 日K线(count 超过单页大小会自动多连接并发分页)
        bars = await td.get_bars(["sz000001"], KlinePeriod.DAY, count=240)
        # 前复权(自动走 MAC 通道)
        qfq = await td.get_bars(["sz300308"], KlinePeriod.DAY,
                                 count=500, adjust=Adjust.QFQ)
        # 跨市场报价:A股+港股+美股一次拿全
        quotes = await td.get_quotes(["sh600000", "hk00700", "usAAPL"])
        # 逐笔成交(MAC 通道,支持历史日期)
        ticks = await td.get_ticks(["sz000001"], date=20260811)
        print(bars[-1].close, quotes[0].price, len(ticks))

asyncio.run(main())

返回的是标准库 dataclass 组成的 list(库本身不依赖 pandas)。要 DataFrame 一行转:

from dataclasses import asdict
import pandas as pd
df = pd.DataFrame([asdict(b) for b in bars])

特性

特性 说明
🧩 动态连接池 启动时对服务器真实 K 线探测选优(剔除握手正常但数据为空的坏节点),健康分 + EWMA 延迟选路,跨服务器故障转移
🗄️ 双层 TTL 缓存 内存 LRU + 磁盘 SQLite(WAL),TTL 分级;single-flight 并发同键去重;缓存已解析记录(重复请求 0 网络 0 解析)
⚡ 并发分页 单请求拆 N 页(显式 start 偏移 → 无状态可并行)并行拉取、按序拼接、失败换连接重试
🔀 双通道整合 标准通道(经典行情)+ MAC 通道(逐笔 / 复权 / 1 分钟 K 线),按命令自动选路
📦 零重型依赖 纯 asyncio + stdlib(socket / zlib / struct / sqlite3)
📊 全市场覆盖 A股、港股、美股、期货、期权(46 个扩展市场)
📄 服务器文件解析 板块 block_*.dat / 行业 tdxhy.cfg / 财报 gpcw* 下载即解析成 dataclass(索引名与服务器实际文件名不一致时自动纠正)
🤖 AI 助手友好 内置 SKILL.md 与 llms.txt

文档导航

我想… 去哪
装好跑起来 快速开始
抄场景代码(转 DataFrame / 批量下载 / 离线板块快照) 场景示例
查方法签名与参数 TdxData 方法 — 由 docstring 自动生成
搞清枚举该填几 枚举速查
看协议二进制格式、三池路由、缓存策略 深入原理
用命令行 命令行工具
完整接口清单(28 个统一方法 + 33 个废弃别名) docs/API_REFERENCE.md
重构审查(数据一致性 / 遗漏对账) 接口重构审查
版本变更 CHANGELOG.md

本 README 只做入口层。深度内容一律在文档站,避免两处维护造成漂移。

给 AI 助手用

仓库根的 SKILL.md 是一份可直接加载的技能:三条必守约定、KlinePeriod 等枚举取值表、 「想做什么 → 用哪个方法」决策表、以及 11 条真实陷阱。AI 编程助手读完就能一次写对,不必翻源码。

# 丢进你所用 AI 助手的 skills 目录即可
curl -o ~/.workbuddy/skills/pytdxdata/SKILL.md --create-dirs \
  https://raw.githubusercontent.com/openbot-coder/pytdxdata/main/SKILL.md

示例

开发

uv sync                        # 建虚拟环境 + 注册 tdx 命令
uv run pytest tests/           # 182 个测试用例(协议 / 池 / 缓存 / 分页 / 全接口回归 / 文件解析 / CLI / 文档漂移 / 当日测速缓存)
uv sync --group docs           # 文档站依赖(mkdocs-material + mkdocstrings)
uv run mkdocs serve            # 本地预览文档站

已知限制

  • 行情来自通达信公开服务器,15 分钟延时;需实时数据请使用券商行情
  • 标准通道 K 线 count < 100 部分服务器返回空 → 分页器已强制 min_page=100 规避
  • 港股 / 美股期权在通达信协议内无数据
  • 服务器可用性随时间变化。当日首次启动会自动在后台测速并缓存(对调用方无感,当天不再重测); 也可用 python -m pytdxdata.server_probe 离线重生成随包清单。 缓存路径与三个开关见 安装与配置 → 当日自动测速

免责声明

本包仅用于技术研究与教育目的。行情数据来自通达信公开接口,不保证实时性与准确性; 作者不对任何投资决策负责。使用前请遵守通达信服务条款及相关法律法规。

License

MIT

Metadata

Release files for pytdxdata 0.6.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pytdxdata 0.6.1
File Size Uploaded
pytdxdata-0.6.1.tar.gz 91.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pytdxdata 0.6.1
File Interpreter ABI Platform
pytdxdata-0.6.1-py3-none-any.whl Python 3 none any Details

Total release size: 209.9 kB

Release files / pytdxdata-0.6.1.tar.gz

Download URL pytdxdata-0.6.1.tar.gz
Size 91.5 kB
Tags Source
SHA-256 checksum
How to use checksums
958238e05536f096b4cad5fad18240984a7cad3bf4786faeb8f910698ea3cf8e
BLAKE2b-256 checksum
How to use checksums
bef00edbb1b3207c8e49e19d2d821305044616b565b03a37f6e1ba975bf7a246
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release files / pytdxdata-0.6.1-py3-none-any.whl

Download URL pytdxdata-0.6.1-py3-none-any.whl
Size 118.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
415fb29ed52822c2c00d177dd8693806d450fda0e8b3f09ced48e8958f82a0d5
BLAKE2b-256 checksum
How to use checksums
2bf6a4c0d5b508495bc544df877cb452080e5d9ee8c8492b02ddece44b74bcea
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 22, 2026.

Transparency log

Release history Release notifications | RSS feed

0.6.2

2 release files

This release

0.6.1 This release

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page