问题描述
get_stock_info文档说明可以获取股票、可转债、ETF等基础信息,但实际传入ETF代码时报错,为什么?
解决方案
在 ptrade 平台中,关于 get_stock_info 接口查询 ETF 和可转债的问题,具体解答如下:
1. get_stock_info 是否可以查询 ETF 和可转债?
根据官方 API 文档说明,get_stock_info 接口理论上是可以获取股票、可转债、ETF 等基础信息的。它主要返回的字段包括:
stock_name:名称listed_date:上市日期de_listed_date:退市日期
2. 为什么传入 ETF 代码时会报错?
如果在实际使用中传入 ETF 或可转债代码报错,通常有以下几个原因:
- 代码格式不正确(缺少尾缀):ptrade 平台要求代码必须带有市场尾缀。例如,上交所的 ETF 必须是
510050.SS,深交所的必须是159915.SZ。如果只传入510050,接口会因为找不到标的而报错。 - 底层数据源覆盖不全:虽然文档声明支持,但某些新上市的 ETF 或特定类型的可转债可能在
get_stock_info的底层数据表中未及时更新,导致查询异常。 - 字段不匹配:
get_stock_info主要是为股票设计的,如果请求了某些 ETF 不具备的隐藏字段,可能会引发异常。
3. 最佳替代方案(推荐做法)
为了更稳定、更详细地获取 ETF 和可转债的信息,ptrade 提供了专门的 API 接口,强烈建议使用这些专用接口替代 get_stock_info:
获取 ETF 信息:使用 get_etf_info
该接口专门用于获取 ETF 的详细申赎、净值等信息。
def initialize(context):
g.etf = '510050.SS'
set_universe(g.etf)
def handle_data(context, data):
# 获取 ETF 详细信息
etf_info = get_etf_info(g.etf)
log.info(etf_info)
获取可转债信息:使用 get_cb_info
该接口专门用于获取可转债的溢价率、转股价、到期日等核心数据。
def initialize(context):
pass
def handle_data(context, data):
# 获取全市场可转债基础信息
cb_df = get_cb_info()
log.info(cb_df.head())
总结
如果只是想获取 ETF 或可转债的名称,请确保传入的代码带有正确的后缀(如 .SS 或 .SZ)。如果需要获取更专业的品种信息,请务必使用 get_etf_info 和 get_cb_info,这样既能避免报错,又能获取到更丰富的数据维度。