3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant 聚宽量化平台中,研究环境和回测环境的默认命名空间有所不同。在研究环境的 Notebook 中,系统默认已经为您导入了常用的 API(如 get_price),因此您可以直接调用。但是,当您将代码封装在自定义的 .py 文件(如 mylib.py)并在回测环境中 import 时,该文件拥有自己独立的命名空间,如果不显式导入聚宽的 API,就会报 name 'get_price' is not defined 的错误。
您需要在您的自定义库文件 mylib.py 的开头,显式地导入聚宽的 API 库。聚宽官方推荐的导入方式如下:
方法一:导入 jqdata 库(推荐)
在 mylib.py 的最上方添加:
# -*- coding: utf-8 -*-
import jqdata
from jqdata import *
def analyze_stock(security):
# 现在可以正常使用 get_price 了
df = get_price(security, count=5, end_date='2023-01-01', frequency='daily')
return df
方法二:导入 kuanke.user_space_api
根据聚宽 API 文档关于“自定义私人 Python 库文件”的说明,您也可以导入用户空间 API:
# -*- coding: utf-8 -*-
# 如果要兼容研究使用,可以使用 try except 导入
try:
from kuanke.user_space_api import *
except ImportError:
pass
def analyze_stock(security):
df = get_price(security, count=5, end_date='2023-01-01', frequency='daily')
return df
get_price 等获取数据的函数属于聚宽的内置 API。在自定义的模块中,必须通过 from jqdata import * 或 from kuanke.user_space_api import * 将这些 API 引入到当前模块的命名空间中,这样在回测环境中调用时就不会再出现未定义的错误了。