文档1.0 (latest)
页面输出面板 · 19 / 29

输出面板

输出面板位于 QuantCraft 工作区的底部,您的代码输出或绘制的一切内容都会显示在这里 —— print() 语句、错误消息、图表,以及长时间运行的回测的进度。

它由 Run 和 Test 共享:每次执行都会清空它,并在运行过程中写入新的输出。结构化的指标和图表显示在测试结果中。


打开、折叠和调整大小

  • 一旦有新内容被记录或绘制,面板就会自动打开,这样您不会错过输出。
  • 点击 Output 标题(或其旁边的箭头)可折叠或展开面板。
  • 面板上方的水平分隔条可以向上或向下拖动,以给它更多或更少的屏幕空间。您也可以聚焦分隔条并使用上/下方向键微调。
  • 输出面板的高度(以及编辑器的分割)会在会话之间保留。

日志(stdout 和运行消息)

您的脚本写入标准输出的任何内容,都会在面板中显示为带时间戳的日志行:

[14:32:11] Loaded 480 bars [14:32:11] Entering position at 192.40 [14:32:13] Final equity: 102450.13

需要了解:

  • 每个条目都带有您本地时钟的时间戳。
  • 日志文本使用等宽字体并自动换行,因此长行无需水平滚动即可阅读。
  • 新输出到达时,面板会自动滚动到最新消息,无论是在运行期间还是在运行刚结束之后。
  • 如果脚本结束时没有任何内容可打印,会显示简短的 (no output) 占位符。
  • 启用日历数据时,引擎会为每个已应用的公司行动(拆股或分红)写入一行 [calendar],并在末尾给出汇总,例如:
    [calendar] 2024-01-10 AAPL — SPLIT 4:1 applied to 1 position(s): 100 -> 400 shares (cost basis unchanged; bars stay unadjusted) [calendar] 2024-02-09 AAPL — DIVIDEND $0.2400/share on 400 share(s): +$96.00 cash … [calendar] corporate actions — 1 split(s) applied; 1 dividend(s) applied (0 exact ex-date, 1 estimated +/-7d)
    如果根本没有出现 [calendar] 行,请检查运行对话框中是否已开启 Include calendar data —— 参见日历数据。
  • 在 Screener 回测中,Logs 旁边会出现一个 Screener Output 标签页,列出每个再平衡日期以及该窗口内交易的标的 —— 参见选股器。

每个标签页有约 200 条的上限;达到上限后,较早的行会被丢弃。对于产生大量输出的运行,建议在代码中汇总,或每隔 N 根 K 线打印一次。


错误(stderr)

写入标准错误的任何内容 —— 异常回溯、您的代码通过 stderr 输出的警告,或框架消息 —— 都会以红色高亮显示,并在面板标题栏中计数:

  • Output 标题旁会出现一个小型 N error / N errors 徽章,显示已记录的错误行数。
  • 错误与普通日志行一样保留时间戳,便于您将其与周围的事件对应起来。
  • 如果运行以非零退出码结束,但自身没有向 stderr 打印内容,您会看到一行 (exit code N) 错误,让您知道运行失败了。

错误计数是一个实时计数器 —— 清空输出(每次 Run / Test 开始时都会发生)会将其重置,如果新的运行安装了软件包或从先前的失败中恢复,计数将被移除。


图表

输出面板会渲染您代码生成的内联图形,因此您不需要外部查看器。

Matplotlib

运行期间您的代码显示的任何 Matplotlib 图形,都会以符合面板宽度的 PNG 图像形式出现。它们非常适合快速的探索性图表。

Plotly

Plotly 图形会在面板内渲染为完全交互式的图表:

  • 悬停在某个序列上可查看精确数值。
  • 使用鼠标 / 触摸进行缩放和平移。
  • 使用 Plotly 工具栏进行下载、自动缩放及其他操作。
  • 图表会随面板调整大小。

每个图表 —— 无论是 Matplotlib 还是 Plotly —— 都会在面板时间线中与日志行并列,显示在各自的带边框块中,因此您能准确看到它相对于 print() 输出是在何处生成的。

图表和日志共享每个标签页相同的上限,因此非常长的图形序列最终会把较早的输出挤出视野。


长时间运行的进度

回测运行时,面板标题栏会多出两个元素,让您无需盯着滚动的日志就能掌握进度:

  • 一个带有如下标签的进度条:
    • Bar 1234 / 5000 —— 已处理的模拟 K 线数量。
    • Run 3 / 10 —— 对于进行中的优化,当前正在执行的运行(占总数)。
    • Gen 2/5 · 7/16 —— 对于遗传优化,当前的代/个体。
    • Backtest running —— 引擎已启动但尚无确切进度时。
  • 进度条随引擎报告进度而增长,并在运行结束后立即消失。

您可以折叠面板,进度条仍会显示在标题栏中,因此即使您专注于编辑器,运行状态也始终一目了然。


Disclaimer 按钮

标题栏中有一个 Disclaimer 按钮,可打开一段简短的说明,介绍 QuantCraft 如何在您的机器上执行 Python。它与您首次 Run 之前看到的说明相同,只是可随时再次阅读。关闭此对话框不会更改您的设置。


提示

  • print() 是您的好帮手,适合快速调试。保持消息简短并加上标记(f"[ENTRY] {symbol} {qty} @ {price}"),便于快速浏览。
  • 将冗长的细节写入文件,而不是打印数千行 —— 只有最后约 200 条仍然可见。
  • 错误是红色的并计入徽章 —— 当您看到计数增加时,请滚动到底部;最新的错误通常就是中止运行的原因。
  • 对于 Plotly,使用面板的调整大小分隔条为图表提供更多高度;它会自动缩放。
  • 面板在各文件之间共享:如果您在运行中途切换标签页,您看到的输出属于最近一次/当前活动的执行。
阅读约 1 分钟建议修改 ↗
输出面板 — 文档 (1.0 (latest)) | QuantCraft