🚀 AI 一键生成 qmt 策略代码
立即体验

qmt 平台如何通过 load_stk_list 快速导入 TXT/CSV 股票篮子动态管理股票池?

qmt | 发布时间: 2026/7/25
以下内容由 EasyQuant 生成。

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: qmt 股票池管理:`load_stk_list` 快速导入 TXT/CSV 股票篮子

Question: 如何通过 qmt API 读取本地的 txt 或 csv 文件来动态设定股票池?

解决方案

QMT 股票池管理:load_stk_list 快速导入 TXT/CSV 股票篮子

在 QMT(迅投量化系统)中,为了实现灵活的股票池管理与自动化选股,开发者往往需要从外部文件(如本地选股软件生成的 TXT 或 CSV 文件)中读取股票列表,并将其设置为策略的运行股票池。

本文将详细介绍如何使用 QMT Python API 中的 ContextInfo.load_stk_list()ContextInfo.load_stk_vol_list() 接口,实现外部股票篮子的快速导入与动态更新。


1. 接口介绍

1.1 ContextInfo.load_stk_list()

用途:从本地文本或 CSV 文件中加载一篮子证券代码,用于构建自定义股票池。

语法

ContextInfo.load_stk_list(filePath, fileName)

参数说明

  • filePath (str):文件存放的绝对路径(如 'D:/data/')。
  • fileName (str):文件名(如 'list.txt''list.csv')。

文件格式要求

  • TXT 格式600000.SH,600004.SH,600006.SH,(最后一个字段末尾必须包含分隔符 ,)。
  • CSV 格式600000.SH,600004.SH,600006.SH,(同样末尾需带分隔符)。

1.2 ContextInfo.load_stk_vol_list()

用途:获取一篮子证券编码及对应的目标交易数量。

语法

ContextInfo.load_stk_vol_list(filePath, fileName)

文件格式要求

  • 证券代码与数量成对出现,且结尾必须带分隔符。
  • 示例(TXT/CSV):600000.SH,100,600004.SH,200,

2. 完整策略代码示例

以下示例展示了如何在策略初始化 (init) 时从本地导入 TXT 股票列表,并使用 set_universe 动态更新股票池:

#encoding:gbk

def init(ContextInfo):
    # 设定本地股票篮子文件路径与文件名
    file_path = 'D:/data/'
    file_name = 'stk_pool.txt'
    
    # 1. 读取外部证券代码列表
    stk_list = ContextInfo.load_stk_list(file_path, file_name)
    print("成功加载本地股票篮子:", stk_list)
    
    # 2. 将读取到的股票列表设置为当前策略的 Universe(股票池)
    if stk_list:
        ContextInfo.set_universe(stk_list)
        print("当前策略股票池已更新,包含标的数量:", len(stk_list))
    else:
        print("股票篮子加载为空,请检查文件路径与格式!")

def handlebar(ContextInfo):
    # 获取当前股票池
    universe = ContextInfo.get_universe()
    print(f"[Barpos: {ContextInfo.barpos}] 当前运行股票池:", universe)
    
    # 可以在此处编写基于股票池的轮动或下单逻辑

3. 注意事项与格式避坑

  1. 末尾分隔符:无论使用 TXT 还是 CSV 文件,最后一个字段末尾必须加上逗号 , 分隔符,否则最后一个股票代码可能无法被正确解析。
  2. 代码格式:证券代码必须包含市场后缀(如 .SH 代表上交所,.SZ 代表深交所),例如 600000.SH
  3. 路径斜杠:Python 中文件路径建议使用正斜杠 /(例如 'D:/data/')或转义反斜杠 \\,避免出现路径解析报错。