外汇回测:用数据验证你的FX策略
只在脑海里运行得通的外汇策略一文不值。能扛住真实点差、滑点和向前推进式(walk-forward)验证的外汇策略,才是唯一值得投入资金的策略。本指南将介绍能让外汇回测变得真正可信的设置、方法和陷阱。

只在脑海里运行得通的外汇策略一文不值。能扛住真实点差、滑点和向前推进式(walk-forward)验证的外汇策略,才是唯一值得投入资金的策略。本指南将介绍能让外汇回测变得真正可信的设置、方法和陷阱。
外汇回测到底测试什么
外汇回测把你的交易规则应用到历史货币数据上,并报告本来会发生什么:胜率、平均盈利与亏损、回撤、夏普比率、期望值。重点是搞清楚你的优势在统计意义上是否真实存在,在不同市场状态下是否稳健,在计入外汇经纪商实际收取的成本后是否仍可行。
存在两种形式。手动回测通过滚动图表并记录假想交易来完成——对于训练酌情交易者的图形识别有用。自动回测在历史数据上以程序化方式执行规则——更快、可重复,并且是大规模运行向前推进式分析或参数扫描的唯一方法。
能产生诚实结果的设置
垃圾进,垃圾出。在运行任何一次回测之前,有五件事必须搞对。
数据质量与粒度
- 日内策略:具有真实点差动态的分钟或逐笔(tick)数据。
- 波段策略:小时或日线通常足够。
- 如果你希望成交贴近实盘行为,请始终使用买卖盘报价,而不是仅用中间价。
货币对选择
主要货币对(EUR/USD、GBP/USD、USD/JPY、USD/CHF)的点差最窄、流动性最深。交叉盘和异域货币对在非交易时段和新闻前后会扩大。在EUR/USD上有效的回测结果常常在USD/TRY上失败,因为成本结构本质上不同。
点差、滑点、佣金、掉期
| 成本 | 典型假设 | 何时放大 |
|---|---|---|
| 点差 | EUR/USD主要货币对上0.8-1.5点 | 非交易时段、新闻发布 |
| 滑点 | 每笔交易0.2-0.5点 | 高影响事件期间翻倍 |
| 佣金 | 每百万美元交易5-7美元 | 因经纪商而异 |
| 掉期 | 按货币对,隔夜持仓时计入 | 套息交易使其十分重要 |
每一项都要建模。假设零滑点和恒定0.5点差的回测是童话。
时段过滤器
某些策略不应在低流动性窗口(欧洲货币对的亚洲时段)或计划的高影响新闻前后运行。如果你的交易跨越事件,请对点差扩大进行建模。
交易延迟
在信号出现的下一根K线进场,而不是在信号出现的那根K线进场。否则你就是在假设按信号K线收盘价成交,这是前视偏差。
减少虚假信心的方法
在EUR/USD的五年数据上跑一次回测就直接上实盘,这是大多数散户策略在生产环境中夭折的方式。
样本外测试
把历史数据分成样本内(开发)和样本外(验证)。在第一组上构建并调参。锁定规则,在第二组上评估。性能下降幅度应小于三分之一。如果断崖式下跌,那就是过拟合了。
向前推进式分析
在多个样本内/样本外窗口之间轮换。在第1-3年上优化,在第4年上测试。向前滚动:在第2-4年上优化,在第5年上测试。汇总样本外结果。这能识别那些只在事后才有效的策略。
对交易序列的蒙特卡洛
一旦得到交易列表,就多次随机重新排序。原始的资产曲线只是众多路径中的一条。蒙特卡洛会给出路径的分布以及在比如95分位上的真实最坏情形回撤。
前向测试(模拟盘)
比回测慢,但能在当前数据上确认信号、成交和风控按预期运行。在加仓前运行两到四周。
重要的指标
| 指标 | 它告诉你什么 | 健康区间 |
|---|---|---|
| R为单位的期望值 | 以风险单位表示的每笔交易平均利润 | 可行系统在0.2R以上 |
| 盈利因子 | 总利润 / 总亏损 | 一般而言1.5以上为好 |
| 最大回撤 | 最差的峰谷损失 | 取决于承受能力;低于15%常见 |
| 恢复时间 | 多久创出新高 | 以月计,而非以年计 |
| 夏普 / 索提诺 | 按波动率 / 下行风险调整的收益 | 索提诺高于1.0较为稳健 |
| 交易频率 | 每月交易次数 | 与你的时间和耐心匹配 |
胜率40%的系统也可以非常出色,只要盈利平均为2R、亏损平均为1R。仅凭胜率什么也说明不了。
让表观业绩虚高的陷阱
前视偏差。 用当前K线的收盘价来决定一笔在该收盘价成交的入场。请改用下一根K线的开盘价。
数据探查(data snooping)。 在同一份数据上不断调参,直到曲线好看为止。请在你未触碰过的数据上做验证。
幸存者偏差。 在外汇里比股票里没那么致命,但数据源选择很重要。某些历史数据源剔除了你在实盘中本会遇到的劣质tick。
忽视摩擦成本。 没有可变点差、滑点、佣金和掉期的回测看起来比现实更漂亮。
市场状态盲区。 在2017年低波动率中有效的策略可能在2022年失效。按市场状态分段,检查优势是否只集中在某一个窗口里。
过拟合就藏在光鲜的资产曲线里。请偏好那些在样本外和不同市场状态下都站得住脚的简单规则。
一个具体的例子:EUR/USD上的波段策略
| 组成部分 | 规范 |
|---|---|
| 假设 | 在上升趋势内买入回撤具有正期望 |
| 趋势过滤器 | 1H上200周期SMA,价格位于其上方 |
| 入场触发 | RSI 14跌破30后再向上穿越30 |
| 止损 | 入场K线最低点下方1.5 ATR |
| 目标 | 2R |
| 做空逻辑 | 在下行的200 SMA下方镜像处理 |
| 执行 | 信号之后下一根K线的开盘价 |
| 成本 | 可变点差(最小0.8点,中位数1.2),波动事件中翻倍的0.2点滑点,每百万美元7美元佣金 |
| 时段 | 5年的1H EUR/USD,按样本内3 / 样本外2拆分 |
跑一遍。如果盈利因子落在1.6附近,每笔1%风险下的最大回撤保持在7%左右,并且资产曲线逐年稳定,那你就有了一个合理的候选。如果利润来自某个短窗口或在样本外消失,就把它毙掉。
谨慎迭代。加一个时间过滤器(如果伦敦开盘第一小时滑点更糟就跳过),或加一个表示趋势强度的ADX阈值。改动保持小幅,并在样本外重新验证。
手动 vs 自动
手动训练图形识别。对优化入场的酌情交易者有用。速度慢且容易受事后偏差影响(你会记住成功的交易)。
自动则在无情绪下强制执行规则,可扩展到上百种参数组合、向前推进式折叠和资产。平台的表达力比品牌更重要。MetaTrader、Backtrader和现代的零代码平台各有用武之地。选择能缩短你迭代循环的工具。
用Obside在数秒内完成外汇回测
如果你想要自动测试的速度,又不想做工程化工作,Obside超快的回测引擎可以在数秒内运行策略,并通过你的经纪商部署到实盘。用平实的英语向Obside Copilot描述规则——平台会解析、测试并运行它。
端到端工作的示例:
- "在15分钟图上出现RSI看涨背离时买入,止损放在当日最低点,10%处止盈。"
- "如果EUR/USD的RSI上穿70且MACD转为看跌,请通知我。"
- "如果比特币突破150,000且日成交量翻倍,请提醒我。"
- "如果标普500日内下跌10%,请卖出我所有的仓位。"
同一套规则无需重写即可从回测进入实盘。
诚实的考量
回测是模型,不是现实。滑点、延迟和市场冲击常常比假设更糟。外汇市场会随着央行政策变化和流动性在不同时段间迁移而演变。在低利率环境中表现良好的策略,可能在套息成本变化后陷入困境。每季度重新验证。把假设保持得保守一些。
风险管理比任何回测都重要。请定义仓位规模、最大组合热度,以及当实盘表现与回测分布偏离超过1.5个标准差时的停机规则。
准备好用真实数据验证你的FX规则了吗?
挑一个你信任的EUR/USD或GBP/USD配置。按上述工作流跑一遍。如果它能扛住真实成本和样本外检验,就以小仓位部署。Obside Copilot接受平实英语,数秒内返回回测,并通过你的经纪商路由订单,内置风险控制。
创建你的免费Obside账号,今天就把你的第一条FX规则跑起来。
仅为教育内容。不构成投资建议。交易具有风险,包括可能的本金损失。
FAQ
对于4H或日线的波段策略,通常三到五年就足以提供跨越不同市场状态的足够交易。对于日内策略,一到两年的分钟或逐笔数据可以捕捉时段动态和点差行为。如果优势依赖于某个特定的市场状态,数据并非越多越好——请按时段分段并检查一致性。