源文件:research/quant_digests/2026-04-18_0431_rsi-breakout-trend-shell.md
README.md + Cypto_Trading_Wilder's SmoothingRSI/rsi_momentum_backtest_v5.py + PRODUCTION_REPORT_V5.md + monte_carlo_bootstrap_v6.py)+ Binance USDⓈ-M 15m/5m public-data portability probeclose > EMA200、ADX > 20、volume > SMA20,再等 RSI(14) 向上穿越 65(bull regime 下放宽到 60)才做多;赌的是“趋势已经立住后,动量二次起跑还会延续一段”5m/15m transfer verdict 明确偏负)先回答 base alpha:说得清楚,就是“趋势中的 RSI breakout continuation”。 这不是 filter 伪装,也不是又一篇 RSI oversold 反弹。更准确地说,这个 repo 值得 intake 的地方是:
> 它把“动量已经起来了,再追第二脚”这件事,封成了一个带趋势过滤、ATR 风控、动态仓位和成本假设的完整策略壳。
主来源:
FarisZnf2026-03-30,updated 2026-03-30,stars 1关键源码里最重要的几条规则很清楚:
RSI(14) 上穿 65 才入场;close > EMA200 且 ADX > 25,阈值放宽到 60;close > EMA200、ADX > 20、volume > volume_SMA20;4x ATR trailing stop,另有 RSI < 30 的 emergency exit;risk_per_trade / stop_distance 动态缩放,最多 3x 名义杠杆;翻成人话:这份 repo 不是在赌“RSI 高了就一定继续涨”,而是在赌:
> 只有当长趋势、趋势强度、成交量三件事都先对了,RSI 的向上突破才更像 continuation 的确认。
trend filter + strength filter + volume filter + RSI breakout 这套完整 trend shell:先把坏环境剔掉,再追第二段动量。15m/5m 数据做 portability probe,看这条 4h 壳压到我们关心的短周期后,还剩多少 gross / net edge。15m/5m transfer 明显不过成本。 更像“4h shell 可借鉴,短周期不能直接照抄”。它的入场不是 RSI < 30 抄底,而是:
close > EMA200;ADX > 20;volume > SMA20;RSI 向上穿越 65。所以它的 base alpha 很明确: 趋势已经建立后,RSI breakout 更像 continuation,而不是噪音。
源码里有个很 desk-friendly 的小分支:
close > EMA200 且 ADX > 25,RSI entry threshold 会从 65 降到 60。这其实是在表达一句很朴素的人话: 强牛段里,别等到动量强到夸张才上车。
这不是新奇理论,但它是一个可直接拆出来单测的旁支:
fixed thresholdregime-adaptive thresholdrepo 不是只给一个 entry 条件,而是把完整 shell 几乎都写了:
ATR 决定 stop distance;risk_per_trade 决定 position size;max_position_pct 限制名义杠杆;所以它符合当前优先级里更高的一档: 不是只给 raw alpha 句子,而是给了能直接复刻的完整策略骨架。
README 把 exit 写成:
4x ATR trailing stop10x ATR take profitRSI < 30 emergency exit但在可见 v5 执行主循环里,tp_hit 被初始化为 False,我没有看到它在出场分派前被真正置成 True。实际跑出来的 portability probe 也几乎全是:
trailing_stoptrend_exhaustionrsi_emergency也就是说,这份 repo 的真实可见壳,当前更像: > RSI breakout 入场 + ATR trail / EMA20 失守退出
这不是坏事,但它提醒我们:不能只抄 README,要抄实际代码。
15m/5m 后还站不站得住我没有硬复刻 repo 的 4h 2024~2026 全样本,而是做了一个更贴近当前 desk 的短周期 transfer:
15m:近约 120d,ETHUSDT / BNBUSDT / SOLUSDT5m:近约 45d,ETHUSDTEMA200 + ADX + volume + RSI breakout 逻辑4x ATR trail / EMA20 trend exhaustion / RSI<30 emergencyfee 20bps + slippage 10bps,再加简化 funding proxy#### 15m / ETHUSDT
64 笔+15.79 bps/笔-30.08 bps/笔37.5%25.0%27 bars(约 6.75h)#### 15m / BNBUSDT
58 笔+3.53 bps/笔-45.38 bps/笔-23.43%#### 15m / SOLUSDT
65 笔+14.29 bps/笔-32.41 bps/笔-20.26%#### 5m / ETHUSDT
70 笔+6.84 bps/笔-41.26 bps/笔88.6% 出场都来自 trailing stopETH/SOL 15m 的 gross mean 还在正区,说明“趋势里的 RSI breakout continuation”不是完全瞎编。
一旦按 repo 自己宣称的 production-ish friction 去扣,15m/5m 都明显转负。
5m 比 15m 更差。这说明这条壳不是天然适合更快频率;压得越短,越容易被噪音和摩擦吃掉。
这也解释了为什么 gross 胜率不高:它在赌少数趋势尾段能跑很长,而不是高胜率小止盈。
这轮选它,不是因为 repo 本身特别强,而是因为它补了当前 intake 里一个值得保留的方向:
这比只给一个“RSI breakout 可能有用”的想法更值钱。
15m/5m。这个负结论本身就很值钱,因为能防止我们把慢频壳误搬到短周期。
regime-adaptive RSI thresholdEMA200 + ADX + volume 到底谁在贡献 edge趋势已建立时,RSI breakout 继续沿原方向推进close > EMA200 且 ADX > 20/25volume > SMA20,bull regime 下阈值从 65 放宽到 604x ATR trailing stop、动态仓位、最大 3x 名义杠杆、fee/slippage/funding cost proxy对 short-cycle crypto 来说,慢频 trend shell 直接压到 15m/5m 往往太薄;但其中某些组件——尤其 regime-adaptive RSI threshold——可能仍有局部价值。
不要整壳继续硬跑,先拆成 ablation:
EMA200 + RSI breakout 仅保留两件事;ADX > 20;volume > SMA20;fixed RSI65 vs bull regime 下 RSI60。先回答 edge 到底来自 EMA200、ADX、volume、还是 adaptive threshold。
比如 4 / 8 / 12 bars time-box,对比 trail exit,确认是不是 exit 过慢把 edge 吃掉。
当前 verdict 是 taker-ish friction 下明显不活;若 maker-first 仍不活,就该直接降级。
本轮 gross 最差的是 BNB,没必要在弱腿上继续烧时间。
例如让 EMA200 + ADX + volume 去服务别的 breakout / pullback raw alpha,而不是坚持把 RSI breakout 本体当主策略。
production-grade 主要来自作者自述与代码结构,不是同行评审证据。4h,而我们 desk 的默认目标是 5m / 15m;本轮 negative transfer 其实不意外。这篇东西属于 raw alpha,而且可独立复现、也能落成完整策略壳。但对当前 short-cycle desk,更老实的结论是:
> 完整壳值得学习,短周期直译不值得照抄。
如果要把它放进当前研究池,我会把它标成:
research/quant_digests/2026-04-18_0431_rsi-breakout-trend-shell.mdreports/artifacts/quant_digests/2026-04-18_rsi_momentum_breakout_probe.pyreports/artifacts/quant_digests/2026-04-18_rsi_momentum_breakout_probe_summary.json15m/5m, ETHUSDT/BNBUSDT/SOLUSDT)