- backtest_usage(742→485):CLI 章移交 cli-backtest.md,示例/注意事项 抽至 backtest-examples.md,重建目录 - quantitative-guide(628→325):第 5-7 章(滑点/执行仿真/归因/工作流) 抽至 quantitative-advanced.md 并重编号 - api_reference(704→478):删除过期版本横幅(1.16.2)与快速开始教程段; 数据模型/枚举与 field_mapping.md 逐表核对后去重(field_mapping 为唯一权威); WebSocket 节随 web-api.md 合并移除 - field_mapping:吸收 MAC 协议枚举(Period/Adjust/Category/BoardType/ SortType/ExMarket),全部文档回到 ≤500 行 Co-Authored-By: Claude <noreply@anthropic.com>
14 KiB
easy_tdx API 参考文档
本文档为方法速查参考;上手教程见 python-api.md,数据模型与枚举字段见 field_mapping.md,Web 服务端点见 web-api.md。
文档不写死版本号,对应版本以 CHANGELOG.md 与 pyproject.toml 为准。
目录
客户端
TdxClient(同步)
TdxClient(host, port=7709, timeout=15.0, auto_reconnect=True)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| host | str |
KNOWN_HOSTS[0] |
服务器 IP 地址 |
| port | int |
7709 |
服务器端口 |
| timeout | float |
15.0 |
连接/读写超时(秒) |
| auto_reconnect | bool |
True |
断线自动重连 |
支持上下文管理器:with TdxClient(...) as c:
工厂方法
TdxClient.from_best_host(hosts=KNOWN_HOSTS, port=7709, timeout=15.0,
ping_timeout=5.0, auto_reconnect=True)
测量 hosts 中所有服务器延迟,选择最低延迟的建立连接。若全部不可达,回退到 hosts[0]。
AsyncTdxClient(异步)
AsyncTdxClient(host, port=7709, timeout=15.0, auto_reconnect=True, heartbeat_interval=60.0)
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| heartbeat_interval | float |
60.0 |
心跳间隔(秒),≤0 禁用 |
所有方法均为 async def,使用 await 调用。支持异步上下文管理器:async with AsyncTdxClient(...) as c:
注意:单个 AsyncTdxClient 仅维护一条 TCP 连接,并发调用在连接内串行执行。
连接与服务器选择
ping_all
TdxClient.ping_all(hosts=KNOWN_HOSTS, port=7709, timeout=5.0) -> list[tuple[str, float]]
测量多台服务器延迟,返回按延迟升序排列的 (host, seconds) 列表。
示例:
results = TdxClient.ping_all()
for host, latency in results:
print(f"{host}: {latency * 1000:.1f} ms")
connect / close
c.connect() # 建立连接
c.close() # 关闭连接
建议使用上下文管理器自动管理。
市场信息
get_security_count
c.get_security_count(market: Market) -> int
获取指定市场的证券总数。
| 参数 | 类型 | 说明 |
|---|---|---|
| market | Market |
市场代码(SZ/SH/BJ) |
get_security_list
c.get_security_list(market: Market, start: int) -> list[SecurityInfo]
获取证券列表(每页约 1000 条)。
| 参数 | 类型 | 说明 |
|---|---|---|
| market | Market |
市场代码 |
| start | int |
分页偏移量(0, 1000, 2000, ...) |
get_security_list_all
c.get_security_list_all() -> list[SecurityInfo]
获取沪深 A 股完整列表,自动挂载行业信息(通达信行业 + 申万行业)。
注意:
- 内部会拉取
tdxhy.cfg并遍历全部证券,耗时较长 Market.BJ因服务器端问题暂不纳入
A股过滤规则:
- 沪市:60xxxx(主板)、68xxxx(科创板)
- 深市:00xxxx(主板)、30xxxx(创业板)
get_security_quotes
c.get_security_quotes(stocks: list[tuple[Market, str]]) -> list[SecurityQuote]
批量获取实时五档行情,最多 80 只/次。
| 参数 | 类型 | 说明 |
|---|---|---|
| stocks | list[tuple[Market, str]] |
(市场, 代码) 列表 |
K 线数据
get_security_bars
c.get_security_bars(market: Market, code: str, category: KlineCategory,
start: int, count: int = 800, *, bar_time: str = "start") -> pd.DataFrame
获取个股 K 线数据。
| 参数 | 类型 | 说明 |
|---|---|---|
| market | Market |
市场代码 |
| code | str |
证券代码(如 "600000") |
| category | KlineCategory |
K 线周期 |
| start | int |
分页偏移(0 为最新) |
| count | int |
请求数量(最多 800) |
| bar_time | str |
时间戳语义,见下方说明 |
bar_time(分钟级周期时间戳对齐):通达信协议默认用 bar 开始时间打时间戳
(5min 线上午最后一根标 11:25、下午第一根标 13:00;午休 11:30–13:00 无 bar)。
传 bar_time="end" 切换为 bar 右端点(= 开始 + 周期时长,标 11:30/13:05),
对齐 Tushare / 同花顺 / 聚宽约定。仅对分钟级周期(MIN_1/5/15/30/60)生效,
日线及以上不受影响。默认 "start" 保持完全向后兼容。
get_index_bars
c.get_index_bars(market: Market, code: str, category: KlineCategory,
start: int, count: int = 800, *, bar_time: str = "start") -> pd.DataFrame
获取指数 K 线数据。参数(含 bar_time)同 get_security_bars。
常用指数:
| 指数 | market | code |
|---|---|---|
| 上证指数 | SH | 000001 |
| 深证成指 | SZ | 399001 |
| 创业板指 | SZ | 399006 |
| 沪深300 | SH | 000300 |
分时数据
get_minute_time_data
c.get_minute_time_data(market: Market, code: str) -> list[MinuteBar]
获取今日分时数据(240 条)。内部优先尝试历史接口,失败后回退到实时接口。
get_history_minute_time_data
c.get_history_minute_time_data(market: Market, code: str, date: int) -> list[MinuteBar]
获取历史某日分时数据。
| 参数 | 类型 | 说明 |
|---|---|---|
| date | int |
YYYYMMDD 格式(如 20250110) |
逐笔成交
get_transaction_data
c.get_transaction_data(market: Market, code: str,
start: int, count: int = 800) -> list[TransactionRecord]
获取当日逐笔成交。
get_history_transaction_data
c.get_history_transaction_data(market: Market, code: str, date: int,
start: int, count: int = 800) -> list[TransactionRecord]
获取历史逐笔成交。
| 参数 | 类型 | 说明 |
|---|---|---|
| date | int |
YYYYMMDD 格式 |
| start | int |
分页偏移 |
| count | int |
请求数量(最多 800) |
财务与公司信息
get_xdxr_info
c.get_xdxr_info(market: Market, code: str) -> list[XdxrRecord]
获取除权除息历史记录。返回值按时间排序,包含分红、送股、配股、股本变动等。
get_finance_info
c.get_finance_info(market: Market, code: str) -> FinanceInfo
获取最新财务数据,包含股本结构、资产负债、利润指标等。
get_company_info_category
c.get_company_info_category(market: Market, code: str) -> list[CompanyInfoCategory]
获取公司信息文件目录,返回可用的文件名、起始偏移和长度。
get_company_info_content
c.get_company_info_content(market: Market, code: str, filename: str,
offset: int, length: int) -> str
读取公司信息文本内容。需先通过 get_company_info_category 获取文件名和长度。
板块信息
get_block_info
c.get_block_info(filename: str) -> list[TdxBlock]
获取并解析板块文件。
常用文件名:
| 文件名 | 说明 |
|---|---|
block_zs.dat |
行业/指数板块 |
block_gn.dat |
概念板块 |
block_fg.dat |
风格板块 |
资金流向
get_fund_flow
c.get_fund_flow(market: Market, code: str) -> pd.DataFrame
获取个股当日资金流向(基于 L1 逐笔数据统计)。返回含 main_net_inflow(主力净流入)列。
口径限制见下方 get_history_fund_flow 的"口径注意"(两个接口同,Issue #55)。
资金分级:
| 级别 | 单笔成交额 |
|---|---|
| 超大单 | > 100 万 |
| 大单 | 20 ~ 100 万 |
| 中单 | 4 ~ 20 万 |
| 小单 | ≤ 4 万 |
get_history_fund_flow
c.get_history_fund_flow(market: Market, code: str,
start: int, count: int) -> pd.DataFrame
获取历史日线资金流向序列,由"日K线取日期 + 逐笔成交重算"实现(标准服务器
无资金流专用指令,Issue #52)。当日 bar 盘中取当日实时逐笔。返回列含
main_net_inflow(主力净流入,单位元)。
口径注意(Issue #55,两个接口同):分档基于 0x0fb5 逐笔接口返回的"单笔
成交额",而该接口的记录是交易所真实逐笔聚合后的(实测 000001.SZ 单日
约 17:1),分档看的也不是挂单额。高价股单笔普遍被聚合推过 100 万/20 万阈值,
小单档可不足成交额 1%、主力档常占 95%+——main_net_inflow 实质更接近
"当日主动买卖总失衡"(另有约 2–4% 方向未定的成交被排除)。东财/同花顺的
"主力净流入"基于 L2 逐笔委托、按挂单额分档、四档净额严格归零——两套口径
不可比(实证同规则选股信号重合度仅约 14%),勿混用于同一张表或同一个因子。
文件下载
get_report_file
c.get_report_file(filename: str) -> bytes
从服务器拉取大文件(分块传输)。
常用文件:
| 文件名 | 说明 |
|---|---|
base_info.zip |
基础信息包 |
tdxhy.cfg |
行业映射配置 |
市场统计
get_market_stat
c.get_market_stat() -> MarketStat
获取 A 股全市场涨跌统计(基于 880005 行情统计代码)。
注意:suspended_count 是 total - up - down - neutral 的残差估算值。
异常
所有异常继承自 TdxError。
| 异常 | 说明 |
|---|---|
TdxError |
基础异常 |
TdxConnectionError |
连接错误(断线、超时等) |
TdxDecodeError |
数据解析错误 |
TdxCommandError |
命令执行错误 |
涨跌停价计算
get_price_limits
c.get_price_limits(market: Market, code: str, name: str,
pre_close: float) -> tuple[float | None, float | None]
按交易规则计算涨跌停价。返回 (涨停价, 跌停价),不适用时对应位置为 None。
内部逻辑:
- 自动检测上市初期不设涨跌幅限制的窗口期
- 通过日 K 线条数估算已上市交易天数
- 调用
compute_price_limits()执行规则计算
compute_price_limits(独立函数)
from easy_tdx.codec.price_rules import compute_price_limits
compute_price_limits(market, code, name, pre_close, listed_days=None)
-> tuple[float | None, float | None]
涨跌幅规则:
| 类型 | 涨跌幅 |
|---|---|
| 主板(60/00) | ±10% |
| 科创板(68) | ±20% |
| 创业板(30) | ±20% |
| ST 股 | ±5% |
| 上市首 N 日 | 不设限制 |
全局常量
| 常量 | 类型 | 说明 |
|---|---|---|
KNOWN_HOSTS |
list[str] |
A 股行情服务器列表 |
KNOWN_EX_HOSTS |
list[str] |
扩展行情服务器列表 |
XDXR_CATEGORY_NAMES |
dict[int, str] |
除权除息事件类型映射 |
完整 API 列表(MAC 协议客户端)
MacClient / AsyncMacClient
| 方法 | 说明 |
|---|---|
get_stock_quotes(stocks, fields) |
批量实时报价 |
get_stock_quotes_list(category, ...) |
市场分类排序报价 |
get_stock_kline(market, code, period, ...) |
K 线(支持复权) |
get_stock_kline_with_indicators(market, code, indicators, ...) |
K 线 + 技术指标 |
get_tick_chart(market, code, date) |
单日分时图 |
get_tick_charts(market, code, days) |
多日分时图 |
get_chart_sampling(market, code) |
分时缩略采样 |
get_transactions(market, code, ...) |
逐笔成交 |
get_symbol_info(market, code) |
个股特征快照 |
get_board_list(board_type, ..., sort_column) |
板块列表(sort_value 列=排序键指标值) |
get_board_members(board_symbol, ...) |
板块成分股报价 |
get_board_summary(board_symbol, ...) |
板块汇总(成交额、主力净流入、涨跌家数) |
get_board_ranking(board_type, top_n, sort_by, ...) |
板块涨跌幅排行榜(行业/概念排行) |
get_board_change_ranking(board_type, target_date, days, ...) |
板块 N 日涨跌幅排行 |
get_belong_board(market, code) |
个股所属板块 |
get_capital_flow(market, code) |
资金流向 |
get_auction(market, code) |
集合竞价 |
get_unusual(market, ...) |
市场异动 |
get_server_info() |
服务器交易时段 |
get_kline_offset(offset, count) |
K 线偏移信息 |
get_goods_list(market, ...) |
扩展市场商品列表 |
MacExClient / AsyncMacExClient
| 方法 | 说明 |
|---|---|
goods_count(market) |
商品总数 |
goods_list(market, start, count) |
商品列表 |
goods_quotes(stocks, fields) |
批量报价 |
goods_quotes_list(market, ...) |
市场分类报价列表 |
goods_kline(market, code, period, ...) |
K 线(支持复权) |
goods_tick_chart(market, code, ...) |
分时图 |
goods_chart_sampling(market, code) |
分时缩略采样 |
goods_transaction(market, code, ...) |
逐笔成交 |