3 fixe Varianten (spacing 1.0/1.5×ATR, ADX<20/15): OOS-PF 0.87/1.03/0.94. Grid-Stops bei Range-Breakdowns fressen die TP-Gewinne — kein Paper-Deploy. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2.8 KiB
trade-kuns — ATR-GridBot mit Regime-Filter (Design)
Datum: 2026-06-10 Status: Umsetzung Phase Backtest (User-Entscheidung: Walk-Forward-Gate vor Paper-Lauf) Lehren aus krypto-kuns-GridBot v1: Spacing zu eng → Fees fraßen Profit · Level-Chasing/Rebalance-Flapping · kein Regime-Bewusstsein (kaufte in fallende Messer)
1. Strategie (long-only Spot, je Pair unabhängig)
Aktivierung (auf 4h-Close, kein aktives Grid):
- ADX(14, 4h) <
adxMax(Seitwärtsregime — komplementär zum Trend-Bot, der ADX ≥ 20 verlangt) - Center
C= Close, SpacingS=spacingAtrMult× ATR(14, 4h) — eingefroren für die Grid-Lebensdauer (kein Chasing) NBuy-Levels bei C − k·S (k = 1…N), Budget je Level = (Equity / 4 Pairs) / N; unter 10 USDT keine Aktivierung
Fills (auf 15m):
- Sells zuerst, dann Buys — ein im selben 15m-Bar gekaufter Lot kann nicht im selben Bar verkaufen (pessimistisch, keine Intrabar-Reihenfolge-Annahme)
- Buy: Low ≤ Level-Preis und Level frei → Fill zum Level-Preis (+ Slippage + Fee)
- Take-Profit: High ≥ Level-Preis + S → Verkauf genau ein Spacing über dem Einstand; Level wird wieder frei (Re-Buy beim nächsten Dip)
Deaktivierung (auf 4h-Close, alle Lots werden zum Close glattgestellt, grid_stop):
- Range-Breakdown: Close < C − (N+1)·S (harter Stop des gesamten Grids)
- Range-Ausbruch oben: Close > C + (N+1)·S (Re-Center beim nächsten Aktivierungs-Check)
- Trend setzt ein: ADX ≥
adxMax+ 5 (Hysterese gegen Flapping)
Danach ist Re-Aktivierung an jedem späteren 4h-Close möglich (neues Center).
Fixe A-priori-Parameter (keine Grid-Suche — die hat beim Trend-Bot 2.58× Overfitting erzeugt):
spacingAtrMult 1.0 · gridLevels 4 · adxMax 20 · ATR/ADX-Periode 14 · Fees 0.1 % + 5 bps Slippage je Seite (4h-ATR ≈ 1–3 % → Spacing schlägt die ~0.3 % Round-Trip-Kosten strukturell)
2. Umsetzung
src/server/backtest/grid.ts—runGridBacktest(candles15ByPair, cfg): BacktestResult. Eigener Lot-Ledger (mehrere Lots je Pair —Portfoliokann nur eine Position je Pair), identische Fee/Slippage-Mathematik, R-Multiple gegen Grid-Stop-Distanz. 15m-Timeline + 4h-Erkennung wierunner.ts.exitReasonerweitert um'grid_tp' | 'grid_stop'.src/server/scripts/grid-walkforward.ts— wierotation-walkforward.ts: fixe Params,buildWindows+aggregateOos+ Gate, Persistenz inbacktest_runs(kindgrid-walkforward).- Gate unverändert (§5 der Haupt-Spec). Besteht das Grid das Gate, folgt die Paper-Integration als zweite Engine; fällt es durch, ist das ein legitimes Ergebnis.
3. Tests
Aktivierung nur bei ADX < adxMax · Fill bei Low-Touch · TP bei High-Touch (nicht im Entry-Bar) · Breakdown liquidiert alles · Oszillation zwischen zwei Levels ist nach Fees profitabel bei S = 1×ATR · Determinismus.