get_stock_name和get_stock_info有什么区别?
在PTrade中有两个获取股票信息的函数get_stock_name和get_stock_info,它们分别获取什么信息?
问题描述
解决方案
在PTrade量化交易平台中,get_stock_name 和 get_stock_info 都是用于获取标的基础信息的API函数,但它们在获取信息的丰富度和返回的数据结构上存在明显区别。
以下是两者的详细对比:
1. get_stock_name - 获取股票名称
功能定位:专门用于快速获取股票、可转债、ETF等标的的名称。
- 参数:
stocks(支持单只股票代码字符串或代码列表)。 - 返回值:返回一个简单的字典(
dict),Key为股票代码,Value为股票名称。如果查询不到,Value为None。
代码示例:
def handle_data(context, data):
# 获取单只股票名称
name = get_stock_name('600570.SS')
log.info(name) # 输出: {'600570.SS': '恒生电子'}
2. get_stock_info - 获取股票基础信息
功能定位:用于获取标的更详细的基础信息,除了名称外,还可以获取上市日期和退市日期。
- 参数:
stocks:股票代码或代码列表。field:指定需要输出的字段列表。支持的字段包括:stock_name:股票代码对应公司名listed_date:股票上市日期de_listed_date:股票退市日期(若未退市,返回'2900-01-01')
- 返回值:返回一个嵌套字典(
dict)。外层Key为股票代码,内层字典包含请求的字段信息。注意:如果不传field参数,默认只返回stock_name字段,且不会返回上市和退市日期。
代码示例:
def handle_data(context, data):
# 获取多只股票的详细基础信息
info = get_stock_info(['600570.SS'], field=['stock_name', 'listed_date', 'de_listed_date'])
log.info(info)
# 输出: {'600570.SS': {'stock_name': '恒生电子', 'listed_date': '2003-12-16', 'de_listed_date': '2900-01-01'}}
核心区别总结
- 信息维度:
get_stock_name只能获取名称;get_stock_info可以获取名称、上市日期、退市日期。 - 数据结构:
get_stock_name返回的是一维字典({'代码': '名称'});get_stock_info返回的是二维嵌套字典({'代码': {'字段名': '字段值'}})。 - 使用场景:如果策略中仅仅需要打印或记录股票名字,使用
get_stock_name更直接便捷;如果策略需要根据上市时间(如剔除次新股)或退市时间进行逻辑判断,则必须使用get_stock_info并传入相应的field参数。