问题描述
需要同时获取多只股票名称,是否需要循环调用get_stock_name多次?
解决方案
核心解答
可以同时查询多只股票,不需要循环调用。
在 ptrade 量化平台中,get_stock_name 接口的参数 stocks 支持传入单个股票代码(字符串 str),也支持传入多个股票代码组成的列表(list[str])。
为了提高策略的运行效率,强烈建议直接传入列表进行批量查询,而不是在 for 循环中多次调用该接口。批量查询可以显著减少与底层数据接口的交互次数,降低延迟。
代码示例
以下是如何批量获取多只股票名称的示例代码:
def initialize(context):
# 设置股票池,包含多只股票
g.security = ['600570.SS', '600571.SS', '000001.SZ']
set_universe(g.security)
def handle_data(context, data):
# 错误做法(不推荐):循环调用,效率低
# for stock in g.security:
# name = get_stock_name(stock)
# log.info(name)
# 正确做法(推荐):直接传入列表,批量获取
stock_names_dict = get_stock_name(g.security)
# 打印返回的字典
log.info("批量获取的股票名称: %s" % stock_names_dict)
# 从字典中提取特定股票的名称
if '600570.SS' in stock_names_dict:
log.info("600570.SS 的名称是: %s" % stock_names_dict['600570.SS'])
返回值说明
当传入列表时,get_stock_name 会返回一个字典(dict):
- Key(键):你传入的股票代码(如
'600570.SS')。 - Value(值):对应的股票名称(如
'恒生电子')。
如果某只股票代码输入有误或查询不到相关数据,该键对应的值将为 None。
返回数据格式示例:
{'600570.SS': '恒生电子', '600571.SS': '信雅达', '000001.SZ': '平安银行'}