独立市场研究
先看研究,过滤噪声 · 先看风险,再看收益
研究指南 · 外汇与加密资产

交易策略如何回测:避开过度拟合与成本陷阱

漂亮的净值曲线可能来自好想法,也可能来自回测漏洞。我们沿着每笔交易追踪:信号何时才可获得,订单何时提交,又能否以假定价格成交。

约12分钟2026年9月28日发布计算已更新 2026年10月1日
核心问题是:策略在真实可交易的条件下能否成立?回测是历史模拟,并非真实账户对账单。查看收益率之前,先记录规则、各时点可用的信息、交易成本以及订单可能无法成交的情况。
从这里开始

一笔交易中的 +1R 到底是什么?

R 是扣除交易费用前预先计划承受的价格风险单位。如果所选仓位按距离10点的计划止损价成交时会产生$50价格亏损,那么1R=$50。费用前盈利$75是+1.5R;价格亏损$50是−1R。这个单位有助于比较仓位大小不同的交易。

假设在一根信号K线收盘后,以1.1000买入EUR/USD。账户$5,000,计划承担$50价格风险(费用前占账户1%);止损1.0990,距离10点;所选仓位每点价值$5。目标1.1015距离15点。假设进出场合计的点差、手续费和滑点为1点($5)。下一根K线的成交与这些价格均为假设,不是观察到的真实报价。

同一规则,两种可能的离场
离场价格变动费用前扣除$5费用后
目标1.1015+15点+$75 / +1.5R+$70 / +1.4R
止损1.0990−10点−$50 / −1R−$55 / −1.1R

若先出现一笔盈利再出现一笔亏损,合计为+$15,即+0.3R。即使在计划的止损位离场,计费后的亏损也为$55(−1.1R);跳空或更差的成交可能进一步扩大亏损。这只是两种教学情景,不是实际发生的交易记录。

代入自己的数字

外汇请将止损距离、价格变动与往返费用全部以点输入;加密资产可将三者全部改用百分点。单位必须一致。对仓位有利的变动填正数,不利的填负数。现金风险应填费用前计划值。

加密资产示例:止损距离2%,有利的价格变动+3%,往返成本0.2%,则(+3 − 0.2) ÷ 2 = +1.4R。

计划风险 / 账户1%
费用前结果+1.5R
费用后结果+1.4R
净损益 · USD+$70

这只是算术练习,不会替您确定外汇经纪商账户的仓位手数。请自行核实每点价值或实际敞口,以及点差、手续费和滑点。止损可能在更差的价格成交,真实亏损可能超过计划的R。

01 / 09

从能够被证伪的问题出发

“图表看起来强就买入”无法重复检验。请明确市场、交易时间、K线周期、信号、进出场、仓位大小以及不交易的条件。例如,15分钟K线收盘后才确认信号,在下一根K线提交订单。若价格跳过预定入场位,事先规定如何处理。

查看收益报告之前,记下想法和市场逻辑。开盘流动性变化可以成为可检验的假设,不能当作盈利保证。跨年份检查结果。看到亏损后改动止损线,就产生了新策略;旧版本与修改理由都应保留。

02 / 09

先冻结规则,再统计胜率

记录交易品种、准确日期、时区与夏令时、缺失数据、仓位和同时持仓上限、止损与止盈的优先顺序,以及周末和交易所故障如何处理。选取完全相同日期的简单基准,比如持有BTC或保持现金。若测试了十组参数,应如实披露。

保存原始数据、规则版本和冻结日期。不能悄悄剔除让曲线难看的年份、资产或交易。按照事先规定的条件排除损坏的报价可以接受;看到利润后才发明排除理由属于选择偏差。别人应能连同亏损交易一起复核。

03 / 09

让每条信息回到真实时间

已经完成的日线收盘可以决定次日订单,不能让订单在同一根K线的更早位置成交。经济新闻有发布时间,后来修订的数值可能不同于首发数据。依靠15分钟K线收盘计算的信号,不能用这根K线此前的最低价作为入场价。

加密资产应确定UTC等时钟与周末规则;外汇需要处理交易时段和夏令时变化。缺失报价、代码更改与退市资产同样重要。只挑选今天依然存在的币种来模拟过去,等于把未来的知识塞进历史。

04 / 09

模拟真实订单,而非图上的理想点

规定订单类型、提交时间和成交条件。止损单可能滑过触发价;价格短暂触及限价也不保证排队中的订单成交。一根OHLC K线内若既有止损又有止盈,没有更细的数据就无法确定先后。使用谨慎假设,或标明这笔交易有歧义。

仅含bid报价的外汇数据不能还原历史ask,也不能证明实际支付的点差。交易所K线的开盘价不代表全部仓位都能在该价成交。公开假设,能取得账单时予以核对,并允许订单未成交。波动剧烈时总能完美成交的模型尤其值得怀疑。

