Skip to content

TDX 适配器

通达信数据适配器模块,提供股票、指数、期货、债券、港股、期权等数据的通达信接口。

文档索引

文档说明
README模块总览和快速开始
框架文档框架集成、初始化、生命周期
架构说明技术架构、核心组件、数据流程
设计文档设计决策、模式应用、接口规范
API 参考完整 API 文档
使用指南详细使用教程和示例
最佳实践性能优化、错误处理、缓存策略
开发指南二次开发、扩展指南
FAQ常见问题解答
更新日志版本历史和变更内容
配置说明环境变量和配置文件
连接池与健康检查连接管理、容错机制
Base APITdxBaseAdapter 详细文档
Base 开发指南TdxBaseAdapter 开发参考
Base FAQTdxBaseAdapter 常见问题

模块结构

tdx/
├── __init__.py              # 模块入口
├── base.py                  # 适配器基类
├── stock.py                 # 股票数据适配器
├── index.py                 # 指数数据适配器
├── future.py                # 期货数据适配器
├── bond.py                  # 债券数据适配器
├── hkstock.py              # 港股数据适配器
├── option.py                # 期权数据适配器
├── realtime.py              # 实时行情适配器
├── transaction.py           # 成交明细适配器
├── macro.py                 # 宏观数据适配器
├── exchange.py              # 交易所数据适配器
├── extension.py             # 扩展数据适配器
├── tools.py                 # 工具函数
├── ip_selector.py            # IP 选择器
├── connection_pool.py        # 连接池管理
├── pytdx_patch.py           # pytdx 补丁
├── block.py                 # 板块数据管理器
└── financial.py             # 历史财务数据

核心适配器

TdxBaseAdapter

所有 TDX 适配器的基类,提供通用功能:

python
from FQData.DataSource.adapters.tdx import TdxBaseAdapter

adapter = TdxBaseAdapter()

adapter.is_connected  # 检查连接状态
adapter.health_check()  # 健康检查
TdxBaseAdapter.set_default_timeout(1.0)  # 设置超时

TdxStockAdapter

股票数据适配器。

python
from FQData.DataSource.adapters.tdx import TdxStockAdapter

adapter = TdxStockAdapter()
方法说明
get_stock_list(type_)获取股票列表
get_stock_day(code, start, end, frequence)获取股票日线/周线/月线
get_stock_min(code, start, end, frequence)获取股票分钟线
get_stock_info(code)获取股票基本信息
get_stock_latest(code, frequence)获取股票最新一根K线
get_stock_xdxr(code)获取除权除息信息
get_stock_block()获取股票板块数据
get_stock_delist()获取退市股票列表

TdxIndexAdapter

指数数据适配器。

python
from FQData.DataSource.adapters.tdx import TdxIndexAdapter

adapter = TdxIndexAdapter()
方法说明
get_index_list()获取指数列表
get_index_day(code, start, end, frequence)获取指数日线
get_index_min(code, start, end, frequence)获取指数分钟线
get_etf_list()获取ETF/LOF基金列表
get_index_latest(code, frequence)获取指数最新K线

TdxFutureAdapter

期货数据适配器。

python
from FQData.DataSource.adapters.tdx import TdxFutureAdapter

adapter = TdxFutureAdapter()
方法说明
get_extensionmarket_list()获取扩展市场代码列表
get_future_day(code, start, end, frequence)获取期货日线
get_future_min(code, start, end, frequence)获取期货分钟线
get_future_realtime(code)获取期货实时行情
get_future_transaction(code, start, end)获取期货历史成交分笔

TdxBondAdapter

债券数据适配器。

python
from FQData.DataSource.adapters.tdx import TdxBondAdapter

adapter = TdxBondAdapter()
方法说明
get_bond_list()获取债券列表
get_bond_day(code, start, end, frequence)获取债券日线
get_bond_min(code, start, end, frequence)获取债券分钟线
get_bond2stock_list()获取可转债列表
get_bond2stock_day(code, start, end, frequence)获取可转债转股日线

