页面测试结果 · 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 按钮。
成功运行的布局
成功的回测结果自上而下分为三个可调整大小、可折叠的区域:
- 图表面板 — 带标记的价格图表(多标的运行时每个标的有一个标签页)。
- Performance — 净值和余额图表,以及指标网格。
- 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 指标。
- 已平仓交易表。
- 报告标题(取自文件名)以及报告生成的时间。
工作方式:
- IDE 会短暂地展开 Performance 面板,以便捕获净值图表。
- 它会遍历每个图表标签页,并将图表截取为 PNG。
- 结果被打包成一个 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 用于一切。请根据您想要分享或分析该次运行的方式选用。

