文档1.0 (latest)
页面测试结果 · 18 / 29

测试结果

每次回测(运行代码中的 Test)之后,IDE 都会为您运行的文件打开 Test Results。它是编辑器 Code Editor / Test Results 切换器的第二个视图(工作区布局),显示引擎为该次运行产生的一切:图表、绩效统计、交易以及 HTML 导出。运行期间的日志和图表会流式输出到输出面板。

每个打开的文件都有自己的 Test Results —— 切换文件会显示该文件最近一次的结果。


出现的位置

  • 点击工具栏中的 Test 后,结果准备好时视图会自动切换到 Test Results。
  • 您可以随时使用编辑器区域上方的小标签栏在 Code Editor 和 Test Results 之间切换。
  • 窗格顶部的状态横幅会告诉您运行处于什么状态:
    • 引擎工作时显示 Running backtest — <file>。
    • 出错时显示带有错误堆栈的 Backtest failed — <file>。
    • 单次运行成功完成时显示 Backtest result — <file>。
    • 运行参数优化时显示带有标签栏的 Optimization — <file>(请参阅末尾的优化运行)。

如果某个文件从未被测试过,您会看到一个友好的空状态,引导您回到 Test 按钮。


成功运行的布局

成功的回测结果自上而下分为三个可调整大小、可折叠的区域:

  1. 图表面板 — 带标记的价格图表(多标的运行时每个标的有一个标签页)。
  2. Performance — 净值和余额图表,以及指标网格。
  3. Trades — 已平仓交易,以及(在适用时)运行结束时的未平仓持仓。

1. 图表面板

顶部区域渲染运行中使用的 OHLC K 线,并叠加您策略的内容:

  • 在入场和出场点绘制交易标记。
  • 当您的代码通过 chart_indicators 添加指标叠加时,它们会出现在这里(参见指标序列文档)。线条和柱状图会按您的配置渲染在主窗格中,或渲染在蜡烛图下方的单独子窗格中。
  • 多标的运行会在图表上方出现一个标签栏 — 每个标的一个标签页。点击标签页可切换您正在查看的标的图表。结果负载包含 clock_symbol(驱动时间表的标的)、ohlcv.bars_by_symbol(按标的划分的 K 线列表),以及为每个标签页按 symbol 过滤的 chart_indicator_series 条目。
  • 图表上方的小型图表工具栏包含 Export HTML 按钮(见下文),在优化视图中还包含该运行的参数标签。

如果结果没有可绘制的 ohlcv.bars,图表区域会被替换为一条简短说明和导出工具栏,这样您仍可以保存 HTML 报告。

2. Performance

点击 Performance 展开面板。它包含两部分:

净值和余额图表

运行期间账户的折线图:

  • Equity — 每一步按市值计算的账户价值。
  • Balance — 同一时间轴上已结算的现金余额。

对于很长的运行,图表会自动降采样,并使用基于时间的坐标轴标签,让您一眼就能读懂时间线。

指标网格

由运行结束时的 account.refresh_metrics(...) 生成的汇总统计网格。颜色徽章突出显示带符号的值(盈利为绿色,亏损为红色)。

指标含义
Total return期末净值相对于初始余额的百分比。
Total P/L以账户货币计的累计已实现 + 未实现盈亏。
CAGR运行期间的复合年化增长率。
Max drawdown净值从峰值到谷底的最大跌幅。
Volatility运行期间的净值波动率。
Sharpe风险调整后的收益比率。
Sortino经下行风险调整后的收益比率。
Calmar年化收益除以最大回撤。
Profit factor已平仓交易的总盈利 / 总亏损。
Risk-adj. return按所承担风险缩放后的收益。
Avg expectancy每笔交易的平均预期盈亏。
Average win盈利交易的平均盈利。
Average loss亏损交易的平均亏损。
Current exposure最后一根 K 线时的敞口。
Average exposure运行期间的平均敞口(0–100%)。
Max exposure运行期间的敞口峰值(0–100%)。

