QMT 量化实践:两种方式获取个股上市日期(内置 Python + 原生 Python 完整可运行代码)
2026/6/16 21:05:47 网站建设 项目流程

在量化策略开发过程中,个股上市日期是高频使用的基础数据:无论是筛选次新股标的、排除上市时间过短的新股,还是计算个股上市周期用于因子计算,都需要用到这个字段。

很多刚接触 QMT 的开发者会疑惑怎么快速获取单只股票的上市日期,其实在 QMT 体系中,只需要一行核心代码即可实现。本文分别针对QMT 内置 Python 环境原生 Python(xtquant)环境两种场景,给出完整可运行的实现代码。

一、核心接口与代码规范

1.1 核心函数

两种环境都通过标的详情查询接口获取股票基础信息,返回结果为字典格式,其中OpenDate字段对应该股票的上市日期,是实现需求的核心字段。

1.2 股票代码规范

传入的股票代码需要遵循「代码 + 交易所后缀」的格式,不可省略后缀:

  • 上证股票:后缀.SS,示例:600570.SS
  • 深证股票:后缀.SZ,示例:000001.SZ

二、方式 1:QMT 内置 Python 环境实现

该方式适用于直接在 QMT 客户端的策略编辑器中编写、运行策略,调用内置全局对象C访问数据接口,无需额外安装依赖。

完整可运行代码

#coding:gbk ''' 内置Python环境 - 获取个股上市日期 运行环境:QMT客户端策略编辑器 ''' def init(C): # 初始化变量,用于保存上市日期结果 IPOdate = str() # 输入目标个股代码,可替换为自身需要查询的标的 singleStock = "000001.SZ" # 核心接口:获取股票详情并提取上市日期字段 IPOdate = C.get_instrumentdetail(singleStock)['OpenDate'] # 格式化打印结果,增加异常处理避免类型报错 try: print(f"{singleStock}的上市日期是{IPOdate[:4]}年{IPOdate[4:6]}月{IPOdate[6:]}日") except TypeError: # 兼容异常场景,强制转换为字符串类型 IPOdate = str(IPOdate) print(f"{singleStock}的上市日期是{IPOdate[:4]}年{IPOdate[4:6]}月{IPOdate[6:]}日") return

运行结果示例

000001.SZ的上市日期是1991年04月03日

关键说明

  • def init(C)是 QMT 内置策略的固定初始化函数入口,参数C为内置全局对象,封装了行情、交易、标的查询等各类原生接口
  • 代码增加了try-except异常处理,避免部分特殊标的返回值类型异常导致程序中断
  • 内置环境返回的上市日期为连续字符串格式(如19910403),通过字符串切片即可拆分出年、月、日

三、方式 2:原生 Python 环境实现(xtquant 库)

该方式适用于在本地 Python 环境中开发,通过xtquant库连接 QMT 客户端获取数据,灵活性更高,可结合 pandas 等数据分析库做批量处理。

前置准备

  1. 本地 Python 环境已安装xtquant
  2. QMT 客户端保持运行状态,且连接端口与代码中配置一致(默认端口通常为 58601)

完整可运行代码

''' 原生Python环境 - 获取个股上市日期 依赖库:xtquant ''' from xtquant import xtdata # 连接QMT主程序,port参数需与客户端配置端口保持一致 xtdata.connect(port=58601) # 初始化变量,保存上市日期结果 IPOdate = str() # 输入目标个股代码,可自定义替换 singleStock = "000001.SZ" # 核心接口:获取股票详情并提取上市日期 IPOdate = xtdata.get_instrument_detail(singleStock)['OpenDate'] # 格式化打印结果 print(f'{singleStock}的上市日期是{IPOdate[:4]}年{IPOdate[5:7]}月{IPOdate[8:]}日')

运行结果示例

000001.SZ的上市日期是1991年04月03日

关键说明

  • 必须先执行xtdata.connect()建立与 QMT 客户端的连接,否则无法正常获取行情与标的数据
  • 原生环境返回的上市日期为带分隔符的字符串格式(如1991-04-03),因此切片位置与内置环境略有差异
  • 该方式不受 QMT 客户端编辑器限制,支持批量遍历股票池、结合本地数据分析库做深度加工

四、开发注意事项

  1. 标的后缀不可省略:必须带上.SS/.SZ交易所后缀,否则接口无法识别标的,会返回空值导致报错
  2. 端口匹配:原生 Python 连接时,port参数必须和 QMT 客户端设置的端口一致,否则会连接失败
  3. 空值兼容:部分退市标的、未上市标的可能返回空值,实际策略开发中建议增加空值判断逻辑,提升程序鲁棒性

总结

两种方式都可以稳定获取个股上市日期,适配不同开发场景:

  • 若你在 QMT 客户端内编写交易策略,直接使用内置 Python 方式即可,开箱即用
  • 若你需要做本地化数据分析、批量处理多标的数据,推荐使用miniQMT原生 Python+xtquant的方式,扩展性更强

替换代码中的股票代码,即可快速测试对应标的的上市日期。

风险提示:量化交易存在策略失效、系统故障等风险,历史数据回测不代表未来收益,投资需谨慎。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询