🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

ptrade量化平台获取所有指数产品及hq_type_code筛选方法

ptrade | 发布时间: 2026/6/4
以下内容由 EasyQuant 生成。

问题描述

需要获取所有指数产品,应该如何根据hq_type_code字段筛选数据?

/

解决方案

在 ptrade 量化交易平台中,如果您需要获取所有的指数产品,可以通过调用 get_market_detail 接口获取特定市场的详细信息,然后利用 Pandas 的数据处理功能,根据 hq_type_code 字段进行筛选。

根据 ptrade API 文档,指数产品的 hq_type_code 通常标识为 'MRI'

实现步骤

  1. 获取市场详细信息:使用 get_market_detail(finance_mic) 接口获取指定市场(如上海市场 'XSHG' 或深圳市场 'XSHE')的所有产品信息。该接口返回一个 Pandas DataFrame。
  2. 筛选指数产品:对返回的 DataFrame 进行条件过滤,提取 hq_type_code == 'MRI' 的行。

Python 代码示例

以下是一个完整的策略示例,展示了如何在盘前阶段获取并筛选出上海市场的指数产品:

def initialize(context):
    # 初始化时设置一个默认股票池
    g.security = '600570.SS'
    set_universe(g.security)

def before_trading_start(context, data):
    # 获取上海证券交易所(XSHG)的市场详细信息
    # 注意:get_market_detail 仅限在 before_trading_start 和 after_trading_end 中使用
    market_df = get_market_detail('XSHG')
    
    if market_df is not None and not market_df.empty:
        # 根据 hq_type_code 字段筛选指数产品('MRI' 代表指数)
        index_products = market_df[market_df['hq_type_code'] == 'MRI']
        
        log.info("成功获取上海市场指数产品,共 {} 只。", len(index_products))
        # 打印前5只指数产品的信息
        log.info("\n{}", index_products.head())
        
        # 如果需要提取所有的指数代码列表
        index_codes = index_products['prod_code'].tolist()
        # log.info("指数代码列表: {}", index_codes)
    else:
        log.error("获取市场详细信息失败")

def handle_data(context, data):
    pass

注意事项

  1. 接口调用限制get_market_detail 接口在回测和交易模块中,仅限在 before_trading_startafter_trading_end 事件函数中使用,请勿在 handle_datatick_data 中调用。
  2. 市场编码 (finance_mic):上海市场编码为 'XSHG',深圳市场编码为 'XSHE'。您可以通过调用 get_market_list() 接口查看所有支持的市场编码。
  3. 指数代码尾缀:在 ptrade 中,如果您要在其他行情接口(如 get_historyget_price)中使用指数代码,通常需要加上 .XBHS 尾缀(例如沪深300指数为 '000300.XBHS')。