🚀 AI 一键生成 joinquant 策略代码

JoinQuant 聚宽平台 normalize_code 转换基金代码详解及 .OF 后缀处理方法

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

问题描述

如何用 normalize_code 转换基金代码

如题。
Img
API说明里,这个是可以转换基金代码的。
但是,实际转换时,默认为股票:
Img

请问,如何才能转换为基金代码(扩展名“OF”)呢?

另外,010135已经确认是基金代码,如下图。

解决方案

在 JoinQuant 聚宽平台中,关于 normalize_code 函数转换基金代码的问题,具体原因和解决方法如下:

1. 为什么会被默认转换为股票后缀?

根据 JoinQuant API 文档的说明,normalize_code 函数仅适用于 A 股市场股票代码、期货以及场内基金代码(如 ETF、LOF 等,后缀通常为 .XSHG.XSHE)。

您提到的 010135 是一只场外基金(开放式基金)。由于它不在 normalize_code 的默认支持范围内,系统在解析纯数字 010135 时,会按照默认的股票代码规则,将其误判为深市代码,从而自动加上了 .XSHE 的后缀。

2. 如何正确转换为场外基金代码(.OF)?

由于 normalize_code 并不支持自动识别并追加场外基金的 .OF 后缀,对于场外基金,最简单且最稳妥的方法是直接使用 Python 的字符串拼接

您可以自定义一个简单的转换函数来处理场外基金代码:

def normalize_fund_code(code):
    # 确保输入是字符串格式
    code_str = str(code)
    # 补齐 6 位数字(如果需要)
    code_str = code_str.zfill(6)
    # 拼接 .OF 后缀
    if not code_str.endswith('.OF'):
        return code_str + '.OF'
    return code_str

# 测试
fund_code = '010135'
normalized_fund = normalize_fund_code(fund_code)
print(normalized_fund)  # 输出: 010135.OF

3. 批量处理混合代码

如果您有一个包含股票、场内基金和场外基金的混合列表,并且您明确知道哪些是场外基金,可以结合使用:

from jqdata import normalize_code

def process_codes(code_list, is_otc_fund=False):
    result = []
    for code in code_list:
        if is_otc_fund:
            # 场外基金手动拼接
            result.append(str(code).zfill(6) + '.OF')
        else:
            # 股票、期货、场内基金使用官方 API
            result.append(normalize_code(code))
    return result

总结normalize_code 无法自动识别场外基金并添加 .OF 后缀,请直接使用字符串拼接 code + '.OF' 的方式来处理场外基金代码。