跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

QMT 原生接口获取股票列表、申万行业及概念数据(Python 实现)

介绍如何使用 QMT 原生 Python 接口获取沪深 A 股股票池、申万一级至三级行业分类及股票概念标签。通过安装 xtquant 和 pandas 库,调用相关函数下载板块数据并匹配个股信息,最终导出为 CSV 文件。支持后续读取合并数据或存入数据库,适用于量化策略搭建中的基础数据准备工作。

CryptoLab发布于 2026/3/30更新于 2026/5/2335 浏览
QMT 原生接口获取股票列表、申万行业及概念数据(Python 实现)

QMT 原生接口获取股票基础数据

本文介绍如何使用 QMT 原生 Python 接口获取沪深 A 股股票池、申万行业分类及股票概念标签。代码可直接复用,适合量化策略搭建中的基础数据准备工作。

环境准备

依赖库安装

核心依赖 xtquant(QMT 官方 Python 库)和 pandas(数据处理),安装命令如下:

pip install xtquant pandas -i https://pypi.tuna.tsinghua.edu.cn/simple

注意事项

  1. 确保已安装 QMT 终端并正常登录,接口需依赖 QMT 客户端的连接环境;
  2. 代码运行环境建议与 QMT 终端版本匹配(推荐 QMT 8.0+);
  3. 行业和概念数据变动较少,建议每周更新 1 次即可。

完整代码实现

1. 核心工具函数:下载行业板块基础数据

该函数用于获取 QMT 内置的板块分类数据,解决部分场景下接口卡死的问题:

from xtquant import xtdata
import pandas as pd

def down_load_sector():
    # 下载行业板块数据(替代 xtdata.download_sector_data(),避免卡死)
    client = xtdata.get_client()
    client.down_all_sector_data()

2. 获取沪深 A 股股票池(代码 + 名称)

返回全部沪深 A 股的股票代码和对应名称(不含北交所股票),导出为 沪深A股股票池.csv:

def get_stock_pool():
    # 获取股票池,返回全部 A 股的代码和对应的股票名称(不含北交所)
    stocks = xtdata.get_stock_list_in_sector("沪深 A 股")
    info_list = xtdata.get_instrument_detail_list(stocks)
    ret = []
    for stock in stocks:
        name = info_list[stock]['InstrumentName']
        ret.append({"stock": stock, "name": name})
    df = pd.DataFrame(ret)
    df = df.sort_values(by="stock")
    df.to_csv("沪深A股股票池.csv", index=False)
    return df

3. 获取股票对应申万二级行业

通过筛选 QMT 板块分类中的 'SW2' 前缀数据,匹配个股与申万二级行业的对应关系,导出为 沪深A股申万二级行业.csv:

def get_sw2_industry():
    # 获取股票对应的申万二级行业
    down_load_sector()
    sector_list = xtdata.get_sector_list()
    sw2_list = [s for s in sector_list if s[:3].lower() == 'sw2' and '加权' not in s]
    stocks = xtdata.get_stock_list_in_sector("沪深 A 股")
    ret = []
    for sw2 in sw2_list:
        s_list = xtdata.get_stock_list_in_sector(sw2)
        for stock in stocks:
            if stock in s_list:
                ret.append({'stock': stock, "industry_sw2": sw2[3:]})
    df = pd.DataFrame(ret)
    df = df.sort_values(by="stock")
    df.to_csv("沪深A股申万二级行业.csv", index=False)
    return df

4. 获取股票对应申万三级行业

逻辑与申万二级行业获取一致,筛选 'SW3' 前缀板块数据,导出为 沪深A股申万三级行业.csv:

def get_sw3_industry():
    # 获取股票对应的申万三级行业
    down_load_sector()
    sector_list = xtdata.get_sector_list()
    sw3_list = [s for s in sector_list if s[:3].lower() == 'sw3' and '加权' not in s]
    stocks = xtdata.get_stock_list_in_sector("沪深 A 股")
    ret = []
    for sw3 in sw3_list:
        s_list = xtdata.get_stock_list_in_sector(sw3)
        for stock in stocks:
            if stock in s_list:
                ret.append({'stock': stock, 'industry_sw3': sw3[3:]})
    df = pd.DataFrame(ret)
    df = df.sort_values(by="stock")
    df.to_csv("沪深A股申万三级行业.csv", index=False)
    return df

5. 获取股票对应概念标签

筛选 QMT 板块分类中 'GN' 前缀的概念板块,匹配个股与概念的对应关系,导出为 沪深A股所属概念.csv:

