trail_start gemessen: keine Aenderung -- und der gepaarte Test kippt das Ergebnis
User-Frage "warum wurden meine Trades automatisch geschlossen". Am Log und an der DB beantwortet: 9 von 11 sl-Closes seit dem 13.08. waren der NACHGEZOGENE Stop (-75,90 EUR), einer der echte Initial-SL (-113,94), und der groesste Verlust (-215,60) war eine MANUELLE SL-Aenderung, nach der sich das Trailing per Konstruktion abschaltet. Der Mechanismus ist Arithmetik: der Trail sitzt 1,0xATR hinter dem Bestkurs und erreicht den Einstieg damit erst bei 1,0xATR Gewinn -- aktiviert wird er aber schon bei 0,3xATR. Dazwischen liegt der Stop zwangslaeufig im Verlust. GEMESSEN (backtest_trail_start.py, 80k M5, Squeeze-Entries, nur trail_start): trail_start "war im Plus, schloss im Minus" H1 / H2 0,3 (live) 47,6 % / 38,2 % 0,8 27,7 % / 19,4 % 1,0 12,0 % / 6,9 % 1,3 0,0 % / 0,5 % Das beobachtete Verhalten ist damit bestaetigt und quantifiziert. ABER DER ERTRAG TRAEGT NICHT. Sequentiell sahen vier Werte in beiden Haelften besser aus (0,5/0,8/1,3/1,5, Delta bis +0,101). Der GEPAARTE Test dreht das: alle 12 Intervalle enthalten die Null, und in H2 kippt das Vorzeichen (0,8: -0,006 · 1,3: -0,023 · 1,5: -0,023). Grund: ein spaeterer Trail-Start haelt Trades laenger, also passen ANDERE Trades in den EINEN Slot. Der scheinbare Gewinn war ein SELEKTIONSEFFEKT, kein Exit-Effekt -- exakt die Falle aus backtest_exit_combo.py (31.07.). Der gepaarte Vergleich ist hier der einzig gueltige Test und zugleich trennschaerfer als die Einzel-Intervalle. KEINE AENDERUNG. trail_start bleibt 0,3. Nichts am Live-System angefasst. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
44191947ac
commit
276c8c7f07
@@ -5780,6 +5780,61 @@ erfundene Zeilen ein echtes Risiko. `tests/conftest.py` entfernt den
|
||||
`FileHandler` des `oil`-Loggers jetzt für die Sitzung — **vierte Grundregel der
|
||||
Suite.** Verifiziert: Log-Größe vor und nach einem Komplettlauf **identisch**.
|
||||
|
||||
### ⚠⚠ „WARUM WURDEN MEINE TRADES AUTOMATISCH GESCHLOSSEN?" — es war das TRAILING (2026-08-14)
|
||||
|
||||
User-Frage. Am Log und an der DB beantwortet, nicht vermutet. 11 Closes mit
|
||||
Grund `sl` seit dem 13.08., **richtungsrichtig** aufgeschlüsselt (bei SELL zieht
|
||||
das Trailing den Stop nach UNTEN — ein Exit darüber ist Slippage, kein Trailing):
|
||||
| Ursache | n | Summe |
|
||||
|---|---|---|
|
||||
| **Trailing-Stop (nachgezogen)** | **9** | **−75,90 €** |
|
||||
| echter Initial-SL | 1 | −113,94 € |
|
||||
| ⚠ **manuelle SL-Änderung** | 1 | −215,60 € |
|
||||
⚠ **`closed_by='sl'` heisst nur „Broker-Stop erreicht", nicht „Initial-Stop".**
|
||||
|
||||
**DER MECHANISMUS IST ARITHMETIK, KEIN DEFEKT.** Der Trail sitzt `mult`×ATR
|
||||
(=1,0) hinter dem Bestkurs und erreicht den Einstieg damit erst bei **1,0×ATR
|
||||
Gewinn** — aktiviert wird er aber schon bei **0,3×ATR** (`trail_start`). Im Band
|
||||
dazwischen liegt der Stop zwangsläufig auf der VERLUSTSEITE. Real (50023965):
|
||||
Einstieg 82,283 · Bestkurs 82,141 (0,47×ATR im Plus) · Stop 82,141+0,305 =
|
||||
**82,456** = 0,173 ÜBER dem Einstieg.
|
||||
⚠ Der grösste Verlust war **nicht** automatisch: Log 13.08. 16:30:59 „Manuelle
|
||||
SL/TP-Änderung erkannt (SL 81.468≠81.151) → Trailing abgeschaltet". Ab da
|
||||
verfolgt die Engine SL-Änderungen nicht mehr — ob der Exit bei 81,758 eine
|
||||
weitere Handeingabe war oder Slippage, ist aus dem Log **nicht** entscheidbar.
|
||||
|
||||
**GEMESSEN: späterer `trail_start`?** (`backtest_trail_start.py`, 80k M5,
|
||||
Squeeze-Entries, nur `trail_start` variiert)
|
||||
| trail_start | H1 „war im Plus, schloss im Minus" | H2 |
|
||||
|---|---|---|
|
||||
| **0,3 (live)** | **47,6 %** | **38,2 %** |
|
||||
| 0,8 | 27,7 % | 19,4 % |
|
||||
| 1,0 | 12,0 % | 6,9 % |
|
||||
| **1,3** | **0,0 %** | **0,5 %** |
|
||||
✅ **Das beobachtete Verhalten ist damit bestätigt und quantifiziert** — es ist
|
||||
eine Auszählung, keine Schätzung, und sie fällt monoton.
|
||||
|
||||
⚠⚠ **ABER DER ERTRAG TRÄGT NICHT — und der Weg dahin ist die eigentliche
|
||||
Lehre.** Sequentiell sahen **vier** Werte in beiden Hälften besser aus (0,5 · 0,8
|
||||
· 1,3 · 1,5, Δ bis +0,101). **Der GEPAARTE Test dreht das:**
|
||||
| gegen 0,3 | H1 Δ je Trade | H2 Δ je Trade |
|
||||
|---|---|---|
|
||||
| 0,8 | +0,048 [−0,047 … +0,150] | **−0,006** [−0,083 … +0,074] |
|
||||
| 1,3 | +0,077 [−0,062 … +0,219] | **−0,023** [−0,127 … +0,088] |
|
||||
| 1,5 | +0,143 [−0,014 … +0,299] | **−0,023** [−0,137 … +0,098] |
|
||||
**Alle 12 gepaarten Intervalle enthalten die Null**, und in H2 kippt das
|
||||
Vorzeichen gegenüber dem sequentiellen Lauf.
|
||||
⚠ **Grund: ein späterer Trail-Start hält Trades länger, also passen ANDERE
|
||||
Trades in den EINEN Slot.** Der scheinbare Gewinn war ein **Selektionseffekt**,
|
||||
kein Exit-Effekt — exakt die Falle aus `backtest_exit_combo.py` (31.07.):
|
||||
verschiedene Trade-Folgen sind nicht vergleichbar. Der gepaarte Vergleich
|
||||
(gleiche Entries, nur der Exit variiert) ist hier der einzig gültige Test, und
|
||||
er ist zugleich **trennschärfer** als die Einzel-Intervalle.
|
||||
✅ **KEINE ÄNDERUNG.** `trail_start` bleibt 0,3.
|
||||
⚠ Wer die kleinen Verluste trotzdem loswerden will, tauscht sie gegen **weniger
|
||||
Trefferquote im Ertrag** ein — es ist eine Komfort-, keine Edge-Entscheidung.
|
||||
Zahlen dafür liegen jetzt vor (1,3 → 0 % solcher Fälle, WR 36 → 56 %).
|
||||
|
||||
### ✅ S/R-AUTO-CLOSE WIEDER AN (User-Entscheidung 2026-08-11)
|
||||
|
||||
Frage war: „sollten wir Trades bei einem S/R-Bounce automatisch schliessen?"
|
||||
|
||||
Reference in New Issue
Block a user