QMT 原生接口获取股票基础数据
本文介绍如何使用 QMT 原生 Python 接口获取沪深 A 股股票池、申万行业分类及股票概念标签。代码可直接复用,适合量化策略搭建中的基础数据准备工作。
环境准备
依赖库安装
核心依赖 xtquant(QMT 官方 Python 库)和 pandas(数据处理),安装命令如下:
pip install xtquant pandas -i https://pypi.tuna.tsinghua.edu.cn/simple
注意事项
- 确保已安装 QMT 终端并正常登录,接口需依赖 QMT 客户端的连接环境;
- 代码运行环境建议与 QMT 终端版本匹配(推荐 QMT 8.0+);
- 行业和概念数据变动较少,建议每周更新 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:
():
down_load_sector()
sector_list = xtdata.get_sector_list()
sw2_list = [s s sector_list s[:].lower() == s]
stocks = xtdata.get_stock_list_in_sector()
ret = []
sw2 sw2_list:
s_list = xtdata.get_stock_list_in_sector(sw2)
stock stocks:
stock s_list:
ret.append({: stock, : sw2[:]})
df = pd.DataFrame(ret)
df = df.sort_values(by=)
df.to_csv(, index=)
df


