源文件:research/quant_digests/2026-03-22_2339_janis-breakout-ema-role-gate.md
这轮主看 Janis174756 / Binance-Futures-Trading-Bot (2026) 里一个非常“可快检”的旁支:
breakout() 用 20-bar 前高/前低触发,且固定 SL=0.98*entry, TP=1.02*entry;tripleEMAStochasticRSIATR()(EMA9/21/50 顺序 + RSI 限制)。我没有复刻整套机器人,而是把这两个模块拆成一个 desk 可执行问题: > 在 15m 上,breakout + 固定 ±2% bracket 是否应先过 EMA stack context gate?
EMA9/21/50 更像 breakout 的 上下文过滤层;直接裸跑 breakout + 固定 ±2% 会把很多低质量单带进来。raw 的期望分数只有 0.025,加 EMA gate 后升到 0.053,同时交易频率下降约 31%(更像“少做差单”,不是“靠加仓赚钱”)。判决口径:信号后 24 根(6h)内,先 hit +2% 记 continue,先 hit -2% 记 fail,都没 hit 记 timeout。
1) 总体验证:EMA gate 明显优于 raw breakout
raw: n=3109, continue 22.1% / fail 19.6% / timeout 58.3%, exp_r=0.025, 8.64 笔/天/币ema: n=2138, continue 25.1% / fail 19.8% / timeout 55.1%, exp_r=0.053, 5.94 笔/天/币2) raw 的 long 侧几乎没有优势,说明“上破就追”不够诚实
raw long: exp_r=-0.001(接近 0,略负)raw short: exp_r=0.0513) EMA gate 后,多空两侧都被“净化”,但 short 改善更明显
ema long: exp_r=0.037ema short: exp_r=0.067> 读法:这组结果不支持“EMA 与 breakout 平级双触发”;更支持“先用 EMA stack 做 regime/context,再让 breakout 去做触发”。
如果不先做这一步,后面继续细抠 final-verdict / retest_hold,很多噪音其实来自“前门放人太松”。
下一步建议直接做一个 2×2 小矩阵(不要先上复杂模型):
raw breakout(20)breakout(20) + EMA stack gate±2%(仓库原味)±k*ATR(例如 k=1.5/2.0)在 BTC/ETH/SOL 的 5m/15m 同时比较四个指标:
exp_r(first-hit 期望分数)timeout_ratetrades/daypost-cost proxy(至少先扣单边手续费 + 1 tick 滑点)升级条件(进入 paper/shadow):B 在 5m/15m 都能维持 exp_r 提升,且交易数保留率 > 60%。
timeout 占比仍高(>55%),说明只靠 breakout+EMA 还不够,需要后续 follow-up/failure 判决层接力;breakout()(20-bar 高低 + 固定 ±2%)与 tripleEMAStochasticRSIATR()(EMA9/21/50 + RSI)scripts/run_janis_breakout_ema_role_proxy.pyreports/artifacts/quant_digests/2026-03-22_janis_breakout_ema_role/events.csvreports/artifacts/quant_digests/2026-03-22_janis_breakout_ema_role/summary_by_variant.csvreports/artifacts/quant_digests/2026-03-22_janis_breakout_ema_role/summary_by_variant_side.csvreports/artifacts/quant_digests/2026-03-22_janis_breakout_ema_role/summary.json