🚀 AI 一键生成 ptrade 策略代码

PTrade 研发辅助:使用 check_strategy 检查策略 API 兼容性

ptrade | 发布时间: 2025/12/20
以下内容由 EasyQuant 生成。

问题描述

平台升级后,怎么自动检查我的策略代码里有没有用到过期的 API?

解决方案

在 PTrade 量化交易平台中,为了应对平台升级导致的 API 变动,系统提供了一个专门的检测函数 check_strategy

该函数位于研究模块中,可以自动扫描您的策略代码,并返回代码中涉及到的已变更或过期的 API 接口及 Python 第三方库列表。

以下是具体的使用方法和步骤:

核心函数说明

check_strategy(strategy_content=None, strategy_path=None)

  • 适用场景:仅限 研究模块
  • 参数
    • strategy_content (str): 策略代码的内容字符串。
    • strategy_path (str): 策略文件的路径(需先上传至研究目录)。
  • 返回:返回一个包含变动信息的字典(List),主要包含 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),可以通过文件路径进行检查。

步骤:

  1. 将策略代码保存为 .py.txt 文件(必须是 utf-8 编码)。
  2. 上传该文件到 PTrade 的“研究”根目录或子目录下。
  3. 运行以下代码:
# 在研究环境中运行

# 假设您的策略文件名为 'my_strategy.py',且位于当前目录下
file_path = './my_strategy.py'

# 调用检查函数
# 注意:如果同时传入 content 和 path,系统仅检查 content
check_result = check_strategy(strategy_path=file_path)

# 打印检查结果
print("文件检查结果:")
print(check_result)

检查结果解读

函数返回的结果通常是一个字典结构,包含以下两个关键字段:

  1. api_change_list: 列出了策略中使用的、在升级过程中发生变动或过期的 PTrade 原生 API 名称。
  2. package_change_list: 列出了策略中导入的、在升级后版本发生变化或不再支持的 Python 第三方库名称。

返回示例:

{
    "api_change_list": [
        "get_history", 
        "margincash_open"
    ],
    "package_change_list": [
        "pandas"
    ]
}
  • 如果列表为空,说明您的策略代码中未检测到已知的过期或变动 API。
  • 如果列表中有内容,请务必参考最新的 PTrade API 文档对相关接口进行调整。

Q&A

Q: check_strategy 函数可以在回测或交易界面直接运行吗?
A: 不可以。该函数仅在 研究模块 可用。您需要将代码复制到研究环境的 Notebook 中运行检查。

Q: 检查出 API 变动后,我该如何修改代码?
A: 您需要查阅 PTrade 官方 API 文档中对应函数的说明。通常变动涉及参数名称的修改、返回数据结构的改变(如从 Panel 变为 DataFrame)或函数名称的更替。

Q: 为什么我传入了 strategy_path 却报错找不到文件?
A: 请确认文件已上传至研究环境,且路径填写正确。通常使用相对路径 ./文件名 即可。同时确保文件编码为 utf-8 格式。

Q: 这个函数能检查出所有的逻辑错误吗?
A: 不能。check_strategy 仅用于静态扫描代码中是否包含已知变动的 API 或库,它无法检测策略的交易逻辑错误或运行时错误。