🚀 AI 一键生成 joinquant 策略代码

JoinQuant 平台能否获取申万一级和二级行业的行情数据?

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

问题描述

申万行业的行情数据

现在是不是只能获取到申万一级行业的日行情数据。 二级行业获取不到?

解决方案

根据 JoinQuant 官方 API 文档的说明,目前平台不支持直接获取任何行业(包括申万一级、二级、三级行业以及聚宽自定义行业)的行情数据

文档中明确指出:

“目前不支持行业的行情数据,及指数的PE/股息率”

因此,无论是申万一级行业还是二级行业,都无法直接通过 get_price 等函数获取其行业指数的开盘价、收盘价等行情数据。

替代解决方案

虽然无法直接获取行业行情,但您可以利用平台提供的行业成分股查询功能,结合个股行情数据,自行合成或计算行业的走势指标。具体步骤如下:

  1. 获取行业成分股:使用 get_industry_stocks(industry_code, date) 函数获取指定申万二级行业在特定日期的所有成分股。
  2. 获取个股行情:使用 get_pricehistory 获取这些成分股的历史价格数据。
  3. 自行计算:根据成分股的价格和市值(可通过 get_valuation 获取),采用等权重或市值加权的方式,自行计算行业的平均走势。

示例代码:获取申万二级行业成分股并计算等权重平均收盘价

from jqdata import *

def initialize(context):
    # 设定要查询的申万二级行业代码,例如:801192 (银行II)
    g.industry_code = '801192'
    run_daily(market_open, time='every_bar')

def market_open(context):
    # 1. 获取当前日期该申万二级行业的成分股列表
    stocks = get_industry_stocks(g.industry_code, date=context.current_dt)
    
    if not stocks:
        log.info("该行业当前无成分股")
        return
        
    # 2. 获取这些成分股前一天的收盘价
    # 注意:为了避免未来函数,通常获取前一天的价格进行分析
    df_close = history(1, '1d', 'close', stocks, df=True)
    
    if not df_close.empty:
        # 3. 计算等权重平均收盘价作为行业走势参考
        avg_close = df_close.iloc[-1].mean()
        log.info(f"申万二级行业 {g.industry_code} 成分股等权重平均收盘价: {avg_close:.2f}")

总结:您无法直接拉取申万二级(或一级)行业的 K 线数据,但可以通过 get_industry_stocks 拿到成分股后,自己进行二次加工和统计。