Skip to content

electkismet/eltdx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eltdx

PyPI Python 3.10+ Build

通达信在线行情协议 Python 库。可以拿 A 股的行情、分时、成交明细、K 线、竞价、公司信息、题材信息等信息,支持 MCP 工具。

  1. 本项目仅以个人学习、协议研究和非商业研究为目的进行开发。
  2. 本项目基于互联网公开信息搜集开发。
  3. 项目本身、衍生产品及通过本项目获取的数据禁止用于任何商业行为、付费服务、生产服务、转售或其他营利用途,产生的任何数据、损失或法律责任由使用者自负。
  4. 对第三方服务器或服务的访问,用户需自行遵守相关法律法规及服务协议。
  5. 请勿将本项目用于侵犯他人权益、违反监管规定或滥用第三方服务的行为。

感谢 injoyai/tdxrainx/pytdx 的启发。

eltdx 功能简介

类型 能力 入口
行情基础 代码表、代码数量、批量行情查询/推送、分类行情 client.codesclient.quotes
图表数据 K 线、当日分时、历史分时、近期分时、分时副图、小走势图 client.barsclient.minutes
成交数据 当日成交明细、历史成交明细、集合竞价明细、09:25 竞价成交快照 client.tradesclient.auctions
公司基础 股本变迁、除权除息、财务基础信息、特殊品种涨跌停限制 client.corporateclient.limits
F10 资料 公司概况、热点题材、公告、新闻、研报、财务报表、估值、主营构成 client.f10F10Client
常用场景 股票信息汇总、个股概念板块、概念板块成分股、竞价数据、批量行情表、复权/不复权 K 线 client.helpers
工具能力 连接池、主站测速、自动心跳、低频数据缓存、JSON 序列化、交易日工具、MCP 工具服务 TdxClientWorkdayServiceeltdx-mcp

调用方法和返回字段看 METHOD_REFERENCE.md,常用问题入口看 docs/helpers/README.md,完整 API 看 API_REFERENCE.md,字段总表看 FIELD_REFERENCE.md,F10 资料看 F10_7615.md,MCP 工具看 MCP.md

安装

pip install eltdx

如果需要启动 MCP stdio 工具服务,安装可选依赖:

pip install "eltdx[mcp]"

源码目录安装:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -U pip
pip install -e .

源码开发时建议始终先安装到当前虚拟环境;否则本机如果已有旧版 eltdxpython -m eltdx... 可能导入 site-packages 里的旧包。

安装后可以先看命令帮助:

eltdx-smoke --help
eltdx-f10-smoke --help

MCP 工具服务启动后会占用当前终端作为 stdio 服务:

eltdx-mcp

源码开发自测:

python -m pytest

源码仓库里的 scripts/ 目录用于开发和排查;通过 pip install eltdx 安装后,优先使用上面的命令行入口。

快速开始

查行情走 TdxClient

from eltdx import TdxClient

with TdxClient(timeout=3) as client:
    quote = client.get_quote(["sz000001", "sh600000"])
    bars = client.get_kline("day", "sz000001", count=30)
    minute = client.get_minute("sz000001")
    ticks = client.get_history_trade_day("sz000001", "2026-05-20")

print(quote[0])
print(bars.bars[-1])

查 F10 / 资料数据走 client.f10

from eltdx import TdxClient

client = TdxClient(timeout=3)
profile = client.f10.company_profile("000034")
topics = client.f10.hot_topics("000034")
notices = client.f10.announcements("000034")

print(profile.rows[0])
print(topics.rows[:3])
print(notices.rows[:3])

如果只查 F10,也可以直接用轻量 HTTP 客户端:

from eltdx import F10Client

f10 = F10Client(timeout=3)
print(f10.company_profile("000034").rows[0])

行情接口

