交易课堂

ETHUSDT 1H:表现最佳的RSI设置能否经受样本外检验?

我们在53,933根ETHUSDT小时K线上测试了25种RSI回落设置。样本内表现最佳的设置在分割点之前平均每笔交易+1.17%,之后为-0.32%,在25个设置中排名第14位。

ETHUSDT.P 1H图表:RSI<20事件与Pullwave指标信号
ETHUSDT.P 1H,2026-10-01至2026-10-27(UTC)。蓝点:所测试规则的事件。金色箭头:Pullwave指标信号(与我们TradingView脚本规则相同)。图表:TradingView Lightweight Charts。
市场
ETHUSDT永续合约
时间框架
1H
数据
2020年9月 – 2026年10月
样本
25个样本

本文译自英文原文,如有出入,以英文原文为准。 查看英文原文

每一次回测都会产生一个赢家。你测试一组设置,按平均收益率排序表格,总有一行名列前茅。令人不安的问题是,这一行到底说明了什么:你是发现了市场的真实行为,还是只是找到了恰好拟合了所测试样本中噪声的那个设置?

今天我们用一个针对ETHUSDT的具体实验来回答这个问题。我们采用了一个非常简单的RSI回落规则,在数据的前半部分尝试了25种变体,按照大多数人会采用的方式挑选出赢家,然后检查这个同样的赢家在之后的数据上表现如何。上方图表显示了小时K线,下方是RSI(14)窗格,蓝点标出了触发条件最严格版本的触发位置。

回测陷阱的衡量方法:过拟合与样本外检验

过拟合是指一条规则被过度调校以紧密贴合某一段历史,以至于它描述的是那段历史而不是市场本身。这不是编程错误,也不会自行显露出来。你尝试的设置越多,其中某个设置纯粹因为运气而看起来极为出色的可能性就越大,尤其是当其背后的交易数量较少时。

标准的防范方法是样本外分割。你在某个日期将数据切开,只在较早的部分(样本内)上进行优化,然后在不再触碰的较后部分(样本外)上评估所选设置。常见的分割比例是60%样本内、40%样本外,这也是我们在此采用的方式。原理上的判读很简单:如果设置在分割后仍保持大致相同的特征,结果就经得起检验;如果它崩溃了,那么之前的数字大体上只是在拟合。

两个辅助衡量指标有帮助。第一个是样本内赢家在样本外表格中的排名——真正的优势应该仍然接近顶部,而不是被埋没在中间。第二个是每一半数据中盈利设置所占的比例。如果一组设置中有四分之三在分割前有效,而分割后几乎没有一个有效,那么这组设置描述的是过去的某种市场状态,而不是持久的模式。交易成本同样重要,因为一条在扣除手续费之前只是勉强获胜的规则,一旦你为往返交易计入成本,它就不再获胜了。

测试方法

我们使用了币安USDⓈ-M永续合约ETHUSDT在1H时间框架上的K线,时间跨度为2020年9月至2026年10月,共53,933根K线,所有时间戳均为UTC。该规则刻意保持简单:当RSI(14)向下穿越X时,在收盘价买入,持有H根K线后卖出。我们在网格中测试了25种设置,X分别为20、25、30、35、40,H分别为6、12、24、48、96根K线,并对每次往返交易收取0.1%的成本。

每个事件的结果都是从信号K线的收盘价测量到H根K线之后的收盘价,因此持有24根K线恰好对应一天的小时K线。只有当RSI从阈值上方穿越向下时才计入一次穿越,这起到了自然冷却的作用:长时间处于阈值以下只会产生一次事件,而不是每根K线都产生一次。分割日期为2024-05-11,此前的所有数据视为样本内,自该日期起的所有数据视为样本外。

作为基准,我们通常会与任意K线之后的平均变动进行比较;而在这里更有用的参照是每一半数据中全部25种设置的中位数,因为问题不在于某条规则是否能战胜抛硬币式的随机结果,而在于所选规则是否能在其自身的同类设置中保持优势。这些数字是基于历史价格计算得出的,并非实际交易。除规则中说明的0.1%往返交易成本外,未计入任何额外的手续费或滑点,实际成交情况会有所不同。

结果

样本内(2024-05-11之前)与样本外(自2024-05-11起)对比,扣除0.1%往返交易成本后的平均每笔交易

设置 样本内交易次数 样本内平均每笔交易 样本内胜率 样本外交易次数 样本外平均每笔交易 样本外胜率
样本内表现最佳的设置 RSI < 20,持有4天 48 +1.17% 50.0% 38 -0.32% 50.0%
样本外表现最佳的设置(事后回看) RSI < 35,持有4天 209 +1.03% 56.5% 144 +0.15% 53.5%
所有设置的中位数 25个设置 +0.15% -0.24%