当某个指标对该次运行不可用时(例如没有已平仓交易就没有盈利因子),单元格会显示 —。

3. Trades

底部区域最多有两张表:

已平仓交易

由 account.open_trade(...) + account.close_trade(...) 执行的每一个往返交易。列包括 side、quantity、entry price、exit price、entry time、exit time 和 realized P/L(颜色编码)。

启用日历数据时,Split 和 Dividend 行会内联出现在交易行之间 —— 运行期间每应用一次公司行动就出现一行 —— 且卡片标题为 Closed trades & events。Split 行显示日期、比例(例如 4:1)以及股数变化;Dividend 行显示日期、每股金额以及入账的现金总额(空头则为扣除)。估算的除息日会标记为 est. 这些行在图表上没有 # 标记,并且不会出现在 CSV 导出中,因此 CSV 仍是干净的交易记录。

  • 点击 Closed trades 可折叠或展开该表。
  • 点击任意一行的入场/出场时间,可跳转到图表上的该事件。
  • 使用本节顶部的 Export CSV 将已平仓交易保存为 .csv 文件(支持时会弹出系统 Save As 对话框)。

未平仓持仓(运行结束时)

仅当策略结束运行时仍有未平仓持仓在账上时才显示。列的约定与已平仓交易相同,外加您的代码所使用的持仓 ID。

提示:折叠交易面板时,它会自动调整大小 —— 折叠它可为图表和 Performance 腾出更多垂直空间。


HTML 导出

使用 Export HTML(位于图表工具栏右上角)保存一个独立的 .html 文件,其中包含您在屏幕上看到的一切:

  • 每个图表面板(多标的运行时每个标的一张图片)。
  • 净值和余额图表。
  • Performance 指标。
  • 已平仓交易表。
  • 报告标题(取自文件名)以及报告生成的时间。

工作方式:

  1. IDE 会短暂地展开 Performance 面板,以便捕获净值图表。
  2. 它会遍历每个图表标签页,并将图表截取为 PNG。
  3. 结果被打包成一个 HTML 文件,并通过保存对话框提供(文件名类似 backtest-report-<timestamp>.html)。

在任何浏览器中打开该文件,即可与没有 IDE 的人分享该次运行 —— 无需互联网连接。

导出期间按钮会显示 Exporting…。导出期间不要切换标签页或关闭 IDE,否则保存的文件中可能缺少某些面板。


运行状态(快速参考)

横幅含义
Running backtest — <file>引擎正在执行该次运行。中间显示“Results Loading, Waiting for engine…”。
Backtest result — <file>单次运行成功。图表、Performance 和 Trades 均已填充。
Backtest failed — <file>运行出错。窗格以红色显示引擎的错误消息。
Optimization — <file> (x/y)参数扫描正在进行;随着运行完成会出现标签页。

优化运行

当您在启用 Optimize script parameters 的情况下测试时,Test Results 会显示一个标签栏 —— 每个参数组合一个标签页 —— 以及任何汇总信息,例如运行总数、遗传运行的适应度指标,以及运行仍在完成期间的进度。

  • 点击标签页即可像单次运行一样加载该次运行的图表、Performance 和交易。
  • 所选运行的参数标签会显示在图表工具栏旁边,让您始终知道正在查看哪个组合。
  • Export HTML 使用当前运行的数据,并以该运行的标签作为报告标题。
  • 如果优化被提前停止,会有横幅提示,并且仅显示已完成的运行。

提示

  • 折叠您不需要的面板(图表、Performance 或 Trades),以专注于其余部分。
  • 切换文件会换入该文件最近一次的测试结果 —— 您的其他标签页不会丢失。
  • 对于非常长的回测,净值图表会被降采样以保持流畅;指标网格中的底层数值不受影响。
  • CSV 用于已平仓交易;HTML 用于一切。请根据您想要分享或分析该次运行的方式选用。
阅读约 2 分钟建议修改 ↗
测试结果 — 文档 (1.0 (latest)) | QuantCraft