本文关键词:Python 量化交易、pytdx 教程、通达信行情数据、免费行业行情、行业成份股获取、量化策略数据准备本文适合人群:量化交易入门者、Python 财经数据分析爱好者、A 股板块研究散户、不想付费开通行情 VIP 的交易者

一、文章背景

做 A 股板块轮动、行业量化分析的朋友大概率都遇到过这个痛点:miniQMT、主流行情软件的行业实时行情、成份股批量导出功能,大多需要开通 VIP 付费权限,仅为了基础的行业行情数据付费,性价比极低;而公开的免费财经 API,要么有频次限制,要么数据延迟、更新不及时。

本文就给大家分享一套零成本、可复现、数据与通达信官方完全同步的行业行情获取方案:基于开源库pytdx,对接通达信官方行情服务器,免费抓取行业实时 K 线数据 + 全行业成份股列表,全程无付费门槛,代码可直接复制运行,零基础也能快速落地。

想白嫖行情数据?这 3 个神仙渠道,量化 / 炒股人必备!

二、前置环境准备

在开始操作前,只需准备 2 个基础环境,无任何付费依赖:

  1. Python 3.7 及以上版本(Anaconda / 原生 Python 均可,推荐 3.8 + 稳定版)
  2. 通达信 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 通达信端导出行业板块成份

  1. 打开通达信 PC 端免费客户端,无需登录账号,键盘直接输入34,快速调出「数据导出」功能;
  2. 在弹出的窗口中,切换到板块成份导出 tab 页;
  3. 选择文件导出目录,分隔格式勾选「逗号 (,)」,点击「开始导出」;
  4. 导出完成后,目标目录会生成行业板块.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_codeindustry_namestock_codestock_name
0881002煤炭开采000552甘肃能化
1881002煤炭开采000571新大洲 A
2881002煤炭开采000937冀中能源
3881002煤炭开采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 关键参数说明

参数可选值说明
categoryK 线周期,常用值: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(分时时间),完全覆盖量化分析所需的核心行情字段。

七、进阶玩法:行业数据的量化落地场景

拿到行业行情 + 成份股全量数据后,就同时掌握了「行业整体走势」+「行业内个股分化」两个维度的核心信息,可落地超多实用的量化分析与交易策略,给大家列举几个高频应用场景:

  1. 全行业强弱对比:批量计算全行业涨跌幅、年化收益率、波动率,快速筛选每日 / 每周市场主线板块与弱势板块,复盘效率提升 10 倍;
  2. 行业轮动策略:基于动量指标(20 日 / 60 日涨幅)、均线突破、MACD 等指标,构建自动化行业轮动策略,捕捉市场主线行情;
  3. 行业龙头股识别:基于成份股的成交量、涨幅、资金流向、相对行业超额收益,快速定位行业龙头与跟风个股;
  4. 个股超额收益筛选:对比个股与行业指数的累计收益,筛选出持续跑赢行业的阿尔法个股,构建行业内优选组合;
  5. 行业相关性分析:计算全行业指数的相关系数,找到低相关性的板块组合,用于持仓分散、风险对冲;
  6. 行业轮动热力图:结合趋势指标,绘制行业轮动热力图,直观展现板块热度变化,提前捕捉轮动机会。

八、常见踩坑避坑指南

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 股量化!

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