关于 optimize
为交易者生成 VectorBT 策略参数优化脚本,支持多指标评估、参数网格热图和 NIFTY 基准比较,并将结果保存为 CSV。
主要功能
- 01按策略和标的创建优化脚本
- 02使用 OpenAlgo ta 计算指标并清理信号
- 03循环测试参数并记录收益、夏普、回撤和交易数
- 04生成总收益与夏普比率热图
- 05与 NIFTY 基准比较并保存 CSV
适用场景
- 01寻找策略的高收益或高夏普参数
- 02比较优化策略与 NIFTY 基准表现
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ marketcalls/ vectorbt-backtesting-skills --skill optimize安装后在 Claude Code 中输入/optimize确认已加载。
详细介绍
为 VectorBT 策略创建参数优化脚本。
参数
按以下格式解析 $ARGUMENTS:策略名称 标的 交易所 周期
$0= 策略名称(例如:ema-crossover、rsi、donchian)。默认值:ema-crossover$1= 标的(例如:SBIN、RELIANCE、NIFTY)。默认值:SBIN$2= 交易所(例如:NSE、NFO)。默认值:NSE$3= 周期(例如:D、1h、5m)。默认值:D
如果没有参数,请询问用户要优化哪种策略。
说明
- 阅读 vectorbt-expert 技能规则,参考其中的模式
- 如果
backtesting/{strategy_name}/目录不存在,则按需创建 - 在
backtesting/{strategy_name}/中创建一个.py文件,命名为{symbol}_{strategy}_optimize.py - 脚本必须:
- 使用
find_dotenv()从项目根目录加载.env,并通过 OpenAlgoclient.history()获取数据 - 如果用户提供 DuckDB 路径,则通过
duckdb.connect(path, read_only=True)直接加载数据。参见 vectorbt-expertrules/duckdb-data.md。 - 如果无法导入
openalgo.ta(独立 DuckDB),则使用内联exrem()回退实现。 - 默认对所有指标使用 OpenAlgo ta(绝不使用 VectorBT 内置指标)。只有用户明确提到“talib”或“TA-Lib”时才切换到 TA-Lib
- 特殊指标始终使用 OpenAlgo ta(例如 Supertrend、Donchian 等)——没有对应的 TA-Lib 指标
- 使用
ta.exrem()清理信号(调用 exrem 前始终先执行.fillna(False)) - 为所选策略定义合理的参数范围
- 使用基于循环的优化,为每组参数收集多个指标
- 使用
tqdm显示进度条 - 印度交割费用:交割股票使用
fees=0.00111, fixed_fees=20 - 分别按总回报和夏普比率找出最佳参数
- 按这两项标准分别打印前 10 个结果
- 生成总回报参数网格的 Plotly 热力图(
template="plotly_dark") - 生成夏普比率参数网格的 Plotly 热力图
- 获取 NIFTY 基准数据,并将最佳参数与基准进行比较
- 打印策略与基准的对比表
- 用通俗易懂的语言向普通交易者解释结果
- 将结果保存为 CSV
- 使用
- 代码或日志输出中绝不使用图标或表情符号
- 对于期货标的,使用适配手数的仓位大小:
- NIFTY:
min_size=65, size_granularity=65 - BANKNIFTY:
min_size=30, size_granularity=30
- NIFTY:
默认参数范围
| 策略 | 参数 1 | 参数 2 |
|---|---|---|
| ema-crossover | 快速 EMA:5-50 | 慢速 EMA:10-60 |
| rsi | 窗口:5-30 | 超卖:20-40 |
| donchian | 周期:5-50 | - |
| supertrend | 周期:5-30 | 乘数:1.0-5.0 |
使用示例
/optimize ema-crossover RELIANCE NSE D
/optimize rsi SBIN
评论
支持 Markdown