Winkel-Beschriftung korrigiert (Zahlen unveraendert) + Spiegeltest bestanden
Anlass: "pruefe die Logik im umgekehrten Fall, fallender Kurs". 1) Spiegeltest bestanden. Mit reversal_enabled=false ist das Verhalten ueber die ganze Ueberdehnungs-Spanne exakt symmetrisch (steigend/LONG <-> fallend/SHORT): gleiche Signale, gleiche Konfidenz, gleicher Anti-Ueberdehnungs-Schnitt bei 3,5. 2) Dabei gefunden: die Winkel-Beschriftung war ueberall invertiert. calc_trend_angle liefert 0 Grad = AUFWAERTS ... 180 = ABWAERTS, also ist ad = angle-90 NEGATIV bei steigendem Kurs. Ein LONG in einem steigenden Markt bekam daher "Winkel gegen EMA" (-10), ein LONG in einem fallenden "Winkel bestaetigt" (+5). ABER: backtest_angle.py benutzt DIESELBE verdrehte Beschriftung (a5_dis = a5 < 90-dead fuer LONG heisst "dagegen", ist aber STEIGEND). Der dokumentierte Befund "dafuer/neutral +0,055 vs dagegen +0,025" bedeutet richtig gelesen: LONG bei FALLENDEM Kurzfrist-Winkel (= Pullback) traegt doppelt so gut. Das ist der mehrfach belegte Pullback-Effekt. => Die Gewichtung war von Anfang an NUMERISCH RICHTIG. Nicht umgedreht. Geaendert wurden nur die Reason-Texte und Kommentare. Verifiziert: Konfidenzwerte vorher/nachher identisch (60/70/75 je Richtung). Lehre: der erste Verdacht "systematisch invertierte Logik" war falsch - die Zahlen stimmten, die Sprache log. Bei einer verdrehten Konvention erst pruefen, ob die MESSUNG dieselbe Verdrehung teilt, bevor man den Code "repariert". Beim Reversal war es anders: dort wies die eigenstaendige Messung das Setup unabhaengig von der Beschriftung als negativ aus. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
1a67944842
commit
dcdd53b703
+19
-9
@@ -94,8 +94,9 @@ _H1_AGAINST_PEN = 8 # H1 steht gegen die Richtung (M30 ok/neutral) → sc
|
||||
# +0,025). NUR Konfidenz/Warnung — als hartes Gate senkt es den Gesamtertrag.
|
||||
_ANGLE_LR = 14 # Regressionsfenster (= ANGLE_LR_BARS)
|
||||
_ANGLE_DEAD = 2.0 # Totband um 90° (Grad) → darunter „neutral"
|
||||
_ANGLE_BONUS = 5 # Winkel bestätigt die EMA-Richtung
|
||||
_ANGLE_PENALTY = 10 # Winkel klar GEGEN die EMA-Richtung (mögliche Wende)
|
||||
# ⚠ Namen historisch, Bedeutung 2026-08-04 richtiggestellt (Zahlen unverändert):
|
||||
_ANGLE_BONUS = 5 # Kurzfrist-Winkel läuft GEGEN das Signal = PULLBACK → besser
|
||||
_ANGLE_PENALTY = 10 # Kurzfrist-Winkel läuft schon MIT = kein Pullback → schlechter
|
||||
|
||||
# Tageszeit-Gate — REAKTIVIERT 2026-07-13 (User-OK) nach Echtkosten-Messung
|
||||
# (`backtest_realcosts.py`, Kosten = Bar-Spread/ATR statt pauschal 0,1):
|
||||
@@ -819,17 +820,26 @@ class WaveRecommender:
|
||||
conf -= _H1_AGAINST_PEN
|
||||
reasons.append("H1 gegen Richtung — schwächeres Setup")
|
||||
|
||||
# ── Regressions-Winkel vs nachlaufende EMA (nur Konfidenz/Warnung) ───
|
||||
# Steht der Winkel der Basis-TF klar GEGEN die EMA-Richtung, ist die EMA
|
||||
# evtl. am Nachlaufen (Wende) → Warnung. Backtest: Winkel-dafür trägt
|
||||
# klar besser; als Gate aber Gesamtertrag-negativ → nur Konfidenz.
|
||||
# (ad = angle − 90 wurde oben in der Reversal-Prüfung bereits berechnet.)
|
||||
# ── Kurzfrist-Winkel als PULLBACK-Maß (nur Konfidenz) ────────────────
|
||||
# ⚠⚠ BESCHRIFTUNG KORRIGIERT 2026-08-04 — die ZAHLEN sind unverändert.
|
||||
# `calc_trend_angle` liefert 0°=AUFWÄRTS … 180°=ABWÄRTS, also ist
|
||||
# `ad = angle−90` NEGATIV bei steigendem Kurs. Die alten Texte
|
||||
# („Winkel bestätigt" / „⚠ Winkel gegen EMA") sagten deshalb genau das
|
||||
# GEGENTEIL dessen, was hier passiert — und `backtest_angle.py` benutzt
|
||||
# dieselbe verdrehte Beschriftung („Winkel klar dagegen" = `a5 < 90-dead`
|
||||
# = in Wahrheit STEIGEND). Der gemessene Befund lautet richtig gelesen:
|
||||
# LONG bei FALLENDEM/flachem Kurzfrist-Winkel (= Pullback) → ØR +0,055
|
||||
# LONG bei bereits STEIGENDEM Winkel (kein Pullback) → ØR +0,025
|
||||
# Das ist der im Projekt mehrfach belegte Pullback-Effekt (vgl. „⭐ tiefer
|
||||
# Pullback" und den RSI-Befund: bestätigende Oszillatoren sind schlechter).
|
||||
# Die Gewichtung war also von Anfang an numerisch RICHTIG; nur hieß der
|
||||
# Bonus „bestätigt", obwohl er den Gegen-Winkel belohnt. NICHT umdrehen.
|
||||
if (d_sig > 0 and ad < -_ANGLE_DEAD) or (d_sig < 0 and ad > _ANGLE_DEAD):
|
||||
conf -= _ANGLE_PENALTY
|
||||
reasons.append("⚠ Winkel gegen EMA (mögliche Wende)")
|
||||
reasons.append("kein Pullback — Kurs läuft dem Signal schon davon")
|
||||
elif (d_sig > 0 and ad > _ANGLE_DEAD) or (d_sig < 0 and ad < -_ANGLE_DEAD):
|
||||
conf += _ANGLE_BONUS
|
||||
reasons.append("Winkel bestätigt")
|
||||
reasons.append("⭐ Pullback (Kurzfrist-Winkel gegen den Trend)")
|
||||
|
||||
# Hohe Vola dämpfen (oberes ATR-Terzil = schwächster/negativer Edge) —
|
||||
# nur Konfidenz (Schwelle regime-abhängig, kein hartes Gate).
|
||||
|
||||
Reference in New Issue
Block a user