问题描述
/
解决方案
问题分析
在 ptrade 量化平台中调用 get_history 函数时遇到 NameError: name 'get_history' is not defined 错误,通常是由以下几个原因引起的:
- 运行环境错误:
get_history是 ptrade 平台内置的 API 函数。如果您在本地的 Python 环境(如 PyCharm、VSCode 或本地的 Jupyter Notebook)中运行这段代码,Python 解释器无法识别该函数,从而抛出未定义错误。 - 研究环境未导入 API:在 ptrade 的“研究”模块(Jupyter Notebook)中,有时需要显式导入 ptrade 的 API 库才能使用这些内置函数,或者由于内核重启导致内置变量丢失。
- 拼写错误:检查函数名是否拼写正确,Python 对大小写敏感。
解决方法
1. 确认运行环境
请确保您的代码是在 ptrade 平台客户端内的“研究”、“回测”或“交易”模块 中运行的。ptrade 的 API 无法脱离其官方客户端环境在本地独立运行。
2. 在研究环境中导入 API
如果您确认是在 ptrade 的“研究”模块中运行,但仍然报错,可能是因为当前 Notebook 的内核没有自动注入 ptrade API。您可以尝试在代码单元格的顶部添加以下导入语句(具体导入路径请参考您所在券商 ptrade 版本的说明,通常平台会自动注入,若丢失可尝试重启 Kernel):
# 尝试重启 Jupyter Notebook 的 Kernel
# 或者在某些版本中可能需要显式导入(通常不需要,重启 Kernel 即可恢复)
建议操作:点击研究环境菜单栏的 Kernel -> Restart & Clear Output,然后重新运行代码。
3. 正确的使用示例
确保在正确的上下文中使用 get_history。以下是在研究环境中获取历史数据的标准示例:
# 获取恒生电子(600570.SS)过去5天的日线收盘价
history_data = get_history(count=5, frequency='1d', field='close', security_list='600570.SS')
print(history_data)
4. 检查多线程调用限制
根据 ptrade 官方文档提示:get_history 接口不支持多线程同时调用。如果在 run_daily 或 run_interval 等函数中与 handle_data 同一时刻调用,可能会导致异常。请确保您的调用逻辑是串行的。
如果以上方法仍未解决问题,建议检查您所使用的 ptrade 客户端版本是否过低,或者联系所在券商的 ptrade 技术支持确认该研究环境的 API 权限是否正常开启。