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

如何在 JoinQuant 回测策略中使用 read_file 读取并解析 JSON 配置文件?

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

问题描述

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

Title: joinquant 策略配置技巧:read_file 读取研究目录 JSON 文件

Question: 如何在 joinquant 回测策略中使用 read_file 读取并解析 JSON 格式的股票池配置文件?

解决方案

在 JoinQuant 回测策略中使用 read_file 读取并解析 JSON 配置文件

在 JoinQuant(聚宽)平台编写量化策略时,将股票池、策略参数或配置项保存在“研究”根目录下的 JSON 文件中,可以实现策略代码与数据的解耦,提高代码的灵活性与可维护性。


1. 核心 API 介绍

read_file(path)

  • 功能:在回测或模拟交易中读取个人私有空间(“研究”模块)中的文件内容。
  • 参数path(字符串),相对路径,相对于私有空间根目录。
  • 返回值:文件的原始文本内容(字节/字符串)。

注意:无法直接读取本地电脑上的文件。需先将 JSON 文件上传到官网“研究”环境的根目录或相关子目录下。


2. 操作步骤与示例

第一步:创建并保存 JSON 配置文件

在 JoinQuant “研究”根目录下新建文件 HS300.stocks.json,内容如下:

[
  "000001.XSHE",
  "000002.XSHE",
  "600000.XSHG",
  "600519.XSHG"
]

第二步:在策略中读取并解析 JSON

使用 read_file 配合标准库 json 模块中的 json.loads 进行解析:

# 导入聚宽函数库与 json 模块
import json
import jqdata

def initialize(context):
    # 开启动态复权模式
    set_option('use_real_price', True)
    # 设置基准
    set_benchmark('000300.XSHG')
    
    # 1. 读取研究根目录下的 JSON 文件
    json_content = read_file('HS300.stocks.json')
    
    # 2. 解析 JSON 数据为 Python 对象(列表)
    g.stocks = json.loads(json_content)
    
    log.info("成功加载股票池配置文件,股票列表: %s" % g.stocks)
    
    # 3. 设置每日定时运行函数
    run_daily(market_open, time='every_bar')

def market_open(context):
    # 使用读取到的股票池执行交易逻辑
    for stock in g.stocks:
        current_data = get_current_data()
        if not current_data[stock].paused:
            log.info("正在检查股票: %s, 最新价: %s" % (stock, current_data[stock].last_price))

3. 常见注意事项

  1. Python 2 与 Python 3 兼容性
    • 在 Python 3 环境下,read_file 返回的内容可直接通过 json.loads(content) 解析。
    • 如果遇到编码问题,可显示转换:json.loads(content.decode('utf-8'))
  2. 文件路径
    • 参数必须为相对路径。例如位于根目录下传入 'HS300.stocks.json',若位于子目录 config 下则传入 'config/HS300.stocks.json'
  3. 模拟盘重启机制
    • 建议在 initialize 中将解析出的数据存入全局变量 g(例如 g.stocks),以便在模拟盘休眠重启后自动恢复。