功能 调用方法 底层接口 返回内容 / 用途 文档
握手 client.session.handshake() 0x000d 返回服务端日期时间、交易时段、主站名、产品标识;通常连接后自动使用 文档
心跳 client.session.heartbeat() 0x0004 返回服务端心跳响应;长连接默认后台 30 秒保活,也可手动调用 文档
代码数量 client.codes.count("sz") / get_count() 0x044e 返回沪、深、北某个市场的证券数量;常用于全量拉代码表前确定规模 文档
代码表 client.codes.list() / get_codes_all() 0x044d 返回代码、名称、市场、价格精度、昨收、A 股 / ETF / 指数等本地分类 文档
批量快照 client.quotes.get_snapshots() / get_quote() 0x054c + 0x0547 按代码列表返回现价、涨跌幅、成交量额、内外盘和盘口;get_quote() 补齐五档盘口 文档
五档盘口 client.get_quote_depth() / client.quotes.get_depth() 0x0547 用刷新接口按代码列表直接返回买一到买五 / 卖一到卖五 文档
分类行情 client.quotes.list_by_category() 0x054b 按市场或板块分页返回行情列表;可按涨幅、价格、成交额等服务端排序 文档
增量刷新 / 推送队列 client.quotes.refresh() / poll_push() 0x0547 返回关注代码的增量行情;未配对推送帧进入 push queue 供调用方读取 文档
K 线 / 周期线 client.bars.get() / get_kline() 0x052d 返回 OHLC、成交量额、前收等 K 线;支持 1/5/15/30/60 分钟、日、周、月、季、年线和服务端复权/不复权参数 文档
全量 K 线分页 client.bars.all() / get_kline_all() 0x052d 自动按页拉取 K 线并合并;适合补历史日线或分钟线数据 文档
当日分时 client.minutes.today() / get_minute() 0x0537 返回当前交易日每分钟价格、成交量、均价等分时序列 文档
指定日期历史分时 client.minutes.history() / get_history_minute() 0x0fb4 按日期返回某天的分时价格和分钟成交量,适合补单日历史分时 文档
近期历史分时 client.minutes.recent() 0x0feb 返回服务端近期窗口内的历史分时;适合查较近交易日的分钟走势 文档
分时副图 client.minutes.aux() 0x051b 返回分时页下方副图数据,例如买卖力道、成交对比等序列 文档
小走势图 client.minutes.sparkline() 0x0fd1 返回单标的小型价格走势序列,适合列表页或概览页的小图 文档
当日成交明细 client.trades.today() / get_trades() 0x0fc5 返回当前交易日一条条成交记录:时间、价格、成交量、方向、状态等 文档
历史成交明细 client.trades.history() / get_history_trade_day() 0x0fc6 返回指定日期一条条成交记录;支持分页拉全,包含委托笔数等扩展字段 文档
集合竞价明细 client.auctions.series() / get_call_auction() 0x056a 返回当前交易日集合竞价阶段的价格、虚拟成交量、买卖盘等明细记录 文档
09:25 竞价成交快照 client.get_auction_0925() 0x0fc6 从历史成交明细里扫描 09:25 最终成交,返回价格、成交量、成交额和方向状态 文档
股本变迁 / GBBQ client.corporate.capital_changes() / get_gbbq() 0x000f 返回除权除息、股本变化、增发、回购等股本事件记录 文档
除权除息整理 client.get_xdxr() 0x000f 从股本变迁里筛出除权除息事件,整理分红、送转、配股等字段 文档
指定日期股本 client.get_equity() 0x000f 从股本变化记录中取某日期之前最近一次流通股本和总股本 文档
换手率 client.get_turnover() 0x000f 用成交量和流通股本本地计算换手率;服务器不直接返回这个结果 文档
本地复权因子 client.get_factors() 0x052d + 0x000f 用不复权日 K 和除权除息记录计算本地前复权 / 后复权因子 文档
财务基础信息 client.corporate.finance_batch() / get_finance_batch() 0x0010 批量返回流通股本、总股本、EPS、资产、负债、收入、利润等基础财务字段 文档
特殊品种涨跌停限制 client.limits.special() 0x0452 返回特殊品种涨跌停限制表;需要按表扫描后本地索引到具体代码 文档

7709 命令和 API 对照见 COMMANDS_7709.md,完整调用参数见 API_REFERENCE.md

K 线周期和复权

K 线是最常用的接口之一,周期和复权参数可以直接这样传:

client.bars.get("sz000001", period="day", count=200)
client.bars.get("sz000001", period="week", count=100)
client.bars.get("sz000001", period="year", count=20)
client.bars.get("sz000001", period="1m", count=240)
client.bars.get("sz000001", period="day", adjust="qfq", count=200)
client.bars.get("sz000001", period="day", adjust="fixed_qfq", anchor_date="2024-06-03")
参数 可选值 含义
period 1m, 5m, 15m, 30m, 60m 分钟 K 线
period day, week, month, quarter, year 日 K、周 K、月 K、季 K、年 K
period 10m, 2d, 5s 这类形式 协议层支持自定义分钟、N 日、N 秒周期;实际返回以服务端支持为准
adjust None / none 不复权
adjust qfq / front 前复权
adjust hfq / back 后复权
adjust fixed_qfq / fixed_hfq 定点前复权 / 定点后复权,需要配合 anchor_date
anchor_date YYYY-MM-DDYYYYMMDDdate 定点复权基准日期,仅定点复权时需要

