文档1.0 (latest)
页面参考 · 28 / 29

QuantCraft 文档参考

QuantCraft 附带两种互补的文档:你在 IDE 内阅读的应用内主题,以及随产品捆绑、提供更深入 API 细节的策略参考 Markdown。它们共同描述了如何编写策略、运行回测和使用 IDE。这些网页文档镜像了其中许多主题——请从简介或入门开始。


在应用中哪里阅读文档

  1. 在主应用中打开 QuantCraft。
  2. 展开右侧边栏(如果它已折叠)。
  3. 打开 Documentation 标签页(与 QuantCraft AI 并列)。

你会看到一个可搜索的主题索引。在搜索框中输入,可按标题、摘要或内嵌关键词(例如 on_finish、PaperAccount、chart_indicator_series)进行筛选。

点击主题卡片即可打开完整文章。使用 Back 返回索引。


主题索引(应用内)

主题分为两个部分,与 Documentation 侧边栏一致。

Getting started

主题你将学到什么
基本面数据财务报表数据、以日期为键的表、基本面数据如何与 K 线对齐,以及如何在策略中读取。
Fama-French 因子通过 fama_french.qc 获取全球月度 FF3/FF5 因子收益(Premium;没有回调参数)。
日历数据股息、拆股、财报日期和申报文件(calendar 回调参数,仅限回测),以及模拟中的公司行动。
账户PaperAccount:回测期间提供的余额、头寸、订单、盈亏和业绩指标。
生命周期回调顺序:on_init、on_bar、on_tick、可选的 on_timer(仅限前向)、on_finish——包括多标的基础知识和可选的完整序列 on_finish(bars)。

Reference

主题你将学到什么
输入参数声明 quantcraft.inputs.params、类型,以及数值如何从运行对话框(回测、批量前向、图表前向)提供。
运行预设(.qcs)将运行对话框的设置保存为工作区中的 .qcs 文件并重新加载。
调试Debug Run 与 Debug Test、断点、单步执行、调用栈和变量。
AutoTrading算法和智能体的本地前向运行、New Bulk / Agent Bulk Run,以及监控批量/图表作业。
QuantCloud当你的电脑关机时,在云端运行器上进行批量前向运行(桌面端用户指南)。
智能体Trading、Test 和 Optimization 智能体;手动或使用 AI Builder 构建节点图;暴露的参数与优化;在模拟账户上回测,通过已连接券商前向/实盘;.qca 导入/导出。
QuantCraft AIIDE 的 AI 聊天、连接模型(AI → API Providers)、筛选器工具、AI Tools、MCP 服务器,以及智能体中的 AI Prompt 节点。
QuantCraft ToolsAI 可调用的内置只读市场工具(聊天、AI Prompt 节点、Test / Optimization 智能体)。
OHLCVK 线的形态(OhlcvBarView)、加载器(已连接券商与 B2)、时间范围,以及在回调中使用 K 线数据。
指标序列在回测结果图表上构建 chart_indicator_series 叠加层(折线、柱状图、窗格)。

索引中任何尚未打开完整文章的卡片,在界面中会标注为 Soon。


应用内文档与你的工作流程的关系

在 IDE 中进行操作时,可使用这张快速对照表:

你想要…从这里开始
配置标的、日期、基本面数据并运行模拟策略生命周期 + OHLCV;然后是运行代码(Test)和测试结果。
确定头寸规模、止损,或读取夏普/回撤账户模型
让用户无需编辑代码即可调整阈值输入参数
在权益图表上绘制自定义序列指标序列
混用价格与申报文件/报表基本面数据
混用价格与全球因子收益Fama-French 因子
对股息/拆股做出反应,或围绕财报日期做防范日历数据——calendar 回调参数、days_to_earnings、公司行动
组合主时间周期和副时间周期OHLCV 与 K 线数据——Additional timeframes + rt.get_bar
复用回测或前向对话框的设置运行预设(.qcs)
在某一行暂停并检查变量调试
在你自己的机器上前向运行算法AutoTrading
在远程运行器上运行算法QuantCloud
用可视化节点构建自动化智能体

应用内文章是为策略作者和 IDE 用户撰写的。这些公开文档不涵盖面向服务器运维人员的 QuantCloud 部署。


策略导入

每个导入都写成 quantcraft.*,模块名不带后缀(例如 quantcraft.inputs,而不是 quantcraft.inputs_module)。较旧的 ide.* 和 quantcraft.*_module 路径仍然可以解析,quantcraft.backtest.* 也是如此——这是该包在被重命名为 quantcraft.process.* 之前的旧名称——所以现有策略无需更改即可继续运行——但不要针对它们编写新代码。

主要导入你可能会看到的旧路径用途
quantcraft.process.runtimequantcraft.backtest.runtime, ide.backtest.runtimeaccount、chart_indicators、qc_fundamentals、qc_fama_french、qc_calendar、get_bar(通过 import quantcraft.runtime as rt)
quantcraft(Timeframe)—用于 rt.get_bar(Timeframe.DAILY, shift=1) 的时间周期枚举(主周期和附加周期)
quantcraft.runtime—与 quantcraft.process.runtime 是同一个模块,拼写更短——使用 import quantcraft.runtime as rt 获取 rt.get_bar 和运行时句柄
quantcraft.timeframes—Timeframe 枚举(也可用 from quantcraft import Timeframe)
quantcraft.inputside.inputs_module, quantcraft.inputs_module来自运行对话框的 params
quantcraft.process.ohlcvquantcraft.backtest.ohlcv, ide.backtest.ohlcv_module, quantcraft.backtest.ohlcv_moduleQcOhlcv、qc_ohlcv
quantcraft.fundamentalside.fundamentals_module, quantcraft.fundamentals_moduleQcFundamentals
quantcraft.fama_frenchide.factors_moduleQcFamaFrench、fama_french.qc
quantcraft.accountquantcraft.process.account, quantcraft.backtest.account, ide.account_module, quantcraft.account_modulePaperAccount、OpenPosition
quantcraft.process.indicator_seriesquantcraft.backtest.indicator_series, ide.backtest.indicator_series_module, quantcraft.backtest.indicator_series_moduleChartIndicatorSeries、coerce_chart_time
quantcraft.calendar_module—BacktestCalendar——启用日历数据时作为 calendar 回调参数传入;参见日历数据。这是唯一保留 _module 后缀的模块——不存在 quantcraft.calendar。
quantcraft.cross_sectional—全范围的排名/z 分数——参见下文
quantcraft.process—clamp_indicator_period

较短的重新导出也可用:quantcraft.indicator_series、quantcraft.account。对于 Fama-French,请优先使用 from quantcraft import fama_french,并在回调内部读取 fama_french.qc。

Fama-French 行访问:dataset["rows"] 是一个 YYYYMM → 值的 dict,不是列表。请使用 .row(...) 或 .rows_chronological(...);latest_row(...) 仅限前向运行(在回测中它是前视——参见 Fama-French 因子)。不要使用 rows[0] / rows[-1]。

请勿在策略脚本中使用 quantcraft.b2.*(价格和基本面加载器背后的数据下载层)或 quantcraft.ai_assistant.* 之类的内部包——它们是内部辅助,不是策略 API。不要把 quantcraft.process.ohlcv(策略 OHLCV API)与 quantcraft.b2.ohlcv(内部数据层)混淆。

横截面辅助函数

quantcraft.cross_sectional 提供向量化的辅助函数,用于一次比较多个标的(numpy):stack_field、latest_return、latest_sma、latest_std、latest_rsi、rank、zscore、demean、winsorize,以及 ColumnarBarArena。

import quantcraft.runtime as rt import quantcraft.cross_sectional as xs def on_bar(bar_index, bar, symbol=None): syms, close = xs.stack_field(rt.qc_ohlcv_by_symbol, "close") momentum = xs.latest_return(close, 20) # per-symbol 20-bar return score = dict(zip(syms, xs.rank(momentum))) # rank in [0, 1]

按所写内容仅适用于前向/批量运行。在回测中,rt.qc_ohlcv_by_symbol 保存着每个标的的完整加载范围,所以那里的“最新”指的是测试的最后一根 K 线——前视。在回测中,请在运行遍历 K 线时从各标的的 bar 收集其收盘价,并把这些数组传给辅助函数。

模块句柄与导入名称

quantcraft.process.runtime 和 quantcraft.fama_french 是模块别名,所以属性访问读取的是实时的会话值:

import quantcraft.process.runtime as rt import quantcraft.fama_french as ff rt.account # this run's PaperAccount rt.chart_indicators # this run's collector ff.qc # this run's Fama-French loader

其他一切都按值重新导出名称,所以 from ... import <name> 绑定的是导入时取得的快照。

对于引擎在每次运行中分配的句柄,引擎会在加载根算法文件之后重新绑定这些名称,所以 from ... import 的形式在那里是安全的——针对它重新绑定的那些名称:

  • 回测 / Debug Test:account、chart_indicators、get_bar、qc_ohlcv、qc_ohlcv_by_symbol、qc_ohlcv_by_tf、qc_fundamentals、qc_fama_french、qc_calendar。
  • **前向运行:**仅 account、qc_fundamentals 和 qc_fama_french——所以对 chart_indicators 和 OHLCV 句柄,在那里请使用 rt.<name>。
# Fine in the root algo file — the engine rebinds these after loading your script from quantcraft.process.runtime import account, qc_fundamentals, qc_fama_french

拆分的辅助模块则不同:它在同一进程中的多次运行之间一直缓存在 sys.modules 中,因此导入的名称会保留首次导入时当前会话的句柄——对下一次运行(前向/批量)来说已经过时。在辅助模块中,请导入模块并使用属性访问:

# helpers/signals.py — always read through the module import quantcraft.process.runtime as rt def record(sym, t, value): rt.chart_indicators.add(...) # live handle for *this* run

from quantcraft.inputs import params 是例外:params 是一个其值每次运行都会变化的实时对象,所以 from 形式在任何地方都安全——参见输入参数。


随附的策略参考(Markdown)

对于逐行的模块行为、回调契约和引擎细节,产品还在 quantcraft-dev 捆绑包下包含了 Markdown(概念上就是“QuantCraft 策略参考”)。典型的目录如下:

文档重点
IMPORTSquantcraft.* 导入路径(包括 quantcraft.cross_sectional)、仍为现有脚本解析的旧 ide.* / quantcraft.backtest.* 路径,以及模块句柄与导入名称
BACKTEST_README回测包的高层概览
BACKTEST_ENGINE引擎编排、配置、回调、结果载荷
BACKTEST_MODULE来自 IDE 的 WebSocket 回测入口
IDE_BACKTEST_RUNNER位于 Python 服务旁边的子进程运行器
RUNTIME运行时全局变量:account、chart_indicators、get_bar / 主周期和附加周期;按会话的句柄和 rt.<name> 访问
INPUTS_MODULE来自运行对话框的 params 连接
RUN_CONFIG_QCS.qcs 运行预设格式及跨对话框映射
ACCOUNT_MODULEPaperAccount 交易 API、佣金/滑点
OHLCV_MODULEQcOhlcv 加载器、回调中的 bar、副时间周期
INDICATOR_SERIES_MODULE图表序列载荷和辅助函数
FUNDAMENTALS_MODULE基本面数据 JSON 结构与 API
FAMA_FRENCH全球 Fama-French 因子 / fama_french.qc / YYYYMM 行字典
CALENDAR_MODULE股息、拆股、财报日期(calendar 回调参数);模拟中的公司行动——用户页面是日历数据
DEBUGGINGDebug Run / Debug Test、断点、调用栈和变量——用户页面是调试
AUTO_TRADING本地前向运行(算法 + 智能体批量)和 New Run 对话框——用户页面是 AutoTrading
QUANT_CLOUD云端运行器上的算法批量前向作业——用户页面是 QuantCloud
AGENTSTrading / Test / Optimization 智能体、AI Builder、模拟 Test 与通过已连接券商的前向/实盘——用户页面是智能体
AI_ASSISTANTIDE 的 AI 聊天、模型提供商、筛选器工具、AI Tools、MCP 服务器——用户页面是 QuantCraft AI
QUANTCRAFT_TOOLS面向 AI 的内置只读市场工具——用户页面是 QuantCraft Tools
SCREENER无代码和 Python 筛选、预设、由筛选器驱动的运行——用户页面是 Screener
POSSIBLE_ERRORS常见错误与修复——用户页面是可能的错误

这些文件面向需要精确名称和契约的策略作者。像 BACKTEST_MODULE(WebSocket 回测入口)和 IDE_BACKTEST_RUNNER(子进程运行器)这样的高级主题包含在捆绑包中供贡献者使用,但不是主要的用户路径。IDE 中的 QuantCraft AI 已预加载这些材料,使回答与已发布的模块保持一致。


QuantCraft 中的其他帮助入口

这些不属于 Documentation 标签页,但属于面向用户的同一个“参考生态”:

  • QuantCraft AI——用自然语言提问;回答可以引用同一个开发语料库。在 AI → API Providers 下连接模型(你自己的密钥,或 QuantCraft Premium/托管选项)。
  • 导入与导出——在磁盘和工作区之间移动 .py(及相关)文件。
  • 测试结果——回测之后的权益图表、指标、交易和 HTML 导出。

搜索技巧

  • 优先使用代码中出现的短词元:on_finish、params、chart_indicator_series、coerce_chart_time、pane_id。
  • 如果没有匹配项,请清空搜索——索引会按部分列出每个主题。
  • 跨主题的想法(例如“基本面数据 + on_bar”)通常需要两篇文章:打开基本面数据了解数据结构,再打开策略生命周期了解何时可用。

文档历史

应用内文档与策略运行时一起维护。当 Python 模块或回测载荷发生变化时,应用内主题和随附的 Markdown 会一同更新,使示例和名称保持同步。策略导入示例全程使用不带后缀的 quantcraft.* 路径书写;较旧的 ide.*_module 和 quantcraft.*_module 路径仅作为阅读现有脚本的辅助而记录。

阅读约 5 分钟建议修改 ↗
参考 — 文档 (1.0 (latest)) | QuantCraft