页面运行代码 · 7 / 29
运行代码

QuantCraft IDE 为您提供三种方式来执行您正在编辑的文件(工作区),每种都有特定用途:
| 按钮 | 作用 | 何时使用 |
|---|---|---|
| Run | 将当前文件作为普通 Python 脚本执行。 | 快速检查、原型开发、打印数值、检验辅助函数、生成临时图表。 |
| Test | 启动对策略的回测。 | 在历史数据上评估策略、单次运行、参数扫描或遗传优化。参见回测。 |
| Compile | 构建策略的可运行包,之后可将其附加到图表。 | 为在 IDE 之外的图表上运行而准备已完成的策略。 |
打开文件时,这三个按钮都位于编辑器区域的右上角。Run 和 Test 对任何文件始终可用;Compile 则出现在符合 QuantCraft 策略模板的 .py 文件上。
快速运行(Run 按钮)
Run 按钮是执行代码最简单的方式:它从头到尾运行您正在查看的文件,就像一个普通的 python myfile.py。
如何运行
- 在编辑器中打开您想要运行的文件(不必是策略——任何
.py文件均可)。 - 点击编辑器上方工具栏中的 Run。
- 每个会话第一次使用时,您会看到 Disclaimer 对话框(见下文)。点击 I understand 继续。
- 输出会在产生时流式显示在工作区底部的输出面板中。
代码运行期间,Run 和 Test 按钮会被禁用,以防止运行重叠。
执行的内容
- 活动文件是入口点。
- 工作区中的所有其他文件和文件夹都可供使用,这样您就可以在运行的文件中
import它们(工作区文件夹的工作方式与 Python 包类似——from my_folder import my_module)。 - 代码在 QuantCraft IDE Python 环境(依赖项)中运行,因此 Packages 下列出的任何软件包(包括您添加的)都可以导入。
Run 中可用的功能
print(...)以及写入 stdout / stderr 的任何内容都会实时显示在输出面板中(错误以红色显示)。- Matplotlib 图(
plt.show()风格的图表)会作为图像内联渲染在输出面板中。 - Plotly 图会渲染为内联的交互式图表。
- 脚本可以使用标准库、您环境中的第三方软件包以及您自己的工作区模块。
何时不使用 Run
Run 执行的是纯 Python——它不会驱动 QuantCraft 回测引擎。如果您的文件依赖策略回调 on_init、on_bar 和 on_finish,Run 不会调用它们;请改用 Test(策略生命周期)。
输出
无论您的代码在哪里打印、绘图或报错,都可以在工作区底部的输出面板中看到。
您会看到什么
- 写入
stdout的所有内容对应的带时间戳的日志行。 - 写入
stderr的所有内容对应的红色错误,以及面板标题栏中的一个小型错误计数徽章。 - 内联图表 — Matplotlib 图像和 Plotly 交互式图表。
- 如果脚本成功运行但没有打印任何内容,则显示
(no output)。 - 如果脚本以非零退出码结束且未写入错误,则显示
(exit code N)。
使用面板
- 点击 Output 标题(或其旁边的箭头)可折叠 / 展开面板。
- 新行到达时,面板会自动滚动到最新输出。
- 面板在各文件之间共享 — 下次运行 Run 或 Test 时,之前的输出会被清除,让您重新开始。
- 使用面板上方的分隔条来调整它占据的屏幕大小。
Run 和 Test 都写入同一个输出面板;Test 还会在编辑器区域的 Test Results 视图中显示结构化结果。
免责声明
QuantCraft 在您的机器上使用您的用户账户执行 Python。在会话中首次运行之前,您会看到一个 Disclaimer 对话框,用通俗的语言解释这一点。
免责声明涵盖的内容
- 代码不在沙箱中运行——脚本可以读写您有权访问的文件、使用网络并启动其他程序(例如通过
subprocess)。 - 这适用于使用您信任的代码进行本地开发。
- 您需要对您运行的代码、安装的软件包以及发送给外部服务的数据负责。
出现的两种方式
- Run 流程免责声明 — 在您点击 Run(或 Test)时出现。它包含一个**“Don't show this again”**复选框。如果您在点击 I understand 之前勾选它,之后的 Run 和 Test 将跳过该对话框并立即执行。
- 参考免责声明 — 也可随时通过输出面板标题栏中的 Disclaimer 按钮打开。此版本为只读 —— 关闭它不会更改您的设置。
如果您之后改变主意,想让该对话框重新出现,请清除浏览器/应用中 QuantCraft 的网站数据(或使用您常用的应用重置方式),下次 Run 时免责声明将再次出现。
Run、Test 与 Compile —— 何时使用哪一个
使用这份简短的指南选择合适的操作。
在以下情况使用 Run…
- 您想快速执行脚本并查看它打印或绘制的内容。
- 您正在为辅助函数做原型、探索数据或验证计算是否符合预期。
- 您正在编写一个根本不是策略的小型实用脚本。
- 您想在开发过程中打印中间值。
Run 是最快的反馈循环。它不模拟交易,不计算绩效指标,也不需要策略模板。
在以下情况使用 Test…
- 您想在历史数据上回测策略。
- 您的文件遵循 QuantCraft 策略模板(包含
on_init、on_bar、on_finish)。 - 您需要结构化结果:净值曲线、绩效指标、交易历史和图表。
- 您想扫描参数(暴力优化)或运行遗传优化来搜索较好的参数组合。
点击 Test 时,会打开 Backtest 对话框,您可以在其中选择标的、日期范围、参数以及(可选的)优化设置。Test 通过回测子进程运行您的策略(与普通 Run 的路径不同)——IDE 通过 WebSocket 发送配置,并将进度流式输出到输出面板。结果随后显示在编辑器的 Test Results 视图中。您可以随时用 Stop 停止长时间运行的测试。
在以下情况使用 Compile…
- 您有一个已完成的策略,想将其附加到图表(以便它在 IDE 之外针对实时或已记录的数据运行)。
- 该文件是包含必需回调(
on_init、on_bar、on_finish)的.py策略。
Compile 会将策略连同其导入的工作区模块和所需的 IDE 软件包打包成单个可运行包文件(*.qcraft.json),您可通过系统文件对话框将其保存到磁盘。该包不会自行运行——它旨在附加到图表,从那里驱动策略。
如果 Compile 按钮被禁用,说明文件缺少必需的策略回调之一。添加
def on_init():、def on_bar(...):和def on_finish():(或使用默认策略模板)即可启用。
提示
- 停止长时间运行 — 回测进行时,Run/Test 控件旁边会出现 Stop 按钮。普通的 Run 脚本可通过关闭文件或中断后端来结束。
- 我的输出去哪了? — 输出面板在 Run 和 Test 之间共享。如果您在两者之间切换过,请在面板中向上滚动;最近一次运行的输出在底部。
- 导入工作区中的其他文件对 Run 同样有效 — Run 和 Test 都将您的工作区视为包树,因此相同的
import语句在两者中的行为一致。 - 分享前先编译 — 如果您想在图表上使用该策略,请务必在最后一次编辑后进行 Compile,以便包反映您最新的代码。

