🚀 AI 一键生成 joinquant 策略代码

JoinQuant 编程技巧:如何统一不同格式的股票代码?(normalize_code)

joinquant | 发布时间: 2025/12/2
以下内容由 EasyQuant 生成。

问题描述

如何把 '000001' 或者 '000001.sz' 这种代码转换成标准的格式?

解决方案

在 JoinQuant 聚宽平台中,可以使用 normalize_code() 函数将各种形式的股票代码(如 '000001', '000001.sz', '600000' 等)转换为聚宽标准的后缀格式(如 '000001.XSHE', '600000.XSHG')。

该函数会自动识别股票所属的交易所(上海或深圳)并添加正确的后缀。

使用方法

1. 转换单个代码

传入字符串或数字,返回标准格式的字符串。

from jqdata import *

# 输入纯数字字符串
code1 = normalize_code('000001')
print(code1) 
# 输出: '000001.XSHE'

# 输入带不规范后缀的字符串
code2 = normalize_code('600000.sh')
print(code2) 
# 输出: '600000.XSHG'

# 输入数字(不推荐,建议用字符串以防前导0丢失)
code3 = normalize_code(600519)
print(code3)
# 输出: '600519.XSHG'

2. 转换多个代码

传入列表(list)或元组(tuple),返回包含标准格式代码的列表。

from jqdata import *

# 输入包含多种格式的列表
code_list = ['000001', 'SZ000002', '600000.sh', '000001.XSHE']
normalized_list = normalize_code(code_list)

print(normalized_list)
# 输出: ['000001.XSHE', '000002.XSHE', '600000.XSHG', '000001.XSHE']

注意事项

  • 适用范围:主要适用于 A 股股票代码、期货代码以及场内基金代码。
  • 前导零:如果传入的是整数(int)类型(如 1),函数会自动补全前导零(变成 '000001.XSHE'),但为了避免歧义,建议始终使用字符串格式。
  • 无法识别:如果传入的代码无法识别(例如不存在的代码或格式严重错误),函数可能会返回原始输入或报错,具体取决于输入的有效性。

Q&A

Q: 聚宽的标准代码后缀有哪些?
A: 主要后缀包括:

  • 上海证券交易所:.XSHG (如 600519.XSHG)
  • 深圳证券交易所:.XSHE (如 000001.XSHE)
  • 中金所:.CCFX
  • 大商所:.XDCE
  • 上期所:.XSGE
  • 郑商所:.XZCE
  • 上海国际能源交易中心:.XINE
  • 广州期货交易所:.GFEX

Q: normalize_code 能判断股票是否退市吗?
A: 不能。normalize_code 仅进行格式转换,不校验股票的上市状态。如果需要查询股票是否上市或退市,请使用 get_security_info(code)get_all_securities()

Q: 如果传入的代码已经是标准格式,会有影响吗?
A: 没有影响。如果传入 '000001.XSHE',函数会直接返回 '000001.XSHE',不会重复添加后缀。