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

qmt 截面选股指南:使用 ext_data_rank 函数获取全市场股票扩展指标排名

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

问题描述

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

Title: qmt 截面选股:利用 ext_data_rank 获取自定义扩展数据全市场排名

Question: qmt 如何获取某个自定义技术指标在全市场所有股票中的实时排名?

解决方案

qmt 截面选股:利用 ext_data_rank 获取自定义扩展数据全市场排名

在 QMT(迅投 Quant)量化交易系统中,进行截面选股(如挑选全市场 CCI 排名靠前或强弱指标排名前 N 的股票)时,可以直接使用平台内置的引用函数 ext_data_rank。该函数能够快速计算并返回指定的扩展数据在全市场所有品种中的实时或历史排名。


1. ext_data_rank 函数语法

ext_data_rank(extdataname, stockcode, deviation, ContextInfo)

参数说明:

  • extdataname (string): 在 QMT 客户端中配置好的扩展数据名称(例如 'mycci')。
  • stockcode (string): 股票代码,格式为 '代码.市场',如 '600000.SH'
  • deviation (number): K 线偏移量:
    • 0: 当前 K 线(不偏移)
    • N: 向右偏移 N 根 K 线
    • -N: 向左偏移 N 根 K 线
  • ContextInfo: Python 策略的全局上下文对象。

返回值:

  • number: 返回当前股票该指标在全市场中的排名数值(如 1 表示第一名)。

2. 策略实现示例

以下是一个简单的 QMT 示例策略,演示如何在 handlebar 过程中获取指定股票在全市场的扩展数据排名,并打印排序结果:

#encoding:gbk

def init(ContextInfo):
    # 设置初始股票池(以沪深300为例)
    stock_list = ['600000.SH', '000001.SZ', '600519.SH']
    ContextInfo.set_universe(stock_list)
    print("策略初始化完成,准备获取截面排名...")

def handlebar(ContextInfo):
    # 仅在最后一根 K 线(实时行情)时执行选股逻辑
    if not ContextInfo.is_last_bar():
        return
    
    ext_name = 'mycci'  # 请确保已在QMT客户端中配置了名为 'mycci' 的扩展数据
    
    for stock in ContextInfo.get_universe():
        # 获取当前股票在该扩展数据全市场中的排名
        rank = ext_data_rank(ext_name, stock, 0, ContextInfo)
        print(f"股票代码: {stock}, 扩展指标 [{ext_name}] 全市场排名: {rank}")

3. 注意事项与使用技巧

  1. 前置配置扩展数据:使用 ext_data_rank 前,需先在 QMT 客户端的【数据管理】或【扩展数据】模块中提前生成并定义好对应的扩展数据(extdataname)。
  2. 历史区间排名:如果需要获取一段时间范围内的排名,可配合 ext_data_rank_range 函数使用。
  3. 多因子与因子排名:若使用的是平台因子库中的因子,可参考使用 get_factor_rank(factorname, stockcode, deviation, ContextInfo) 实现类似的功能。