源文件:research/quant_digests/2026-03-20_1449_interim-wick-atr-stop-anchor.md
这轮主看一个很新的仓库 TheVision333/trading-bot(初始提交 2026-02-23)。真正值得偷的不是它整套 breakout/retest 流程,而是 strategy/signals.py 里把初始止损拆成 3 种锚法:
sl_atr:entry ± 1.5 * ATRsl_candle_pct:挂在最近一根反向颜色 K 线的影线外,再给固定 0.2% buffersl_candle_atr:同样挂在最近反向 K 线影线外,但 buffer 改成 0.25 * ATR翻成人话:作者在提醒你,止损不一定要围着入场价画圆;也可以挂在“最近那次真正反向对抗过趋势的位置”外面。
entry ± 1.5 ATR 往往太像“围着入场点拍脑袋”;把 stop 挂到最近反向 K 线影线外,更像尊重结构噪声的初始风险锚。BTC/ETH/SOL 三条基线信号做 8-bar 代理快检,比较不同 stop 锚法的距离与早停率。口径:BTC/ETH/SOL、三条 baseline(breakout_short / fib_retest_long / ema_psar_long)共 198 笔信号,next-bar open 入场,观察入场后 8 bars 内是否先被 stop 打掉。
entry ± 1.5 ATR:stop 中位距离 0.66%,8-bar stop-hit = 52.0%反向影线 ± 0.25 ATR:中位距离 0.95%,8-bar stop-hit = 31.8%反向影线 ± 0.2%:中位距离 1.01%,8-bar stop-hit = 26.8%8-bar stop-hit = 45.9%说明 short follow-up 很容易被“入场附近的小反抽”打掉;结构锚 stop 更像是在防噪声,而不是单纯放宽风险。
stopDistancePct > 1.5% 的占比:纯 ATR 3.5%,反向影线 ± 0.25 ATR 24.7%,反向影线 ± 0.2% 25.8%。1.5% 距离上限,反向影线 ± 0.25 ATR 仍保留 149/198 笔,8-bar stop-hit 还能压到 38.9%;纯 ATR 在同口径下仍有 52.9%。直接做一个 3×2 风险锚 A/B:
ATR-only = entry ± 1.5 ATRwick+ATR = 最近反向 K 线影线 ± 0.25 ATRwick+pct = 最近反向 K 线影线 ± 0.2%uncappedcap stopDistancePct <= 1.25% / 1.5%(超限则 deny 或 half-size)在 BTC/ETH/SOL 15m、next-bar open、no-overlap、6/10/15 bps per side 下分别接到三条线,只先看四个指标:
post_cost_expectancypremature_stop_rate@4/8 barstrade_count_retentionstopDistancePct distribution最小判决规则:
wick+ATR + distance cap 能在不过度砍交易数的前提下压住 premature_stop_rate,它就应升格为 shared initial risk anchor 候选;breakout_short 尤其容易变宽,所以必须和 stopDistancePct cap 或 size-down 联合测试,不能单独放飞。TheVision333sl_candle_pct、sl_candle_atr、sl_atr 三套 stop 锚法并列实现。reports/artifacts/quant_digests/interim_wick_stop_proxy_rows_2026-03-20.csvreports/artifacts/quant_digests/interim_wick_stop_proxy_summary_2026-03-20.csvreports/artifacts/quant_digests/interim_wick_stop_proxy_setup_summary_2026-03-20.csvreports/artifacts/quant_digests/interim_wick_stop_proxy_asset_summary_2026-03-20.csv