get_stock_name返回的股票名称为None是什么原因?
使用get_stock_name获取股票名称时,返回的字典中value为None,是股票代码错误吗?
问题描述
解决方案
是的,您猜测得很对。在 ptrade 量化平台中,使用 get_stock_name 函数获取股票名称时,如果返回的字典中 value 为 None,通常是因为没有查询到相关数据或者输入的股票代码有误。
导致返回 None 的常见原因:
- 股票代码格式不正确:ptrade 平台通常要求股票代码带有市场后缀。例如,上海市场应为
.SS(或.XSHG),深圳市场应为.SZ(或.XSHE)。如果只输入了数字代码(如'600570'),系统将无法识别,从而返回None。 - 股票代码不存在:您输入的代码可能是一个无效的代码,或者该标的在当前查询的时间点(如回测的特定历史日期)尚未上市或已经退市。
- 不支持的标的类型:虽然该接口支持股票、可转债、ETF 等,但如果输入了平台暂不支持查询名称的特殊标的代码,也可能返回
None。
正确的使用示例:
def initialize(context):
# 正确的带后缀的股票代码
g.security = ['600570.SS', '000001.SZ', '999999.SS']
set_universe(g.security)
def handle_data(context, data):
# 获取股票池所有的股票名称
stock_names = get_stock_name(g.security)
log.info(stock_names)
# 预期输出类似:{'600570.SS': '恒生电子', '000001.SZ': '平安银行', '999999.SS': None}
# 其中 '999999.SS' 因为是不存在的代码,所以返回 None
排查建议:
- 检查您的股票代码字符串是否包含了正确的后缀(
.SS或.SZ)。 - 确认该股票代码在您运行策略(或回测)的时间段内是真实存在且处于上市状态的。