PTrade 策略生成与校验
将用户的自然语言策略需求转化为可直接在 PTrade 平台回测/运行的 Python 策略代码,交付前完成静态校验。
核心知识(必读)
生成任何策略前,先读本技能目录下的:
references/platform_context.md—— 平台架构、事件机制、持久化规则、代码规范、三方库列表、策略模板与示例(双均线/MACD/tick/两融)。这是最重要的规则来源。
API 文档查阅
references/api/list.md—— 全部接口索引(接口名、说明、业务范围、支持的引擎流程)。references/api/parts/<分类>/<接口名>.md—— 单个接口的详细参数与返回值。分类:engine / system / data / stock / trade / factor / future / credit。- 规则:用到的每个平台接口,必须先读其 parts 文档确认签名与参数,禁止凭记忆写参数。
- 若环境中存在 PTrade 相关 MCP 工具(如
ptrade_api_info_get),优先用它取接口详情,没有则读本地文档。
工作流程
1. 需求完整性检查
生成前确认以下要素;缺失则先向用户追问(一次问完):
- 业务范围:股票 / 可转债 / 期货 / 两融 / ETF
- 标的或选股范围(具体代码需带市场后缀,如
600570.SS) - 运行周期:日线 / 分钟线(tick 仅交易环境,回测不可用)
- 买卖条件(指标、阈值、方向)
- 仓位管理(满仓 / 固定金额 / 等权分散)与风控(止损、滑点、佣金)
2. 生成代码
硬性规范(违反即回测报错):
- 兼容 Python 3.5:禁止 f-string、海象运算符;字符串用
"%s" % (...)或.format() - 必须包含
initialize(context)与handle_data(context, data);可选before_trading_start/after_trading_end initialize中必须set_universe()设置股票池,所有操作只能针对股票池标的- 全局状态存
g对象;需持久化的变量不能以__开头;不可序列化对象用g.__xxx私有变量并在 initialize 重建 - 证券代码必须带后缀:
.SS(上海)/.SZ(深圳)/.BJ(北交所) - 关键逻辑加 try-except,用
log.info()/log.error()记录 - 分钟数据涨跌停价为 0.0、历史数据可能为空、停牌
is_open=0,均需防御性处理 - 回测取最新价用
get_history(1, '1m', 'price', code, fq=None, include=True) - 避免使用回测不支持的接口(如仅交易环境的
tick_data、order_tick);注意接口"支持的引擎流程"限制 - 禁止
os模块(引擎禁用),建目录用create_dir - 合规:不推荐具体股票、不提供投资建议;示例标的仅作演示
3. 静态校验(必须执行)
将代码保存为工作区 .py 文件后,运行本技能自带脚本:
python <本技能目录>/scripts/check_strategy.py <策略文件.py> [--json]
- 退出码 1(存在 error):必须修复后重跑,直到 0 error;不得带 error 交付
- warning 级(未识别函数、接口名建议、import 白名单、代码缺后缀):逐条确认修复;接口用法不确定时读
references/api/parts/<分类>/<接口名>.md核实 - 脚本 0 error 后,按
references/checklist.md快速人工复查平台机制类问题(持久化、引擎流程限制、停牌处理等)
4. 回测(由配置控制,默认不自动执行)
读取本技能目录下 config.json 的 auto_backtest 字段:
false(默认):校验通过后直接交付,不要自行调用回测相关技能。交付话术按环境条件选择,不得硬编码:- 先检查技能索引中是否安装了
PTrade策略回测助手:已安装则告知用户"回复'回测'即可继续执行真实回测;若报错,把结果发我即可帮你分析修复"; - 未安装则告知"如需回测,请在官方 PTrade 客户端运行本策略",不得承诺本机可继续回测。
true:校验通过后调用PTrade策略回测助手执行一次真实回测,如实转达结果(含error_class/guidance诊断标签)。是否修复、是否再回测由用户决定,不要自动进入修复循环。调用前先确认 runner 已安装;未安装则按上一条"未安装"分支处理并如实告知。
无回测能力时的行为守则:环境中缺少 PTrade策略回测助手 时,禁止编造任何回测结果——收益率、最大回撤、夏普、成交次数等指标一律不得虚构。用户要求回测而本机无执行能力时,如实说明,并引导其在官方 PTrade 客户端运行后粘贴报错或结果回来继续分析。
5. 修复(由用户发起)
用户粘贴策略代码与回测报错/traceback 要求修复时,按以下守则执行;不要主动发起修复:
- 错误归类:对照
references/error_catalog.md匹配报错模式;不匹配时按 traceback 最后一行定位 - 环境/数据类闸门:命中环境/数据类(含 runner 输出的
error_class=missing_market_data)时不要改代码——如实转达补数据/缩区间建议,由用户决定后续 - 查文档:涉及平台接口用法错误时,先读
references/api/parts/<分类>/<接口名>.md确认正确签名再改,禁止凭猜测改接口参数 - 修复:修改工作区中的策略文件,保持策略逻辑意图不变
- 重校验:修复后必须重跑
check_strategy.py,0 error 才交付 - 记录:维护 changes_description —— 每处修改的"修改前 → 修改后 + 原因"
- 再回测与否由用户决定:用户要求再回测时走
PTrade策略回测助手;禁止编造回测结果,未真实执行只能说"待回测"
6. 交付
- 最终策略代码(工作区文件路径)
- 校验结论(错误/警告数、修复要点)
- 若执行了修复:修复记录(changes_description)
- 若执行了回测:回测结果与解读
输出风格
- 中文回答;代码含必要中文注释
- 先简述实现思路,再给代码,最后给校验结论