基于历史价格计算;并非实际交易。未计入手续费及滑点。

样本内优化器选出的设置是RSI < 20,持有4天:这是网格中最深的阈值,也是持有时间最长的设置之一,在48次样本内事件中平均每笔交易+1.17%。如果你在2024年5月进行了这项研究,这就是你当时会记录下来的那一行。

分割之后,同一个设置在38次事件中平均每笔交易变为-0.32%,在样本外表格中排名第14位(共25个设置)——处于网格的中间位置,而非顶部。两个阶段的胜率均保持在50.0%,这是一个有用的细节:该规则并没有突然开始更频繁地亏损,只是赢家的收益规模不再足以覆盖输家的亏损和成本。

整个网格的数据更为直白。样本内,25个设置中有76.0%产生了正的平均每笔交易收益。样本外,这一比例仅为8.0%。中位数设置从+0.15%变为-0.24%。当一条规则的几乎每种变体在一个时期内都有效,而在下一个时期几乎没有一种有效时,诚实的结论是:起作用的是第一个时期,而不是这条规则本身。

表格的第三行是事后回看检验。样本外表现最佳的设置RSI < 35、持有4天,在样本内同样表现强劲,209笔交易平均+1.03%,但在样本外的144笔交易中平均仅为+0.15%,胜率从56.5%降至53.5%。即便是事后能找到的最佳答案,在计入往返交易成本后也显得单薄。

失效所在

这里没有一个可以指出的单一戏剧性日期,这正是其中的教训所在。失效并非某一笔灾难性的交易,而是一种缓慢、分散的侵蚀。所选设置在2024-05-11之后仍然赢得了一半的交易,却最终落入负值,这正是一种优势存在于波动幅度而非方向上的特征。

最深的阈值也是最脆弱的那个。RSI < 20在数年的小时数据中仅产生了48次样本内事件,因此少数几次异常强劲的反弹就足以将平均值推高到+1.17%,并把这一行推上网格的顶端。如此小的样本无法区分真实的不对称性与一次幸运的序列。阈值更宽松、拥有209次样本内交易的设置,在两个阶段之间的变化要小得多——虽然样本外表现依然较弱,但并未反转符号。事件数量越少,结果看起来越醒目,但也越不可靠。

如何在你的图表上解读

在上方图表中,蓝点标出了近期小时K线窗口内RSI(14)严格向下穿越20的位置,指标窗格位于K线下方。请注意这些标记有多么罕见。如果你正在围绕一个如此有选择性的触发条件构建规则,首先要检查的是该回测实际基于多少事件构建,而不是平均值看起来有多好。

如果你使用优化方法,建议在查看任何结果之前先保留一部分数据,并通过设置在未触碰的那一半数据中的排名来评判它,而不是通过其样本内平均值。像本例中这样,在分割之后跌至网格中间位置的设置,应被视为尚未得到确认。查看相邻设置同样有帮助:如果20表现出色而25却不然,那么这个曲面就是尖锐突兀的,所做的选择很可能只是噪声。最后,从一开始就计入成本。0.1%的往返成本虽小,但恰恰是在此区分中位数设置与持平表现的那条分界线。

Pullwave指标的处理方式

Pullwave是一款仅限邀请使用的TradingView指标,遵循基于价格和成交量的固定规则,不含任何主观判断。它在图表上标出做多和做空入场点、加仓、部分平仓和全部平仓,并可以在标记出现时发送提醒。其规则并未公开,它不会预测未来,也会出现亏损交易。

上方图表中的金色箭头是Pullwave在同一批K线上的标记,取自pullwave.net上的公开记录。将它们与本文测试技术的蓝点进行比较。像本文这样的单一条件触发规则本身是嘈杂的;一套完整的规则还必须回答何时加仓、何时部分获利了结以及何时离场等问题。任何订单均由用户自行下达;该指标仅绘制标记并发送提醒。

关键要点

  • 在ETHUSDT 1H上,样本内表现最佳的设置(RSI < 20,持有4天)在2024-05-11之前平均+1.17%,之后为-0.32%,在样本外排名第14位(共25个)。
  • 盈利设置的占比从样本内的76.0%降至样本外的8.0%,中位数设置从+0.15%变为-0.24%。
  • 小样本会产生最醒目的结果:获胜的那一行依赖于48笔交易,而阈值更宽松、拥有209笔交易的设置则稳定得多。
  • 如果你进行优化,建议提前预留未触碰的数据,并根据设置的样本外排名来评判,而不是根据其样本内平均值。
  • 从第一次测试起就计入成本;0.1%的往返成本足以决定本文中好几行的结果。

图表中的金色箭头是TradingView用Pullwave指标生成的标记。了解Pullwave指标在pullwave.net上的工作方式。

图表由 TradingView Lightweight Charts™ 基于真实交易所K线绘制。 tradingview.com