问题描述
使用get_cb_info获取可转债基础信息时,返回空DataFrame,是代码有问题吗?
解决方案
在 ptrade 量化平台中使用 get_cb_info 接口获取可转债基础信息时,如果返回空的 DataFrame,通常不是代码本身的语法错误,而是由以下几个原因导致的:
1. 缺少可转债基础数据权限
这是最常见的原因。根据 ptrade API 文档说明:
此 API 依靠可转债基础数据权限,使用前请与券商确认是否有此权限,无权限时调用返回空 DataFrame。
解决方法:
请联系您开户的券商客服或客户经理,确认您的 ptrade 账户是否已经开通了“可转债基础数据”的权限。如果没有,请申请开通。
2. 接口调用失败
在极少数情况下,可能是由于网络波动或服务器端数据服务暂时不可用,导致获取数据失败。
解决方法:
- 增加重试机制: 在策略代码中,可以对
get_cb_info的调用增加异常处理和重试逻辑。 - 检查日志: 查看 ptrade 平台的运行日志,看是否有相关的网络或接口报错信息。
3. 运行环境限制
请注意 get_cb_info 的使用场景限制:
该函数仅在研究、交易模块可用。
解决方法:
确保您是在“研究”模块(如 Jupyter Notebook)或“交易”模块中调用此函数。如果在不支持的模块(如某些特定的回测环境,具体视券商配置而定)中调用,可能会出现异常。
总结
当遇到 get_cb_info 返回空 DataFrame 时,首要步骤是联系券商确认权限。确认权限无误后,再排查网络或运行环境的问题。
示例代码(带简单检查):
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
def handle_data(context, data):
df = get_cb_info()
if df.empty:
log.warning("获取可转债信息失败,返回空 DataFrame。请检查是否开通了可转债基础数据权限!")
else:
log.info("成功获取可转债信息,共 %d 条记录。" % len(df))
# log.info(df.head())