3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
您在 ptrade 平台上调用 get_cb_info() 函数时遇到 NameError: name 'get_cb_info' is not defined 报错,主要原因在于运行环境不匹配。
根据您的报错日志 File /home/fly/sim_backtest/result/... 可以看出,您是在**回测环境(sim_backtest)**中运行该策略的。
查阅 ptrade 官方 API 文档关于 get_cb_info 的说明:
结论:因为 get_cb_info 函数在回测引擎中根本没有被注入(不支持回测),所以在回测模块调用时会直接报 NameError 未定义错误。这与具体是哪家券商(如国盛)无关,而是 ptrade 框架底层的设定。
如果您只是想获取或查看可转债的基础信息,请将代码放到 研究模块(Jupyter Notebook) 或 模拟/实盘交易模块 中运行。
即使在交易或研究模块中,如果券商没有为您开通“可转债基础数据权限”,调用该函数不会报错,但会返回一个空的 DataFrame。如果您在交易模块测试发现返回为空,请联系您的券商客户经理申请开通该权限。
如果您必须在回测策略中使用可转债的基础信息(如转股价、溢价率等),可以通过“研究模块获取并保存 -> 回测模块读取”的方式来实现。
在 ptrade 的“研究”模块新建一个 Notebook,运行以下代码将可转债信息保存为 CSV 文件:
import pandas as pd
# 获取可转债基础信息
df_cb = get_cb_info()
if not df_cb.empty:
# 保存到研究环境的根目录
df_cb.to_csv('cb_info.csv', index=False)
print("可转债数据保存成功!")
else:
print("获取数据为空,请检查是否拥有可转债数据权限。")
在您的回测策略代码中,使用 get_research_path() 获取研究目录路径,并使用 pandas 读取刚才保存的 CSV 文件:
import pandas as pd
import os
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
# 获取研究目录路径
research_path = get_research_path()
file_path = os.path.join(research_path, 'cb_info.csv')
# 在初始化时读取可转债数据,存入全局变量 g
try:
g.cb_info_df = pd.read_csv(file_path)
log.info("成功加载可转债基础信息,共 %d 条记录" % len(g.cb_info_df))
except Exception as e:
log.error("读取可转债数据失败: %s" % e)
g.cb_info_df = pd.DataFrame()
def handle_data(context, data):
# 在盘中逻辑中使用可转债数据
if not g.cb_info_df.empty:
# 例如:打印前5条数据
# log.info(g.cb_info_df.head())
pass
通过这种方式,您就可以完美绕过 get_cb_info 在回测环境中不可用的限制,顺利完成可转债策略的回测。