F10 资料接口

功能 调用方法 底层 Entry 返回内容 / 用途 文档
通用 Entry 调用 client.f10.call(entry, body/params) 7615/TQLEX 直接 POST 任意 TQLEX Entry;适合验证资料函数或补充调用特殊 Entry 文档
股票基础信息 client.f10.stock_info() CWServ.tdxf10_gg_comreq 返回股票名称、代码、市场;也用于主营构成报告期、题材 ID 等辅助查询 文档
公司概况 client.f10.company_profile() CWServ.tdxf10_gg_gsgk 返回发行上市信息,如上市日期、发行方式、发行价、募资额、承销商等 文档
主营构成 client.f10.business_composition() CWServ.tdxf10_gg_jyfx 返回主营收入、成本、毛利、收入占比、毛利率;不传报告期时自动取最新期 文档
股东增减持 client.f10.shareholder_change_plans() CWServ.tdxf10_gg_gdyj 返回公告日、股东名称、变动方向、拟变动数量 / 比例、计划起止日期等 文档
分红融资 client.f10.dividend_financing() CWServ.tdxf10_gg_fhrz 返回分红方案、股权登记日、除权派息日、股息率、股利支付率、融资相关数据 文档
增发获配 client.f10.allotment_dates() / allotment_details() CWServ.tdxf10_gg_fhrz_zfhpmx 先取增发日期,再按日期取获配机构、获配数量、获配金额、锁定期等明细 文档
财务报表 client.f10.finance_report() CWServ.tdxf10_gg_cwfx 返回多期财务报表;默认资产负债表,含货币资金、资产总计、负债合计、股东权益等 文档
财务诊断 client.f10.finance_diagnosis() CWServ.tdxf10_gg_cwzd 返回营运、盈利、成长、现金流、资产质量、Z 值预警、财务总评分等诊断项 文档
个股总评 client.f10.stock_score() CWServ.tdxf10_gg_ggzp 返回综合评分、行业排名、市场排名、资金面 / 基本面 / 消息面 / 主题面评分 文档
盈利预测 client.f10.profit_forecast() CWServ.tdxf10_gg_ybpj 返回未来三年 EPS、归母净利润、营业收入预测、历史实际值和预测机构数量 文档
题材概念行情 client.f10.theme_market() HQServ.hq_nlp_tcihq 返回相关板块、板块成分股、主力控盘比例、主力资金走势、区间统计等 文档
估值市场数据 client.f10.valuation() HQServ.hq_nlp_gpsj 返回 PE(TTM)、PB(MRQ)、市销率、市现率、估值百分位、流通市值、总市值等 文档
市场 / 行业排名 client.f10.ranking_detail() CWServ.tdxf10_gg_zxts_rqpm 返回当前股票排名、排名变化,以及同组股票代码、简称、市场和更新时间 文档
资本运作治理 client.f10.governance() CWServ.tdxf10_gg_zbyz 返回担保明细、违规处理、处罚公布日、案情进展、处罚决定、详情记录 ID 等 文档
热点题材 client.f10.hot_topics() CWServ.tdxf10_gg_rdtc 返回题材名称、关联度、入选日期、入选原因、事件名称和事件详情 ID 文档
题材内对比 client.f10.topic_compare() / topic_compare_first() CWServ.tdxf10_gg_rdtc_gndb 返回题材内股票财务 / 市值 / 涨幅排名,可用于比较同题材个股 文档
公司资讯 / 研报 client.f10.company_news() CWServ.tdxf10_gg_gszx 返回研报标题、评级类别、研究员、撰写日期、研报地址,也可查监管措施 文档
沪深股通持仓 client.f10.northbound_holding() CWServ.tdxf10_gg_zlcc 返回沪股通 / 深股通持股比例、持股数量、变动股数、收盘价等序列 文档
详情正文 client.f10.detail() CWServ.tdxf10_gg_idreq 按记录 ID 返回正文标题和正文内容;常接热点题材事件、违规处理等详情 文档
新闻 / 公告 / 路演 client.f10.news() / announcements() / roadshows() CWSearch.tzx_rcache 返回新闻、公告、路演列表;含标题、日期、来源、公告类型、PDF 地址等 文档

F10 返回统一是 F10Response。常用结果在 response.rows,多表结果在 response.tables。完整说明见 F10_7615.md

连接和缓存

默认 TdxClient() 使用真实 7709 行情主站;不传 host / hosts 时,会读取包内 tdx_server.json

