跳转到内容

研究笔记本

研究笔记本让你使用 Rust 和 AQE 分析历史市场数据,并将研究内容与策略保存在同一项目中。每个笔记本都有独立的单元格、输出、数据设置和本地 Rust 会话。

AQS 研究笔记本,包含 Markdown 研究问题、Rust 单元格、BTCUSD K 线数据表和研究会话控件。AQS 研究笔记本,包含 Markdown 研究问题、Rust 单元格、BTCUSD K 线数据表和研究会话控件。
在策略项目的同一个笔记本中,集中保存研究笔记、Rust 代码和表格输出。
  1. 打开 Research,选择最近使用的策略项目。如果未列出,先从 Projects 打开该项目。
  2. 输入标题并选择 New notebook。可以为同一策略创建多个笔记本。
  3. 添加 Rust 或 Markdown 单元格。通过标题字段命名单元格;使用单元格菜单移动或删除它们。
  4. 选择 Save 保存修改。运行单元格时,系统会先保存笔记本,执行完成后再保存输出。

笔记本以 research/*.ipynb 存储在策略目录中。历史快照位于 research/data/;各单元格运行记录位于 research/runs/。运行记录包含已执行源代码、笔记本修订版、数据配置、快照哈希和结果。数据源凭据不会保存在笔记本中。

AQS 保持打开时,切换选项卡会保留未保存草稿。Reload from disk 在丢弃草稿并重置会话前会请求确认。

选择已保存的 Data feed,而不是经纪商执行适配器。自定义连接使用显示名称,并在括号内显示提供商。在数据源中配置连接。

输入与提供商完全一致的品种代码、1m、5m 或 1h 等 AQE 周期,以及起止日期和时间。无论计算机使用什么时区,两个日期选择器都按 UTC 解释。数据范围包含开始时间,不包含结束时间;结束时间不得晚于当前时间。

使用 bars、data 或 AQS 输出辅助工具前,请先选择 Load data into Rust。首次加载需要编译 AQE 和 Polars,可能耗时数分钟。每个品种的数据会作为一个 Polars DataFrame 保存在 data 中,bars 则是第一个品种的工作副本:

data.summary()?;
let mut btc = data.bars("BTCUSD")?;
aqs_table(&btc, 10)?;
aqs_chart(&btc).candles()
.pane("Volume", |p| p.histogram("volume"))
.show()?;

使用实际加载的品种代码,例如 Yahoo 使用 BTC-USD,而不是 MT5 经纪商的 BTCUSD。CSV 历史数据必须包含确切的品种和周期;笔记本不会替换为相近周期。数据流缺失或为空时会产生加载错误。

使用 data.symbols() 列出已加载品种,或在 Loaded symbols 下选择一个品种,再选择 Add symbol analysis cell。这只会插入单元格,不会运行。图表辅助工具支持叠加线、独立指标窗格、分布图和归一化品种比较。

更改数据设置后,需要重新加载数据。快照让输入可追溯,但不能防止代码中的前视偏差:研究单元格可以访问所选范围内的全部历史数据。

同一会话中的单元格共享并保留变量,不同笔记本的变量彼此独立。AQS 最多可同时运行四个笔记本会话;停止闲置会话即可释放名额。

点击播放按钮运行单个单元格,或选择 Run all,按笔记本中的顺序执行代码单元格。每个单元格都会显示执行次数、状态和耗时。该耗时包含本次运行的编译和求值时间,并非重复测量的基准测试结果,也不能代表策略吞吐量。

错误显示在对应单元格中。遇到编译错误、运行时错误、panic 或需要检查的 stderr 消息时,Run all 会停止。即使是有意向 stderr 写入警告,也会停止自动执行。

Stop / reset 终止笔记本会话并清除变量。现有输出保留,但标记为过时。重置后需重新加载数据,并重新运行依赖单元格。编辑代码或移动单元格也会将受影响输出标记为过时;这不会自动撤销会话中已创建的变量。

AQS 研究笔记本,展示 Rust 指标代码、叠加指数移动平均线的 BTCUSD K 线图,以及成交量和 ATR 窗格。AQS 研究笔记本,展示 Rust 指标代码、叠加指数移动平均线的 BTCUSD K 线图,以及成交量和 ATR 窗格。
计算 AQE 指标,并在 Rust 单元格下方查看价格叠加线、成交量和 ATR 窗格。标记为 Stale 的输出需要重新运行相关单元格后才能使用。

Rust 单元格支持 Evcxr 依赖声明:

:dep chrono = "0.4.45"
use chrono::Utc;
Utc::now()

请将自定义声明放在已保存的初始化单元格中,重置后重新运行。编译后的依赖会按笔记本持久缓存,但 Rust 变量不会在重置后保留。

在 Strategy code & backtests 中选择 Load research tools,即可通过 project:: 使用关联策略的组件,同时加载回测辅助工具。如果项目已有库,会直接使用其公共导出。对于仅含二进制目标的 AQS 项目,系统会通过 research/imports/ 下的适配器,导出 src/main.rs 中的模块,以及未接入节点图的 .alpha.rs、.pipe.rs、.indicator.rs、.logic.rs 和 .universe.rs 文件,不会修改原文件。

单元格可以使用项目的常规依赖。系统会解析相对依赖路径和继承自工作区的依赖,笔记本编译器以项目的 Cargo.lock 为起点。研究功能会添加自己的辅助依赖,因此不保证锁文件逐字节一致。可选依赖仍需启用对应的 Cargo feature。仅含二进制目标且带有自定义构建脚本的项目,应先通过 src/lib.rs 导出库接口。

加载新增或变更后的导入会重置 Rust 变量、恢复已加载的快照 K 线,并将已保存输出标记为过时。项目导入未改变时,再次点击会复用正在运行的会话,不编译,也不清除变量。已保存的项目源代码、图、清单或锁文件更改后,需要重新加载工具。外部路径依赖改变时,先使用 Stop/reset,再选择 Load research tools。仍支持自定义单元格、函数、结构体和额外的 :dep 声明。

只需执行一次 Load research tools,即可准备项目导入和已保存回测的分析工具,无需连接数据源。首次编译可能耗时数分钟,面板会显示编译进度和耗时。请保留笔记本编译缓存,以便复用已构建的依赖。有关导入、缓存、Alpha 信号研究、已保存结果、隔离实验和热力图,请参阅策略复用与回测。

Open strategy graph 返回关联项目。此版本不提供 Python 和远程执行。

通过研究会话面板中的 AQI paper 区域,你可以将本地笔记本内容加入 AQ Insights 研究文章。登录后,可选择:

  • Use notebook as paper:打开完整 AQI 文章编辑器,创建一份独立的本地草稿,并为每个选定单元格创建一个组件块。这不会上传或发布任何内容,也不会替换其他尚未保存的文章。
  • Attach to a paper:选择一份私有草稿,在追加笔记本单元格块后打开文章编辑器。现有文章内容和尚未保存的修改都会保留。此快捷操作不适用于已发表的文章。

文章编辑器工具栏中的 Add notebook 按钮与引用、回测块控件并列。在对话框中,你可以选择策略项目、笔记本和具体单元格,并决定是否包含源代码和已保存输出。检查渲染预览后,选择 Insert notebook cells。这只会修改本地文章草稿,绝不会执行单元格或加载市场数据。

每个单元格将代码和输出保存在一起。将鼠标悬停在单元格上,会在标题栏显示 Move up、Move down、Add text before、Add text after 和 Remove block 图标。工具提示标明各操作;键盘聚焦也会显示控件,触摸设备上则持续显示。对于旧版整个笔记本嵌入块,可使用 Split into cells。这些操作不会修改源笔记本。AQS 中的读者可以引用单元格内的一段内容,而不必选中整个嵌入块。

笔记本块保留单元格边界、Markdown、Rust 源代码、表格样本、多窗格图表、散点图、分布图和纯文本结果。Research 快捷入口会纳入所有受支持的单元格及其符合条件的已保存输出;如需只分享部分内容,请使用文章编辑器中的选择器。过时、失败或未经验证的输出,以及执行日志,都会被排除,并在块中显示警告。Markdown 图片会转换为文字描述,笔记本 HTML 按文本处理。读者无需安装 Rust 或运行笔记本,即可查看已保存的结果。

确认前,请检查代码和输出是否包含机密,并确认有权分享其中的市场数据。数据集文件、本地数据集路径、数据源 ID、凭据和任意笔记本元数据不会自动上传。你编写或打印的文本仍可能包含敏感信息。选择表格输出会分享所显示的数据行。

在文章编辑器中勾选分享审核复选框,然后选择 Save Draft 上传为私有草稿,或明确选择 Publish 公开发表。更改文章内容后,需要重新勾选审核。文章保存后,如果源笔记本仍可访问,AQS 会将文章链接写入笔记本元数据。原笔记本仍保留在策略项目的 research/ 中。导出或阅读时都不会执行任何单元格。

分享的是你主动创建的快照,不是实时同步内容,也不是可执行的笔记本附件。之后修改笔记本,不会改变文章中的内容。如需更新快照,请添加新的笔记本块;选中块并按 Delete,可将其从文章中移除。块内的笔记本内容只读,周围的文章正文仍可编辑。图表使用静态、自包含的已保存结果,表格最多预览 100 行和 50 列。每个快照最多选择 100 个单元格,大小上限为 2 MiB;含笔记本块的文章也有 2 MiB 的分享上限。

切换选项卡时,本地草稿会保留在内存中,但只有保存后才会持久保留。如果云端保存结果不确定,请先检查 My Papers 再重试,避免产生重复快照。如果只是本地笔记本链接保存失败,说明文章已经保存;此时应使用笔记本的 Save,不要再次导出。

只运行你信任的笔记本。Rust 单元格以本地账户权限执行;进程隔离不是安全沙盒。研究功能不会自动下单,但用户编写的 Rust 代码可以访问文件、网络和 API。

如果缺少 bars,先成功加载历史数据。也可以通过 Load research tools 安装辅助工具,而不连接数据源。如果 Rust 运行时不可用,请遵循单元格中显示的工具链提示。发生 panic 后必须重置会话。

有关输出函数,请参阅研究图表与辅助工具;有关独立的市场图表工作区,请参阅AQS 图表。