05 / 09

用成本检验看似存在的优势

这是我们编写的假设算例,不是任何真实市场的历史结果。100笔交易中,52笔在费用前各赚+1R,48笔各亏−1R:总计52R−48R=+4R,即每笔+0.04R。如果点差、手续费和滑点合计每笔往返0.05R,净结果就变成4R−100×0.05R=−1R。

教学计算 · 假设有100笔交易
每笔往返成本扣除成本后的结果
0R+4R
0.02R+2R
0.05R−1R
0.10R−6R

纯算术例子,不是历史业绩。52笔各赚+1R,48笔各亏−1R;R表示扣除交易成本前每笔计划承担的风险。

胜率依旧是52%,但扣费后的期望值已转负。每笔成本0.04R时恰好盈亏平衡;表格列出其他成本情景。应把成本换算成计划风险R的比例,并分别测试平静与紧张时段。1个点的成本在真实成交记录证实前只是假设。

06 / 09

留下策略从未见过的数据

按时间划分开发和评估。用较早阶段建立并修改规则,在测量较晚、尚未触碰的数据前冻结。反复偷看保留样本后再调参数,保留样本也就变成训练数据。滚动优化可以使用,但更新日程、训练窗口和可选参数必须事先规定。

保留样本表现好提供证据,却不是保证。检查多个市场环境、交易时段和品种:一个异常月份可能主导多年的曲线。历史回测后再做带日期的模拟交易记录,将预估成交和成本与实际观察逐项比较。

07 / 09

阅读完整成绩单,不只看最终收益

报告样本日期、交易数、胜率、以R衡量的平均盈亏、费用前后期望值、最大回撤、持仓时间、换手和适当的对照基准。按年份或市场环境拆分,并做成本敏感性分析。只给终值、不谈仓位和回撤,会掩盖为收益承受的风险。

小样本需要克制。围绕新闻的30笔交易可能揭示缺陷,却很难证明未来有稳定优势。检查是否几笔交易贡献几乎全部盈利,损失是否扎堆,以及相近参数是否表现类似。只有唯一“神奇参数”有效时,应怀疑过度拟合。

08 / 09

本站三项研究及其限制

EUR/USD伦敦突破研究使用15分钟bid K线,模拟了550笔交易并假设往返成本1点;下一根K线进场规则可核查,但真实成交没有被观察到。围绕32个非农公布日的研究,在假设成本1.2点之后,EUR/USD的16次进场合计−1.763R,USD/JPY的22次进场合计−2.236R。

每月BTC/ETH轮动使用已完成收盘的过去90日收益,在下一次开盘换仓,并计入模型手续费。样本收益为+2,098.14%,但最大回撤达−71.48%;大部分增长发生在2022年以前。这些是特定规则和时期的历史结果,不是未来预测。三篇站内研究列明日期、数据和局限。

09 / 09

提前写明放弃策略的条件

使用资金前,设定否决线:合理提高成本后净期望为负、未使用样本变差、回撤超出承受范围、依赖某一年或单一资产,或者模型成交与观察到的成交差异太大。被否决的版本也要存档,避免最后只留下胜者的故事。

有价值的回测也可能告诉您不要交易。若证据有分歧,就缩小结论:准确说明测试的市场与日期、影响结果的假设,以及什么新数据会改变判断。能够解释和重新审视的决定,才是研究的成果。

从这里开始

按六个步骤重复验证

记录每个信号,包括您想忘掉的亏损交易:

  1. 01固定一套规则,写清品种、时区、测试日期、信号K线和放弃交易的条件。
  2. 02分别记录信号已知的时间与之后提交订单的时间;不得以信号出现前的价格成交。
  3. 03记录订单类型、入场、计划止损和离场,未成交的订单也要保留。
  4. 04分别记录点差、手续费、滑点,并把往返总费用换算为与止损距离相同的单位。
  5. 05逐笔计算:费用前R=价格变动÷止损距离;费用后R=(价格变动−费用)÷止损距离。
  6. 06查看较晚的保留样本前先冻结规则,再与同期的简单基准比较净收益和最大回撤。

如何作出判断

把亮眼的回测当成待验证的假设。公开准确规则,保留选定策略时未使用的数据,计入符合市场条件的成本,并与简单基准比较。若一个合理的小改动就抹去优势,稳健性尚未得到证明。

风险提示

交易与投资可能造成损失。历史和假设结果不保证未来回报。滑点、跳空、杠杆、流动性和税费都可能使真实业绩大幅偏离模拟。本文仅供学习,不构成针对个人的投资建议。

两份方法原始资料

本文算例由我们自行计算。下列两份官方文档分别解释未使用样本、生存者偏差,以及手续费、滑点与成交模拟。它们不证明假设策略能够盈利。