from eltdx import TdxClient

with TdxClient(host="116.205.183.150:7709", timeout=3) as client:
    print(client.get_quote("sz000001"))

with TdxClient.from_hosts(pool_size=2, probe_hosts=True, timeout=3) as client:
    print(client.codes.count("sz"))

真实 socket 连接默认每 30 秒自动心跳保活。关闭后台心跳:

client = TdxClient(heartbeat_interval=None)

低频数据会缓存到内存里,包括代码数量、全量代码表、股本变迁和财务基础信息。实时行情、分时、成交明细、K 线默认不缓存。

client.get_codes_all("sz", refresh=True)
client.get_gbbq("sz000001", refresh=True)
client.clear_cache()

调试和导出

部分接口支持 include_raw=True,用于保留原始 payload 或单条记录 hex,方便排查字段解析问题。

gbbq = client.get_gbbq("sz000001", include_raw=True)
bars = client.get_kline("day", "sz000001", include_raw=True)
ticks = client.get_history_trade("sz000001", "2026-05-20", include_raw=True)

返回模型可以直接转 JSON:

from eltdx import to_json, to_jsonable

data = to_jsonable(client.get_quote("sz000001"))
text = to_json(data, indent=2)

真实环境 smoke:

eltdx-smoke --timeout 6 --no-heartbeat
eltdx-f10-smoke --code 000034 --timeout 8

源码仓库可运行更多开发脚本,例如批量导出某段日期的 09:25 竞价成交快照:

python scripts/smoke/export_auction_925_daily.py --code sz000001 --start 2026-04-01 --end 2026-04-30

文档

使用文档现在按层级拆开看:

层级 看哪里 适合解决什么问题
快速总览 本 README 这个库能查什么、用哪个方法、底层接口是什么
常用问题 docs/helpers/README.md 按问题进入对应调用说明
版本更新 docs/UPDATE_FROM_0_5_1.md v0.5.1v1.0.0 的更新说明
方法字段手册 docs/METHOD_REFERENCE.md 每个调用方法怎么传参、返回哪些解析字段
具体调用 docs/API_REFERENCE.md 每组 API 怎么传参数、返回什么、有哪些注意点
7709 接口对照 docs/COMMANDS_7709.md 19 个二进制命令分别对应哪个业务 API
F10 Entry 对照 docs/F10_7615.md 7615/TQLEX 每个资料 Entry 怎么调用
字段说明 docs/FIELD_REFERENCE.md 返回模型里的字段中文含义
文档 内容
docs/README.md 文档入口
docs/PRODUCT.md 产品定位和能力总览
docs/UPDATE_FROM_0_5_1.md v0.5.1v1.0.0 的更新说明
docs/helpers/README.md 常用问题入口
docs/METHOD_REFERENCE.md 调用方法、参数和解析字段
docs/methods/README.md 每个调用方法的单页说明
docs/API_REFERENCE.md API 调用说明
docs/EXAMPLES.md 常见复制即用示例
docs/FIELD_REFERENCE.md 返回字段中文含义
docs/F10_7615.md 7615 F10 / TQLEX 调用说明
docs/MCP.md MCP 工具说明
docs/COMMANDS_7709.md 19 个 7709 命令和 API 映射
docs/DEBUG_GUIDE.md 连接、主站和协议排查
docs/ARCHITECTURE.md 项目分层和实现结构
docs/FIELD_MIGRATION.md 历史字段到当前字段的对照
docs/MIGRATION_FROM_OLD.md 历史代码整理说明
docs/ROADMAP.md 实现路线
scripts/README.md smoke / live 脚本说明

常用问题

常用组合调用示例:

from eltdx import TdxClient

with TdxClient(timeout=3) as client:
    table = client.helpers.stock_profile_table(["sz000001", "sh600000"])
    topics = client.helpers.stock_topics("000034")
    stocks = client.helpers.topic_stocks("000034", topic_name="存储芯片")
    auction = client.helpers.auction_data("sz000001", "2026-05-20")

print(table.rows[0])
print(topics.topics[:3])
print(stocks.rows[:10])
print(auction.open_price, auction.open_change_pct, auction.open_amount)

完整入口见 docs/helpers/README.md

联系

许可证

本项目仅允许个人学习、协议研究和非商业研究使用,禁止一切商业使用和滥用。详细条款见 LICENSE

About

通达信A股行情协议 Python 库,MCP,支持快照、分时、逐笔、K 线、集合竞价等接口、量化数据接口,支持MCP给Agent用

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages