页面运行预设 (.qcs) · 17 / 29
运行预设 (.qcs)
将运行对话框的设置保存并重新加载为 QuantCraft 工作区文件夹中扩展名为 .qcs 的 JSON 文件。使用它可以在多次会话之间复用标的、时间周期、输入参数和其他选项,而无需重新输入。
在界面中的位置
每个对话框的对话框正文顶部(标题和描述的正下方)都会显示 Load 和 Save:
| 对话框 | 如何打开 |
|---|---|
| Run backtest | QuantCraft IDE → Test → Run backtest |
| Bulk forward new run | AutoTrading 或 QuantCloud → 启动新的 bulk forward 任务 |
| Chart forward test | Trade → 附加 .qcraft.json 算法 → 打开算法参数 |
先决条件
- 桌面应用 — 保存/加载使用原生文件对话框(纯浏览器预览中不可用)。
- 工作区文件夹 — 通过 QuantCraft 的 Files sidebar → Workspace Folder 设置。对话框默认使用该目录。
如果未设置工作区,应用会先提示您选择一个。
文件格式
文件为 UTF-8 JSON。顶层结构:
{
"format": "quantcraft-run-config-v1",
"savedFrom": "backtest",
"savedAt": "2026-06-09T12:00:00.000Z",
"settings": { }
}| 字段 | 含义 |
|---|---|
format | 必须为 quantcraft-run-config-v1。 |
savedFrom | 元数据:backtest、bulk_forward 或 chart_forward(保存该文件的对话框)。 |
savedAt | 文件写入时的 ISO 时间戳。 |
settings | 运行选项的扁平对象(见下表)。所有键均为可选。 |
Save 只写入适用于当前对话框的字段。Load 始终使用目标对话框的规则,并忽略不适用的键。
默认建议的文件名
| 对话框 | 默认名称 |
|---|---|
| Run backtest | backtest-config.qcs |
| Bulk forward | bulk-forward-config.qcs |
| Chart forward test | chart-forward-config.qcs |
保存时您可以选择任何以 .qcs 结尾的名称。
各对话框的设置字段
| 键 | Backtest | Bulk forward | Chart forward |
|---|---|---|---|
symbols、assetType、symbolPaste | 是 | — | — |
symbolSource("manual" / "screener") | 是 | — | — |
screenerSource、screenerPresetId、screenerScriptId、screenerSortColumn、screenerSortDirection、screenerRankDirection、screenerLimit、screenerIntervalDays、screenerIncludeOpenPositions | 是 | 是 | — |
screenerRefreshTime | — | 是 | — |
symbolPaste(bulk:粘贴的股票代码) | — | 是 | — |
startingBalance、startDate、endDate、warmupBars | 是 | — | — |
ohlcvSource | 是 | — | — |
timeframeAlpaca、timeframeB2、minBars | 是 | — | — |
secondaryTimeframes | 是 | 是 | 是 |
includeFundamentals、fundamentalsPickerValues、fundamentalsExtraPaths | 是 | 是* | 是 |
includeFactors | 是 | 是 | 是 |
includeCalendar、applySplits、applyDividends、dividendDatePolicy | 是 | — | — |
inputParams | 是 | 是 | 是 |
optimize、optimizeMode、geneticPopulationSize、geneticGenerations、geneticElitism、geneticCrossoverRate、geneticMutationRate、geneticFitnessMetric、geneticSeed | 是 | — | — |
slPct、slDollars、tpPct、tpDollars、riskPctPerTrade、riskFixedPerTrade | 是† | — | — |
commissionModel、commissionCost、commissionMinTradeCost | 是 | — | — |
slippageModel、slippageVolumeLimit、slippagePriceImpact、slippageSpread | 是 | — | — |
algoId | — | 是 | — |
targetScope、selectedStocks、selectedCrypto | — | 是 | — |
periodMinutes、timeframeUi | — | 是 | — |
tickMode | — | 是 | — |
timerIntervalMs | — | 是 | 是 |
* Bulk 在存在时会保存/应用基本面数据选择器的值;fundamentalsExtraPaths 主要是回测字段。
† 当表单/负载辅助函数中存在时会保存/应用;Run backtest 对话框的界面中可能不显示 SL/TP/风险输入项。
ohlcvSource: 回测使用 "alpaca" 或 "b2"(QuantCraft 价格数据源)。
tickMode: 仅限 bulk — "timer"(定时器周期)或 "tick"(实时 tick 流)。对话框中将其标注为 Execution trigger。
includeFactors: 当为 true 时,运行会附带全球 Fama-French 因子数据。如果您没有 Premium / 免费数据访问权限,将其加载到回测或 bulk forward 对话框时会将其清除(连同 includeFundamentals);chart forward 对话框则按保存的内容应用。策略读取 fama_french.qc;每月的 rows 是一个 YYYYMM 字典 — 参见 Fama-French 因子。
includeCalendar(回测):加载时有同样的 Premium 限制。dividendDatePolicy 为 "best_available"(默认 — 估算的除息日会被入账)、"exact_only" 或 "off"。对话框中没有对应的控件,因此 .qcs 文件是更改它的唯一方式。参见日历数据。
timeframeB2(回测):当您不是 Premium 用户时,加载的值会被限制为日线 / 周线 / 月线。
secondaryTimeframes: 用于 rt.get_bar(Timeframe.X, shift) 的额外 K 线周期列表(例如 ["1Hour", "1D"])。为空时会从保存的文件中省略。加载到 bulk forward 时,与恢复的主时间周期相同的条目会被丢弃;回测和 chart-forward 对话框则保留保存时的列表。参见 OHLCV 与 K 线数据。
佣金 / 滑点键(commissionModel、commissionCost、commissionMinTradeCost、slippageModel、slippageVolumeLimit、slippagePriceImpact、slippageSpread):仅从回测保存。有关模型含义,请参阅账户模型。
inputParams 的结构
以脚本参数名称为键的对象。每个条目:
"LOOKBACK": {
"type": "int",
"value": "20",
"optStep": "5",
"optMax": "40"
}optStep和optMax仅从回测保存(优化网格)。forward 对话框在加载时会去掉它们。- 只有存在于当前加载脚本中的名称才会被应用;文件中的其他名称会被忽略。
有关策略代码中如何发现 params.NAME,请参阅输入参数。
跨对话框加载
您可以将从一个对话框保存的 .qcs 文件加载到另一个对话框中。应用只会应用兼容的字段,并静默跳过其余内容。
| 来源 → 目标 | 传递的内容 |
|---|---|
| Backtest → bulk forward | symbols + assetType → 目标范围及股票/加密货币选择;timeframeAlpaca 或 B2 的 d/w → timeframeUi;secondaryTimeframes;tickMode(如存在);基本面/因子字段;inputParams;timerIntervalMs(如存在) |
| Backtest → chart forward | inputParams、基本面字段、includeFactors、secondaryTimeframes、timerIntervalMs;日期、余额和优化字段会被忽略 |
| Bulk forward → backtest | selectedStocks / selectedCrypto → symbols;timeframeUi → timeframeAlpaca,或当保存的 ohlcvSource(否则为对话框当前价格数据源)为 B2 时使用 B2 的 timeframeB2;基本面 / 因子字段;secondaryTimeframes;选股器字段;inputParams |
| 任意 → 任意 | 未知或不适用的键会被忽略,不会报错 |
时间周期映射
| 来源 | 映射到 |
|---|---|
timeframeUi 的 1D / 1Week | 回测的 timeframeAlpaca,或当数据源为 B2 时映射到 B2 的 timeframeB2 d / w |
回测的 timeframeB2 d / w | Bulk 的 timeframeUi 1D / 1Week |
回测中其他任何 timeframeB2(m 月线、m5、h1、4h 等) | bulk 中没有对应项 — 跨对话框加载时跳过 |
标的和 bulk 目标
- Backtest → bulk:
symbols在可能时被归类到selectedStocks或selectedCrypto;目标范围变为 Selected。 - Bulk → backtest: 已选的股票和加密货币合并到
symbols数组中;assetType从选择中推断。
Bulk forward 编辑模式
编辑已有的 bulk 运行时,Load 仍会应用目标、周期、时间周期、定时器、tick 模式和脚本 params。algoId 不会改变(该运行的算法是固定的)。
相关的工作区产物
| 扩展名 | 用途 |
|---|---|
.py | 策略源文件(工作区镜像) |
.qcraft.json | 用于 Trade / 前向运行的已编译可运行包 |
.qcs | 已保存的运行对话框预设(本页) |

