Python+pytdx 免费获取通达信行业实时行情,告别 miniQMT VIP 付费限制
本文关键词:Python 量化交易、pytdx 教程、通达信行情数据、免费行业行情、行业成份股获取、量化策略数据准备本文适合人群:量化交易入门者、Python 财经数据分析爱好者、A 股板块研究散户、不想付费开通行情 VIP 的交易者
一、文章背景
做 A 股板块轮动、行业量化分析的朋友大概率都遇到过这个痛点:miniQMT、主流行情软件的行业实时行情、成份股批量导出功能,大多需要开通 VIP 付费权限,仅为了基础的行业行情数据付费,性价比极低;而公开的免费财经 API,要么有频次限制,要么数据延迟、更新不及时。
本文就给大家分享一套零成本、可复现、数据与通达信官方完全同步的行业行情获取方案:基于开源库pytdx,对接通达信官方行情服务器,免费抓取行业实时 K 线数据 + 全行业成份股列表,全程无付费门槛,代码可直接复制运行,零基础也能快速落地。
二、前置环境准备
在开始操作前,只需准备 2 个基础环境,无任何付费依赖:
- Python 3.7 及以上版本(Anaconda / 原生 Python 均可,推荐 3.8 + 稳定版)
- 通达信 PC 端客户端(官网免费下载即可,无需登录、无需开通任何权限)
三、步骤 1:核心依赖库 pytdx 安装
pytdx是量化圈广泛使用的开源项目,基于通达信官方数据协议做了 Python 封装,无需破解软件、无需登录账号,即可直接对接通达信行情服务器获取数据,是免费获取 A 股行情数据的神器。
3.1 常规安装方式
打开终端 / CMD,直接通过 pip 命令安装:
pip install pytdx
3.2 国内镜像加速安装(解决安装失败 / 超时问题)
如果出现下载超时、安装失败的情况,直接指定清华镜像源安装,完美解决网络问题:
pip install pytdx -i https://pypi.tuna.tsinghua.edu.cn/simple
四、步骤 2:自动筛选通达信最优行情服务器 IP
pytdx的核心原理是通过 TCP 连接通达信官方行情服务器获取数据,因此需要先找到延迟最低、连接最稳定的服务器 IP。
无需手动查找 IP、无需挨个测试连通性,pytdx自带了最优 IP 筛选工具,1 行代码即可自动完成全量服务器测速,返回最优节点:
from pytdx.hq import TdxHq_API
from pytdx.util.best_ip import select_best_ip
# 自动测速并返回最优服务器IP+端口
best_ip = select_best_ip()
print("最优通达信行情服务器:", best_ip)
运行结果示例
最优通达信行情服务器: {'ip': '115.238.90.165', 'port': 7709}
注意:返回的 IP 和端口为后续连接服务器的核心参数,建议每次运行前先执行此代码,确保使用当前最优节点,避免连接超时问题。
五、步骤 3:行业成份股数据导出与 Python 结构化读取
pytdx无法直接批量获取全行业成份股列表,但行业成份股的变动频率极低(通常 1 周 - 1 个月才会调整一次),因此我们可以通过通达信免费客户端一键导出,再用 Python 转为结构化数据,全程不到 1 分钟。
5.1 通达信端导出行业板块成份
- 打开通达信 PC 端免费客户端,无需登录账号,键盘直接输入
34,快速调出「数据导出」功能; - 在弹出的窗口中,切换到板块成份导出 tab 页;
- 选择文件导出目录,分隔格式勾选「逗号 (,)」,点击「开始导出」;
- 导出完成后,目标目录会生成
行业板块.txt文件,这就是我们需要的全行业成份股核心文件。
5.2 Python 读取行业成份股数据
通过 pandas 读取导出的 txt 文件,转为 DataFrame 结构化表格,方便后续分析和调用,代码如下:
import pandas as pd
def read_tdx_industry(file_path):
"""
读取通达信导出的行业板块成份股数据
:param file_path: 行业板块.txt文件的完整路径
:return: 结构化的行业-个股对应DataFrame
"""
# 定义列名:行业代码、行业名称、股票代码、股票名称
columns = ["industry_code", "industry_name", "stock_code", "stock_name"]
# 注意:通达信导出文件编码为GBK,必须指定encoding,否则会乱码
df = pd.read_csv(file_path, header=None, encoding="gbk", names=columns)
return df
# 替换为你自己的文件路径,Windows路径注意加r转义
industry_df = read_tdx_industry(r"D:\通达信导出\行业板块.txt")
# 打印前10行数据,验证读取结果
print(industry_df.head(10))
读取结果示例
| 序号 | industry_code | industry_name | stock_code | stock_name |
|---|---|---|---|---|
| 0 | 881002 | 煤炭开采 | 000552 | 甘肃能化 |
| 1 | 881002 | 煤炭开采 | 000571 | 新大洲 A |
| 2 | 881002 | 煤炭开采 | 000937 | 冀中能源 |
| 3 | 881002 | 煤炭开采 | 000983 | 山西焦煤 |
六、步骤 4:核心功能 - 获取行业实时 K 线行情数据
拿到行业代码、最优服务器 IP 后,即可通过pytdx获取对应行业的实时 K 线行情数据,支持日 K、分钟 K、周 K、月 K 等全周期,数据与通达信官方完全同步,无延迟、无偏差。
6.1 完整可运行代码
from pytdx.hq import TdxHq_API, TDXParams
# 初始化行情API对象
api = TdxHq_API()
# 替换为步骤2中获取的最优服务器IP和端口
SERVER_IP = "115.238.90.165"
SERVER_PORT = 7709
# 替换为你要查询的行业代码,示例为煤炭开采(881002)
INDUSTRY_CODE = "881002"
# with语句自动管理连接,无需手动关闭
with api.connect(SERVER_IP, SERVER_PORT):
# 获取行业指数K线数据
kline_data = api.get_index_bars(
# K线周期:可修改为分钟线/周线/月线,下文附参数对照表
category=TDXParams.KLINE_TYPE_DAILY,
# 市场类型:通达信行业指数均为沪市,固定为MARKET_SH
market=TDXParams.MARKET_SH,
# 行业指数代码
code=INDUSTRY_CODE,
# 数据起始位置:0为最新一根K线
start=0,
# 获取K线数量:最大支持单次800根,可循环获取历史全量数据
count=1000
)
# 将返回数据转为DataFrame格式,方便后续分析
kline_df = api.to_df(kline_data)
# 打印数据列名和前5行,验证结果
print("数据列名:", kline_df.columns.tolist())
print(kline_df.head())
6.2 关键参数说明
| 参数 | 可选值说明 |
|---|---|
| category | K 线周期,常用值:TDXParams.KLINE_TYPE_DAILY= 日 KTDXParams.KLINE_TYPE_1MIN=1 分钟 KTDXParams.KLINE_TYPE_5MIN=5 分钟 KTDXParams.KLINE_TYPE_WEEKLY= 周 KTDXParams.KLINE_TYPE_MONTHLY= 月 K |
| start/count | 支持分页获取历史全量数据,例如获取第 2 页数据,只需将 start 设为 1000,count 保持 1000 即可 |
6.3 数据返回说明
运行代码后,会返回包含完整行情字段的 DataFrame,核心字段包括:open(开盘价)、close(收盘价)、high(最高价)、low(最低价)、vol(成交量)、amount(成交额)、year/month/day(日期)、hour/minute(分时时间),完全覆盖量化分析所需的核心行情字段。
七、进阶玩法:行业数据的量化落地场景
拿到行业行情 + 成份股全量数据后,就同时掌握了「行业整体走势」+「行业内个股分化」两个维度的核心信息,可落地超多实用的量化分析与交易策略,给大家列举几个高频应用场景:
- 全行业强弱对比:批量计算全行业涨跌幅、年化收益率、波动率,快速筛选每日 / 每周市场主线板块与弱势板块,复盘效率提升 10 倍;
- 行业轮动策略:基于动量指标(20 日 / 60 日涨幅)、均线突破、MACD 等指标,构建自动化行业轮动策略,捕捉市场主线行情;
- 行业龙头股识别:基于成份股的成交量、涨幅、资金流向、相对行业超额收益,快速定位行业龙头与跟风个股;
- 个股超额收益筛选:对比个股与行业指数的累计收益,筛选出持续跑赢行业的阿尔法个股,构建行业内优选组合;
- 行业相关性分析:计算全行业指数的相关系数,找到低相关性的板块组合,用于持仓分散、风险对冲;
- 行业轮动热力图:结合趋势指标,绘制行业轮动热力图,直观展现板块热度变化,提前捕捉轮动机会。
八、常见踩坑避坑指南
8.1 文件读取乱码 / 报错
- 问题原因:通达信导出的 txt 文件编码为 GBK,若不指定
encoding="gbk",用默认 utf-8 编码读取会直接乱码或报错; - 解决方案:读取文件时必须指定
encoding="gbk",Windows 系统路径建议加r转义,避免路径斜杠报错。
8.2 服务器连接超时 / 失败
- 问题原因:使用了失效的服务器 IP,或网络环境对通达信服务器有限制;
- 解决方案:每次运行前先执行
select_best_ip()重新获取最优 IP,若仍失败,可切换手机热点重试。
8.3 行业代码获取不到数据
- 问题原因:市场类型参数错误,或使用了非通达信的行业代码;
- 解决方案:通达信官方行业指数代码均为 88 开头,归属沪市,
market参数必须固定为TDXParams.MARKET_SH。
8.4 代码拼写错误
- 注意:
pytdx的 API 类名为TdxHq_API,不要写成TdxHg_API;导入模块时是from pytdx.hq import xxx,不要漏写字母。
九、总结
本文分享的这套方案,完全基于通达信官方免费通道和开源工具,无需支付任何 VIP 费用,即可获取与官方完全同步的行业行情数据,完美解决了量化入门者的行情数据痛点。
对于绝大多数散户和中低频量化交易者来说,这套方案完全能满足日常的板块分析、策略回测、行情监控需求,灵活度远超付费行情软件。后续还可以基于这套数据,搭建自动化行业轮动策略、板块强弱监控看板等进阶功能。
如果大家在运行过程中遇到任何问题,或者有其他免费行情数据的获取需求,欢迎在评论区留言交流,我会一一回复~
原创不易,欢迎点赞👍、收藏⭐、关注❤️,后续持续分享 Python 量化交易干货、免费数据获取技巧、可落地的量化策略,带你零成本玩转 A 股量化!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)