3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 PTrade 量化交易平台中,为了应对平台升级导致的 API 变动,系统提供了一个专门的检测函数 check_strategy。
该函数位于研究模块中,可以自动扫描您的策略代码,并返回代码中涉及到的已变更或过期的 API 接口及 Python 第三方库列表。
以下是具体的使用方法和步骤:
check_strategy(strategy_content=None, strategy_path=None)
strategy_content (str): 策略代码的内容字符串。strategy_path (str): 策略文件的路径(需先上传至研究目录)。api_change_list(API 变更列表)和 package_change_list(库变更列表)。您可以直接将策略代码复制并粘贴到 check_strategy 函数的 strategy_content 参数中进行检查。
# 在研究环境中运行以下代码
# 将您的策略代码粘贴在三引号之间
my_strategy_code = """
def initialize(context):
g.security = "600570.SS"
set_universe(g.security)
def handle_data(context, data):
# 假设这里调用了一些可能过期的API
get_history(100, frequency="1d", field=["close"], security_list=g.security)
order(g.security, 100)
"""
# 调用检查函数
check_result = check_strategy(strategy_content=my_strategy_code)
# 打印检查结果
print("策略检查结果:")
print(check_result)
如果您的策略代码较长,或者已经保存在研究目录的文件中(例如 my_strategy.py),可以通过文件路径进行检查。
步骤:
.py 或 .txt 文件(必须是 utf-8 编码)。# 在研究环境中运行
# 假设您的策略文件名为 'my_strategy.py',且位于当前目录下
file_path = './my_strategy.py'
# 调用检查函数
# 注意:如果同时传入 content 和 path,系统仅检查 content
check_result = check_strategy(strategy_path=file_path)
# 打印检查结果
print("文件检查结果:")
print(check_result)
函数返回的结果通常是一个字典结构,包含以下两个关键字段:
api_change_list: 列出了策略中使用的、在升级过程中发生变动或过期的 PTrade 原生 API 名称。package_change_list: 列出了策略中导入的、在升级后版本发生变化或不再支持的 Python 第三方库名称。返回示例:
{
"api_change_list": [
"get_history",
"margincash_open"
],
"package_change_list": [
"pandas"
]
}
Q: check_strategy 函数可以在回测或交易界面直接运行吗?
A: 不可以。该函数仅在 研究模块 可用。您需要将代码复制到研究环境的 Notebook 中运行检查。
Q: 检查出 API 变动后,我该如何修改代码?
A: 您需要查阅 PTrade 官方 API 文档中对应函数的说明。通常变动涉及参数名称的修改、返回数据结构的改变(如从 Panel 变为 DataFrame)或函数名称的更替。
Q: 为什么我传入了 strategy_path 却报错找不到文件?
A: 请确认文件已上传至研究环境,且路径填写正确。通常使用相对路径 ./文件名 即可。同时确保文件编码为 utf-8 格式。
Q: 这个函数能检查出所有的逻辑错误吗?
A: 不能。check_strategy 仅用于静态扫描代码中是否包含已知变动的 API 或库,它无法检测策略的交易逻辑错误或运行时错误。