回测只回答一个问题:这套规则放在历史数据里,大概会发生什么。它不证明未来会赚钱,也不替代模拟盘。
回测、模拟盘、实盘的区别
| 方式 | 用的是什么 | 适合回答 |
|---|---|---|
| 回测 | 历史数据 + 模拟撮合 | 规则在历史上是否成立 |
| 模拟盘 | 持续运行 + 模拟资金 | 规则在真实节奏下是否稳定 |
| 实盘 | 真实资金 + 真实成交 | 是否值得承担真实风险 |
风险顺序
先回测,再模拟盘,最后才考虑实盘。任何一步都不能跳过,也不能用回测收益替代真实风险判断。
提交一次回测
有两条入口:
- 从工作台提交:适合刚改完代码,参数已经填好。
- 在实验室新建:适合复用已有策略版本,或批量跑不同区间。
-
选择策略版本
确认版本是构建通过并且已经发布的版本,不要选到草稿。
-
选择交易对、周期和区间
区间必须落在数据覆盖范围内。第一次先用较短区间,确认流程后再拉长。
-
确认资金、费率和滑点
按真实交易条件设置。费率或滑点填 0,会让结果明显偏乐观。
-
提交并去队列查看
任务会先排队,再运行。状态变化和日志都在实验室里,不需要一直停在工作台。
你应该看到:任务从“排队中”变为“运行中”,最后变为“成功”或“失败”。
队列与日志
- 排队中:资源被其它任务占用,等待调度。
- 运行中:可以看到进度和耗时;长任务需要耐心等待。
- 成功:可以打开报告,查看指标和交易明细。
- 失败:先看日志里的第一条错误,再决定重跑还是修改参数。
- 已取消:主动停止的任务,不应作为正式结果使用。
日志用来判断“为什么失败”,不是用来判断“策略好不好”。策略好坏要看报告和样本外表现。
六张指标卡
报告里优先看这六类指标:
| 指标 | 看什么 | 常见误读 |
|---|---|---|
| 收益 | 区间内的总体回报 | 只看收益,不看回撤和成本 |
| 最大回撤 | 账户从高点到低点的最大跌幅 | 忽略回撤,只比较最终收益 |
| Sharpe | 单位波动换来的回报 | 交易次数太少时,Sharpe 不稳定 |
| 胜率 | 盈利交易占比 | 高胜率不等于高收益,盈亏比同样重要 |
| 交易次数 | 样本量是否足够 | 几十次交易的结论很容易是巧合 |
| 成本 | 手续费与滑点的影响 | 成本被低估,回测会虚高 |
一起看
收益、回撤、Sharpe 和交易次数要一起看。任何一个指标单独看,都可能得出错误结论。
参数扫描与结果对比
参数扫描会用多组参数分别回测,再把结果放在一起比较。它的价值不是找出“最高收益”,而是看参数变化时结果是否稳定。
参数寻优属于批量任务,会排队占用回测资源。提交前需要勾选确认;先跑小范围参数,确认方向后再扩大。
- 参数稍微变化,结果就剧烈变化:说明策略对参数过于敏感。
- 只有某一个参数组合特别好:可能是过拟合。
- 一段参数区间都表现平稳:更值得进一步验证。
对比页可以按收益、回撤、Sharpe 等排序。排序前先确认所有任务的区间、费率和数据版本一致,否则比较没有意义。
报告里的假设与局限
- 滑点:历史回测无法完全复现真实成交,波动越大偏差越明显。
- 手续费:不同市场、不同订单类型费率不同,统一填一个值会失真。
- 数据:缺失、延迟或复权方式不同,都会改变结果。
- 过拟合:在历史上反复调参,容易把噪声当成规律。
- 流动性:小币种或大资金下,回测的成交量假设可能不成立。
常见错误
| 现象 | 可能原因 | 处理 |
|---|---|---|
| 任务失败,提示数据不足 | 区间超出数据覆盖 | 缩短区间或换数据完整的交易对 |
| 报告收益异常高 | 区间太短、成本太低或参数过拟合 | 拉长区间、补成本、做样本外验证 |
| 任务一直排队 | 资源被占用 | 等待、取消低优先级任务或错峰运行 |
| 同一策略结果不同 | 参数、区间或数据版本不一致 | 固定参数和种子后重新对比 |
常见问题
-
回测收益很高,可以直接上模拟盘吗?
不建议。先检查交易次数、最大回撤、成本和参数稳定性,再用样本外区间和模拟盘验证。回测收益不代表未来收益。
-
为什么同一个策略每次回测结果不一样?
先确认参数、区间、费率和数据版本完全一致。若策略包含随机初始化或并发任务,结果也可能有差异;需要固定随机种子并串行复现。
-
回测任务可以取消吗?
可以。在运行中的任务里选择取消,状态会变为已取消。取消不会删除已经生成的部分结果,但不要把它当成成功报告使用。