TdxIPSelector

IP 选择器(单例模式)。

python
from FQData.DataSource.adapters.tdx import TdxIPSelector

best_ip = TdxIPSelector.select_best_ip()
print(f"股票最优 IP: {best_ip['stock']}")
print(f"期货最优 IP: {best_ip['future']}")
方法说明
select_best_ip()选择最优 IP
get_mainmarket_ip()获取主板市场 IP
get_extensionmarket_ip()获取期货市场 IP
get_ip_list(type_, n)获取排序后的 IP 列表
reset()重置 IP 缓存

TdxConnectionPool

连接池(单例模式)。

python
from FQData.DataSource.adapters.tdx.connection_pool import get_tdx_pool

pool = get_tdx_pool()
print(f"HQ 连接数: {pool.hq_count}")
print(f"EX 连接数: {pool.ex_count}")

pool.close_all()  # 关闭所有连接

TdxDataManager

板块数据管理器。

python
from FQData.DataSource.adapters.tdx import TdxDataManager

manager = TdxDataManager()
manager.download_and_extract()
df = manager.get_industry_block()

历史财务数据

python
from FQData.DataSource.adapters.tdx import (
    TdxHistoryFinancialCrawler,
    TdxHistoryFinancialReader,
)

crawler = TdxHistoryFinancialCrawler()
crawler.download_and_parse()

reader = TdxHistoryFinancialReader()
df = reader.get_df('financial_data.zip')

快速开始

安装依赖

bash
pip install pytdx>=1.88

获取股票日线

python
from FQData.DataSource.adapters.tdx import TdxStockAdapter

adapter = TdxStockAdapter()

data = adapter.get_stock_day(
    code='600000',
    start='2024-01-01',
    end='2024-12-31',
    frequence='day'
)

print(f"获取 {len(data)} 条数据")

获取股票分钟线

python
data = adapter.get_stock_min(
    code='600000',
    start='2024-01-01',
    end='2024-01-31',
    frequence='5min'
)

获取指数数据

python
from FQData.DataSource.adapters.tdx import TdxIndexAdapter

adapter = TdxIndexAdapter()

data = adapter.get_index_day(
    code='000001',
    start='2024-01-01',
    end='2024-12-31'
)

获取期货数据

python
from FQData.DataSource.adapters.tdx import TdxFutureAdapter

adapter = TdxFutureAdapter()

data = adapter.get_future_day(
    code='IF2401',
    start='2024-01-01',
    end='2024-12-31'
)

获取实时行情

python
from FQData.DataSource.adapters.tdx import TdxRealtimeAdapter

adapter = TdxRealtimeAdapter()

data = adapter.get_realtime(['600000', '000001'])

频率类型

日线频率

频率category 值
日线 (day)9
周线 (week)5
月线 (month)6
季线 (quarter)10
年线 (year)11

分钟频率

频率category 值
1分钟8
5分钟0
15分钟1
30分钟2
60分钟3

配置

超时设置

python
from FQData.DataSource.adapters.tdx import TdxBaseAdapter

TdxBaseAdapter.set_default_timeout(1.0)

环境变量

bash
export TDX_DEFAULT_TIMEOUT=0.7

配置文件

ini
[IPLIST]
exclude = [{'ip': '1.2.3.4', 'port': 7709}]
default = {'stock': {'ip': '106.14.201.200', 'port': 7709}, 'future': {'ip': '112.95.244.183', 'port': 7709}}

错误处理

python
from FQData.DataSource.adapters.tdx.base import (
    DataSourceConnectionError,
    DataNotFoundError,
    DataSourceAPIError,
)

try:
    data = adapter.get_stock_day('600000', '2024-01-01', '2024-12-31')
except DataSourceConnectionError:
    print("连接失败")
except DataNotFoundError:
    print("数据未找到")
except DataSourceAPIError:
    print("API 调用失败")

相关文档