def get_gainian():
    # 获取股票对应的概念
    down_load_sector()
    sector_list = xtdata.get_sector_list()
    gn_list = [s for s in sector_list if s[:2].lower() == 'gn']
    stocks = xtdata.get_stock_list_in_sector("沪深 A 股")
    ret = []
    for gn in gn_list:
        s_list = xtdata.get_stock_list_in_sector(gn)
        for stock in stocks:
            if stock in s_list:
                ret.append({'stock': stock, 'gainian': gn[2:]})
    df = pd.DataFrame(ret)
    df = df.sort_values(by="stock")
    df.to_csv("沪深A股所属概念.csv", index=False)
    return df

6. 函数调用示例

如需执行全部数据获取操作,添加如下调用代码:

if __name__ == "__main__":
    # 依次执行数据获取
    get_stock_pool()
    get_sw2_industry()
    get_sw3_industry()
    get_gainian()
    print("所有数据已导出为 CSV 文件,可在当前目录查看!")

数据使用说明

1. 文件输出位置

CSV 文件将保存在代码运行目录下,共 4 个文件:

  • 沪深 A 股股票池.csv(股票代码 + 名称)
  • 沪深 A 股申万二级行业.csv(股票代码 + 申万二级行业)
  • 沪深 A 股申万三级行业.csv(股票代码 + 申万三级行业)
  • 沪深 A 股所属概念.csv(股票代码 + 概念标签)

2. 数据读取示例

后续策略中可直接用 pandas 读取 CSV 文件,无需重复调用接口:

import pandas as pd

# 读取申万三级行业数据
sw3_df = pd.read_csv("沪深A股申万三级行业.csv")

# 读取概念数据
gn_df = pd.read_csv("沪深A股所属概念.csv")

# 合并行业和概念数据(按股票代码关联)
stock_data = pd.merge(sw3_df, gn_df, on="stock", how="left")
print(stock_data.head())

3. 进阶拓展:数据库存储建议

对于高频使用场景,建议将数据存入数据库(如 MySQL、SQLite),示例代码框架如下:

import sqlite3

# 连接 SQLite 数据库(无则自动创建)
conn = sqlite3.connect("stock_basic_data.db")

# 将 DataFrame 写入数据库表
df.to_sql("sw3_industry", conn, if_exists="replace", index=False)
conn.close()

常见问题排查

  1. 接口调用失败:检查 QMT 终端是否登录,或重启 QMT 后重新运行代码;
  2. 数据为空:确认 '沪深 A 股' 板块名称正确(QMT 板块名称不可修改),或升级 xtquant 至最新版本;
  3. 文件无法打开:确保导出文件后缀为 .csv,否则可能导致读取失败。

目录

  1. QMT 原生接口获取股票基础数据
  2. 环境准备
  3. 依赖库安装
  4. 注意事项
  5. 完整代码实现
  6. 1. 核心工具函数:下载行业板块基础数据
  7. 2. 获取沪深 A 股股票池(代码 + 名称)
  8. 3. 获取股票对应申万二级行业
  9. 4. 获取股票对应申万三级行业
  10. 5. 获取股票对应概念标签
  11. 6. 函数调用示例
  12. 数据使用说明
  13. 1. 文件输出位置
  14. 2. 数据读取示例
  15. 读取申万三级行业数据
  16. 读取概念数据
  17. 合并行业和概念数据(按股票代码关联)
  18. 3. 进阶拓展:数据库存储建议
  19. 连接 SQLite 数据库(无则自动创建)
  20. 将 DataFrame 写入数据库表
  21. 常见问题排查
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 物业 ERP 系统技术架构解析:低代码与 AI 如何破解行业痛点
  • C++ 多态原理详解:虚函数表与动态绑定
  • AI 安全研究:视觉提示词注入与模型鲁棒性分析
  • 异构数据迁移工具:DataX 与 DataX-Web 部署指南
  • C# 调用豆包 AI 模型实现首尾帧视频生成
  • 【Unity-MCP完全指南:从零开始构建AI游戏开发助手】
  • VS Code 关闭 Copilot 代码补全
  • Face3D.ai Pro 4K UV 贴图支持 Alpha 通道及发丝胡须处理
  • Qwen3-VL 数学解题助手搭建指南
  • 元气 AI 与 OpenClaw 深度对比:功能、架构与选型指南
  • AIGC 时代下的模型上下文协议 MCP 详解
  • PyWebView 跨平台桌面应用开发指南
  • 大模型工程师转行指南:方向选择与能力要求
  • 数据结构:二叉树基础与 C 语言实现
  • Midjourney 官网地址及中文支持情况说明
  • 632. 最小区间 - 贪心算法思路与实现
  • AIOps 实践:使用 Dify+LangBot 搭建飞书智能体机器人
  • 基于 Vulkan 的游戏引擎平面反射实现方案
  • 前端权限控制设计:拒绝硬编码判断
  • 前端如何利用 AI 设计技能独立完成产品设计与开发流程

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online