最后更新:2026 年 5 月。本文描述的所有指标均为 fomoed 沙盒引擎中真实存在的字段。回测结果仅供学习,历史表现不代表未来收益。
"感觉策略有效"和"确切知道策略有效"之间,差的就是一个数字:它在过去几年真实 K 线上的表现,包括那些你当时没有交易的市场状态。这就是回测。认认真真地做,它是一个主观交易者在自动化之前能做的最有用的功课;敷衍地做,它就变成你写给自己的一份推销话术——参数被你调到曲线最漂亮为止,然后实盘真金白银地告诉你哪些东西你忘了考虑。
传统的回测路径是这样的:写 Python、从交易所 API 拉历史 OHLCV、自己算指标、模拟滑点、考虑手续费、处理部分成交、写分析逻辑、画资金曲线。多数交易员卡在第一步就放弃了。坚持到第七步的少数人,最后做出来的回测引擎和他们将来实盘部署的平台总会有一些微妙差异——而这个差距会在实盘里把他们吃掉。
fomoed 沙盒把整套技术栈都省了。选交易对、选策略模板、选时间范围,点 Run。每个支持的交易对都有三年历史 K 线、按交易所差异化的真实手续费假设、跟实盘机器人完全相同的引擎代码路径,一分钟内出结果。不用 Python、不用 API key、不用 Jupyter、不用电子表格。本文从头到尾走完这套流程——更重要的是,会讲清楚那五个能把漂亮回测变成实盘亏损的坑。
沙盒里能回测什么
沙盒引擎目前支持四类策略,每类都有自己的配置面板:
基于指标的自定义策略
RSI 均值回归、EMA 交叉、MACD 共振、Bollinger 通道收敛、VWAP 回踩、多指标组合。引擎暴露了十二个指标(RSI、EMA、SMA、MACD、ATR、ROC、Bollinger、VWAP、Williams %R、Stochastic、OBV、ADX),任意组合都可以作为入场触发或过滤条件。引擎内部处理动态参数——带宽比较、回看窗口、"上穿/下穿"判断——你不需要自己写公式。
DCA 与 grid 机器人
定投(DCA)可选加仓阶梯、按整体仓位止盈、可配置触发条件。Grid 机器人在指定区间内布满买卖单,每格独立止盈。两者都跑在和实盘版本相同的引擎里——沙盒不是另一套代码路径,而是同一个 trader.execute() 循环,只是把实时行情换成了历史 K 线。
Smart Money Concepts(SMC)
CHoCH(性质转变)、BoS(结构破位)、order block(订单块)、fair value gap(公允价值缺口)、Fibonacci 回撤(包括 0.618-0.79 的 OTE 区间)、liquidity sweep(流动性扫荡)。七个基础原语全部由算法自动识别——沙盒展示的关键点位,和实盘引擎实时识别到的完全一致。数学细节见我们的 SMC 主题指南。
AI 交易智能体 策略
只要你能用两到四句大白话描述策略,fomoed 的 AI 交易代理就能生成一段在同一沙盒里运行的 Python 脚本。脚本可以组合调用指标和 SMC 原语,但不能自行发明新的。适合"RSI<30 且价格>200EMA 时买入,+3% 或 RSI>70 时离场"这种描述——写一次,AI 帮你接好线。架构细节见 AI 交易智能体 主题文章。
如何 60 秒内跑完一次回测
整个流程一共六步点击,其中两步是可选的。括号里是一个第一次用的人实际花费的秒数。
- 打开沙盒(5 秒)。还没注册就免费注册——邮箱或钱包,无 KYC、不绑卡。点击仪表盘侧边栏的 Sandbox。
- 选市场(10 秒)。交易所(Hyperliquid / Binance / Bybit / OKX / Decibel / AsterDex / GRVT / Extended / StandX)、交易对(例如 BTC/USDC:USDC)、周期(1m / 5m / 15m / 30m / 1h / 4h)。
- 选日期区间(5 秒)。默认是最近 30 天。点日期选择器可以扩展,每个支持的交易对最多覆盖三年历史。
- 配置策略(20 秒)。挑一个预设(RSI / Custom / DCA / Grid / SMC / AI 交易智能体)或者手动设指标参数。沙盒 UI 与实盘机器人配置向导完全一致——你会配实盘就会配回测。
- 点 Run(15-90 秒)。多数回测在 10-30 秒完成;首次跑长周期 5 分钟数据最多需要 90 秒(后续命中缓存)。
- 读结果(接下来的 10 分钟——见下文)。
如何老实地解读结果
有六个指标值得看。前三个是"门面",后三个才是"实质"。六个都要看——绝不能只凭一个就下结论。
胜率
盈亏比(Profit Factor)
最大回撤
Sharpe 比率
资金曲线
交易明细
5 个回测陷阱(以及沙盒是怎么处理的)
1. 对单一行情过拟合
你把 RSI 下限从 35 调到 32,再调到 28,直到资金曲线漂亮得不像话。恭喜——你找到了正好适用于那段历史价格的参数。换个时间区间再跑,收益消失。怎么避免:同一套参数至少在两个不重叠的区间(比如 2023-2024 和 2024-2025)上分别测试。沙盒让这件事变得很简单——复制配置、改时间范围、对比结果。如果指标崩了,你就是过拟合了。
2. 假装手续费不存在
一个每天触发 30 次、每次成交收 0.1% 的剥头皮策略,光手续费每天就烧掉 6%。沙盒对每一笔成交按各交易所真实的 taker 费率扣费(Hyperliquid 0.045%,Binance 0.05%,Bybit 0.055% 等)。如果你测的是高频策略,但结果没算手续费,那你盯着看的就是虚构的数字。沙盒里的盈亏比和净 PnL 都是扣费后的。验证方法:看交易明细;每笔交易上手续费应该作为小幅消耗出现在每个入场/出场上。
3. 假设瞬时成交
实盘里,你的订单不会精确以你想要的价格成交——会有滑点,尤其是大单或冷门交易对。简陋的回测会以下一根 K 线的开盘价成交,这个假设太乐观。沙盒采用保守的成交模型:市价单按当前 K 线开盘价加上可配置的滑点容忍度(默认 0.05%)成交;止盈在 K 线最高价触及止盈价时成交(或在收盘价成交,取决于"touch vs close"开关);止损在盘中触发时按 SL 价成交。验证方法:把滑点容忍度调紧再跑一次;如果结果直接崩,说明你的策略依赖完美成交。
4. 未来函数(look-ahead bias)
这个最阴险。如果你的策略用当前这根 K 线的收盘价来决定是否进入这同一根 K 线——你就是在作弊,实时情况下决策做出来的时候 K 线根本还没收盘。沙盒强制因果性:在第 N 根 K 线上,引擎只能看到第 0 到 N-1 根的 OHLCV。第 N 根开盘时使用的指标值,是从前 N-1 根 K 线计算出来的。如果你描述了一个想读"当前 K 线收盘价"的策略,沙盒会用上一根 K 线的收盘价做替代。验证方法:"价格在这根 K 线收复 EMA"这种描述应该改写成"上一根 K 线收复 EMA"。
5. 对市场状态切换视而不见
加密的趋势在不同的市场阶段长相完全不同——吸筹、拉升、派发、下跌。在拉升阶段印钞的策略,到派发阶段经常大出血。沙盒默认的 3 年窗口至少覆盖一整个周期,包括一次像样的回撤,但你应该明确地把区间切成几段,逐段检查。验证方法:用同一份配置跑三次——2023、2024、2025——独立看每一年的指标。如果整个结果靠 2024 撑起来,那你就是在赌 2024 会重演。
fomoed 的沙盒如何保持"诚实"
沙盒引擎运行的是与实盘机器人完全相同的 Python 代码——不是并行实现。指标计算、信号判定、仓位计算、扣费、TP/SL 成交规则、追踪止损跟踪:全部单一真理来源。当你把一个回测过的策略升级成实盘机器人时,唯一改变的是引擎读的是哪个 K 线流——历史 parquet 还是实时交易所 WS——其余每一个字节的逻辑都完全一样。
这一点很重要,因为大多数现成的回测工具,和你最终部署所用的实盘平台,根本是两套代码路径。它们用一些"差不多就行"的假设来模拟——而这些假设的细微差别,在真实成交介入后会悄悄吃掉你的优势。沙盒从设计上就消除了这个差距。
引擎还公开了它的结果数据结构:指标(胜率、盈亏比、最大回撤、Sharpe、毛/净 PnL、平均盈利/亏损、平均持仓时间)、带原因标注的完整交易明细、作为时间序列的资金曲线。没有什么隐藏的"综合评分"字段把所有东西揉成一个被调得很好看的数字——每一项指标都可以从交易明细里独立核对。
常见问题
一次回测要跑多久?
一年以内的区间,多数回测 10-30 秒完成。多年区间的 5 分钟周期回测首次最多 90 秒——之后 OHLCV 缓存命中,重跑快 5-10 倍。
有多少历史数据?
每个支持的交易对、六个周期(1m、5m、15m、30m、1h、4h)各三年 OHLCV。缓存通过 cron 每晚刷新;如果你回测的是刚上线的或者历史数据稀疏的交易对,引擎会在首次运行时用 CCXT 实时补齐缺口并缓存供后续使用。
结果是确定性的吗?
是的——相同配置 + 相同时间区间 = 相同结果。引擎里没有隐藏的随机性;连滑点也是按 K 线的开/高/低/收价确定性应用的。这意味着你可以把两份配置在同一区间上苹果对苹果地比较。
能导出交易明细吗?
可以——每次回测结果都附带可下载的 CSV,包含每一笔交易(入场/出场时间戳和价格、仓位大小、手续费、盈亏、离场原因)。如果你想拿到电子表格或 pandas notebook 里做自己的分析,这就很有用。
回测有没有模拟资金费率?
对永续合约,有——引擎会在持仓期间每个资金窗口应用实际的 8 小时资金费率。资金费率从交易所历史数据中拉取;在少数情况下数据缺失时,引擎采用保守的零资金费率假设。
止盈的"touch"和"close"有什么区别?
Touch 意味着只要 K 线最高价在盘中触及止盈价,TP 就成交。Close 意味着只有 K 线收盘价 ≥ 止盈价时才成交。Touch 更乐观(对应快速行情中市价单的行为);close 更保守(对应限价单行为,或盘中流动性稀薄的情况)。沙盒允许逐笔 TP 单独配置。
一个胜率 90% 的回测可信吗?
不可信。单看胜率几乎永远不是正确的最大化目标——要结合盈亏比、最大回撤、资金曲线一起看。胜率 90% 配上 0.7 的盈亏比,意味着你赢得小、输得大,慢慢就把账户磨没了。胜率 45% 配上 2.5 的盈亏比,说明你赢的比输的多得多——通常才是更好的策略。


