离线回测

在你自己的数据上离线跑 PineScript

PineForge:PineScript v6 → 原生 C++ → 本地 Docker;本地优先、字节可复现;CSV OHLCV 即插即用。

为什么要离线?

浏览器回测适合灵感验证;当你要把策略交付给资金侧,就需要审计轨迹、CI 门禁、以及两个月前的结果今天仍能比特级对齐。

离线跑批给你浏览器端工具做不到的能力:结果是 byte-reproducible —— 同输入同输出;引擎版本可 pin,成交列表可入库 diff,整条链路 headless 跑进 CI。CSV、二进制、报告全在你侧。

版本钉死;自定义行情(tick 重建、点-in-time 股价、另类序列);CI 拦 regression;策略只是一份 artifact,不被平台绑架。

如果你分享结果只能靠截图 —— 说明你缺的就是这层离线运行时。

怎么跑

三步:首跑 <2 分钟,之后每次 <30s。

第 1 步 —— 拉取运行时。 一个容器镜像。免 pip、免密钥、免注册 —— 转译和回测都在里面跑,全程离线。个人交易免费。

第 2 步 —— 把你的 Pine 转译成 C++。 用 transpile-only 模式跑这个容器,它就在本地把你的 PineScript v6 转成一份完整的 C++ 源文件。运行时不跑 Pine 解释器 —— 引擎直接把它编译成原生机器码。

docker run --rm --network=none \
  -e PINEFORGE_TRANSPILE_ONLY=1 \
  -v "$(pwd)/my_strategy.pine":/in/strategy.pine:ro \
  ghcr.io/pineforge-4pass/pineforge-engine:latest > strategy.cpp

第 3 步 —— 回测。 把你的 OHLCV CSV 和生成的 C++ 一起挂进去,运行这个容器。引擎读数据文件,逐根 K 线执行策略,把 JSON 报告写到 stdout。

docker run --rm --network=none \
  -v "$(pwd)/strategy.cpp":/in/strategy.cpp:ro \
  -v "$(pwd)/ohlcv.csv":/in/ohlcv.csv:ro \
  ghcr.io/pineforge-4pass/pineforge-engine:latest > report.json

JSON 含完整成交列表与汇总(净盈亏、回撤、笔数、盈利因子、Sharpe);同主版本号内字段稳定,可脚本解析。

没有 GUI、没有二次登录、没有等图表加载 —— 能跑 Docker,就能批量离线验证。

能喂什么数据

一句话:能序列化成 OHLCV 的都行;我们不绑行情商。

交易所加密资产 REST/WebSocket 抓原始成交 → 聚合成任意周期 CSV → 与实盘相同的 venue + symbol 组合验收。

股票三方数据 Polygon / Norgate / BarChart / Tiingo … 导出时点可比(point-in-time)复权序列;按真实成交与无幸存者偏差的标的池回测。

Tick 重建 有 L2?合成 1s bar 再喂入 —— 引擎不关心 bar 来源。

另类因子 情绪、链上、资金费率、期权偏度… 只要能对齐 K 线索引,自定义列写进 Pine 一起测。

画廊 246 套参考策略:一组对 TV CSV(对齐校验),一组自建 CSV(回归测试)。245/246 达到严格优秀档(对比窗口内 PnL 漂移 ≤ 0.5%)。剩下 1 套是已归档的 TV 侧异常——全部完成深度复盘,全部追溯到 TradingView 状态。零真实引擎 bug。

立即开始