User-Vorgabe "Kerzengroesse und Dochtlaenge als Kontext fuer die
Empfehlung". Getestet werden die KONDITIONALEN Behauptungen (nicht
"Kerzenmuster funktionieren", sondern "sie funktionieren im Kontext"):
Docht am Level vs Range-Mitte, Volumen >= 2x, mit/gegen Trend.
Informations-Messung (Forward-Return 60 min in xATR), 80k M5-Bars,
2 Haelften. Wichtig: gerichtete Klassen werden gegen die DRIFT-NULL
(bm x E[d]) gelesen, nicht gegen die Baseline - sonst liest man reine
Regime-Drift als Edge.
Robust in BEIDEN Haelften, aber INVERTIERT gegenueber der Quelle:
* Langer Koerper -> Fortsetzung: -0,059 / -0,076 (laeuft GEGEN die
Koerperrichtung). Mit Trend sogar -0,132 / -0,042 -> "im Trend =
Fortsetzung" ist genau falsch, es ist die Klimax-Kerze.
* "2x Volumen = echt": -0,117 / -0,204 vs -0,065 / -0,035 bei normalem
Volumen. Monoton in die falsche Richtung - mehr Volumen = staerkere
Gegenbewegung.
* "Docht am Level zuverlaessig": in beiden Haelften SCHLECHTER als in
der Range-Mitte.
* mit/gegen Trend beim Docht kippt zwischen den Haelften = Rauschen.
Einziger Lead: Fade eines volumenstarken langen Koerpers, +0,117/+0,204
brutto - noch unter den realen Kosten (0,265xATR), aber erstmals nur um
Faktor ~1,5 statt einer Groessenordnung. Folgetest mit Live-Exit statt
starrem 60-min-Fenster waere der naechste Schritt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
backtest_trailing_sr.py --squeeze: gleiche Sim, aber nur SQUEEZE-Ausbrueche
(Regel exakt wie live via core.wave_rec _SQ_N/_SQ_MULT/_SQ_K, Einstieg am
Ausbruchslevel, Echtkosten aus dem Bar-Spread).
Basis H1 +0,102 / H2 +0,108 - KEINE Variante besteht. Anders als im
Wave-Lauf ist das kein Rauschen: der reine S/R-Trail wird monoton
schlechter, je breiter der Puffer (0,10 -> 0,25 -> 0,50, in BEIDEN
Haelften). Mechanismus: der Squeeze lebt von wenigen Laeufern (43 %
Treffer, Ertrag im Tail) - ein ans naechste Level gebundener Stop holt
genau dort raus, wo der Lauf beginnt. Bei Wave-Signalen faellt das kaum
auf, daher das umgekehrte Vorzeichen zwischen beiden Laeufen.
Staerkster Gewinner-Kappen-Beleg des Projekts: die Kontrollvariante
(fester TP am Gegenlevel) dreht den Squeeze von +0,102/+0,108 auf
-0,066/-0,004 = Edge vollstaendig zerstoert.
Abgrenzung: der laufende S/R-Auto-Close ist P(break)-GEGATED und war auf
Squeeze-Trades separat ein Wash (backtest_squeeze_srclose.py). Das Gate
ist der Unterschied zwischen "Wash" und "Edge zerstoert".
Damit ist die User-Idee in allen drei Teilen durchgemessen; der
Live-Exit-Stack bleibt unveraendert.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
User-Idee "Trailing TP und SL auf die S/R-Linien anpassen". Zerfaellt in
drei Teile; Initial-SL an S/R und fester TP am Gegenlevel waren schon
verworfen, der TRAILING-Teil war offen (bisher nur ATR-Abstaende getestet).
Aufbau wie backtest_trailing.py (echte Phasen-Mechanik, Breakeven 1,3),
Level = M30-Pivots k=3 KAUSAL (Pivot erst 3 M30-Bars spaeter bekannt),
Deckel [0,5..2,0]xATR gegen den -11,4xATR-Fall aus backtest_sl_method.py.
80k Bars, ~19,7k Signale je Haelfte.
Ergebnis: schadet nicht, traegt aber zu wenig. 3 von 5 Varianten schlagen
die Basis in BEIDEN Haelften (Hybrid "engerer Stop" +0,006/+0,006, WR
37->43 %). Trotzdem nicht gebaut: (a) Effekt 0,006-0,014 R/Trade = eine
Groessenordnung unter der B3-Huerde; (b) nicht parameter-robust - Puffer
0,10 besteht, 0,25 faellt durch, 0,50 besteht wieder.
Positiv: Worst-Case bleibt in ALLEN Varianten -2,00xATR, der Deckel
funktioniert - S/R-Verankerung fuegt kein Tail-Risiko hinzu.
Die Kontrollvariante "TP am Gegenlevel" reproduziert den alten Befund
exakt (WR 40->54 %, SigmaR H2 +1261->+740 = Gewinner-Kappen) -> Simulation
gegen backtest_srclose.py validiert, TP-Teil endgueltig erledigt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
User-Frage "ist der Auto-Close beim S/R eher behindernd als dienlich?".
Die rohe Statistik (99 % WR, +13,71 EUR/Trade) ist ein Konstruktions-
Artefakt - der Close feuert nur im Plus. Das Skript misst stattdessen die
Kontrafaktische: fuer jeden sr_close die naechsten 60 min aus candles_m1
(gleiches Fenster wie das Modelltraining, _BRK_W=12 M5-Bars), wie weit der
Kurs noch IN Richtung lief (entgangen) bzw. GEGEN sie (vermieden), in EUR
ueber die echte Lot-Groesse. EUR-je-Punkt wird aus den Trades selbst
kalibriert statt geraten. Broker-Offset (candles_m1.time = rohe UTC+3)
wird korrigiert.
Befund (70 auswertbare Closes): entgangen 33,68 EUR/Trade vs vermieden
25,68 -> netto -8,00 EUR/Trade. 43 % klar zu frueh geschlossen, nur 26 %
klar richtig. Deckt sich mit der Live-P(break)-Genauigkeit (58,8 % bei
einer Basisrate von 59,3 % = kaum Trennschaerfe ueber "immer Abpraller").
⚠ Einordnung: 89 der 98 Closes liefen noch auf M5-Levels; die M30-
Umstellung ist 1 Tag alt (9 Closes). Die Messung beurteilt also vor allem
die ALTE Konfiguration.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
core/econ_calendar.py (NEU): High-Impact-News-Fenster als Handels-Sperre.
Quelle Forex Factory JSON (kostenlos, kein Key, mit impact-Feld), beide
Wochen (thisweek endet Sa, Markt oeffnet So 23:00 -> sonst blinder Fleck),
1x/h im Daemon-Thread, dedupliziert. Filter: High+USD ODER Oil/OPEC-Titel.
WICHTIG - nicht gemessen: Events sind zu selten fuer eine 2-Stichproben-
Aussage. Das ist die Handbuch-Regel, kein belegter Edge. Deshalb bewusst
asymmetrisch: sperrt NUR die autonomen Entries (Auto-Squeeze + Auto-Signal,
ohne Dedup-Marker -> feuert nach dem Fenster nach), in der Entry-Checkliste
nur "warn" statt "fail". Manuelle Orders bleiben frei. Der gemessene
EIA-Blackout (Mi 15:30-16:30) bleibt unabhaengig aktiv und greift auch
ohne Netz.
Verifiziert: Live-Fetch (EIA korrekt Mi 16:30 Berlin, FOMC/GDP/PCE erkannt)
+ 4 synthetische Szenarien (5 min vor/nach Event, 50 min davor, disabled).
MQL5 v1.30: graue Konsolidierungs-Box beschriftet (User-Frage "was bedeutet
die graue Box") - sichtbares Label an der Oberkante, rechtsbuendig wie die
uebrigen: "Konsolidierung (10-Bar-Spanne)" bzw. bei Kompression
"Konsolidierung - komprimiert, Ausbruch steht bevor". 0 Fehler kompiliert.
Frontend v=122: #cal-note in der Meldungen-Karte (laufendes Fenster bzw.
Vorwarnung <=60 min).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
User-Vorgaben: "beruecksichtige die chartmuster mit in der gesamtempfehlung sobald
eins erkannt wird" + "auch der liquiditaetstrend und das orderbuch".
MUSTER (Gewicht 1,0 bestaetigt / 0,5 bildet sich) -- vorher den faelligen
KONTROLLTEST nachgeholt (stand seit heute im measurement_reminder):
Muster H1 +0.206 (Ziel 23%) H2 +0.328 (Ziel 26%)
Kontrolle H1 +0.184 (Ziel 19%) H2 +0.220 (Ziel 18%) <- beliebiger Swing-Bruch
Delta H1 +0.022 H2 +0.108
Die Muster schlagen die Kontrolle in BEIDEN Haelften, aber der Loewenanteil des
Ertrags kommt vom Breakout+Trailing. Deshalb Gewicht 1,0 (wie Elliott/KI), nicht
2,0 (Squeeze). Ziel-Trefferquote bleibt niedrig -> die Stimme sagt Richtungs-
tendenz, kein Kursziel.
ORDERBUCH-Imbalance + LIQ-TREND (Gewicht je 0,5 = kleinstes im Verdict):
⚠ BEIDE UNGEMESSEN. Die Uebertragbarkeit HL->CFD wird gerade erst erhoben
(analyze_bookflow.py, ~3% der Daten). Der Lead-Lag-Test zeigt sogar, dass
PEPPERSTONE fuehrt (r=0.525 bei k=-1) und HL folgt -- HL ist Oracle-basierter
HIP-3-Perp, strukturell Follower. Daher das kleinste Gewicht.
Imbalance-Schwelle _OB_IMB_MIN=0.30, darunter keine Stimme.
MITLOGGING: verdict_votes um pattern/pattern_w/orderbook/orderbook_w/liqtrend/
liqtrend_w erweitert (DB migriert, Backup angelegt). Nur so ist in ein paar Wochen
datenbasiert entscheidbar, ob die Stimmen bleiben, mehr Gewicht bekommen oder
rausfliegen (wie TU 2026-07-06).
Frontend: Chips rendern dynamisch (keine Aenderung noetig); NEU wird das GEWICHT
im Chip angezeigt und stumme Module (w=0) ausgegraut -- so ist sichtbar, dass
Orderbuch/Liq-Trend schwaecher zaehlen als Welle (3,0) oder Squeeze (2,0).
Verifiziert live: alle 9 Stimmen korrekt, Bias-Rechnung geprueft (1.5/5.5=0.273),
Logging schreibt die neuen Spalten.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User reichte ein 19-seitiges WTI-Trading-Handbuch ein ("lerne daraus Kontext fuer
die Empfehlung"). Systematischer Abgleich statt naivem Einbau:
BEREITS UMGESETZT (Handbuch bestaetigt den Ist-Zustand): HTF-Trend-Filter,
EIA-Blackout, ATR-Stop mit Puffer, Trailing nach TP1, Verlust-Serien-Check,
Journal/Kennzahlen, NY-Session-Fokus.
BEREITS GEMESSEN + VERWORFEN: Liquidity Sweeps, Order-Block-Klasse (Pivot-Zonen,
6x), Double Top/Bottom, H&S/Triangle/Flag/Cup, Wyckoff, False Breakout, DXY.
NEU GEMESSEN (die echten Luecken) -- alle durchgefallen:
PDH/PDL bounce H1 -0.335 / H2 -0.199 (beidseitig negativ)
PDH/PDL sweep H1 -0.462 / H2 -0.184 (schlechtestes Ergebnis im Projekt)
Asian Range bnc H1 -0.134 / H2 -0.005
Asian Range swp H1 -0.178 / H2 -0.040
Discount/Premium: nicht robust (H1 besser, H2 schlechter), -70% Volumen
Freitag-ab-16h : verschlechtert BEIDE Haelften
Bemerkenswert: PDH/PDL ist der am klarsten schaedliche Level-Typ, den das Projekt
je gemessen hat -- obwohl das Handbuch ihn als besonders stark bewirbt. Und der
Freitagnachmittags-Filter kostet Geld, die dort geblockten Trades waren
ueberdurchschnittlich (gleiche Lehre wie beim Dead-Hours-Gate).
Kein Konzept aus dem Handbuch neu ins Signal aufgenommen.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User: "schauen wir uns das mal an" (nach dem verworfenen Konsolidierungs-Backtest).
Der Bot exportiert die Spanne der letzten 10 M5-Bars -- exakt die Box, aus der der
validierte Squeeze-Ausbruch kommt (wave._squeeze_one liefert jetzt box_hi/box_lo in
allen Rueckgaben). Der Indikator zeichnet sie als transparentes blaues Rechteck;
ist sie KOMPRIMIERT (<=2.5xATR, also armed/active), wird sie mit doppelter Deckkraft
gezeichnet -> "Ausbruch steht bevor" ist auf einen Blick sichtbar.
Schalter: InpShowConsol / InpConsolColor / InpConsolAlpha / InpConsolBars.
⚠ REINE ANZEIGE. Alle Konsolidierungs-SETUPS sind gemessen verworfen
(backtest_consolidation.py: False Breakout, Distribution, Accumulation, Retest --
inkl. Kontrolltest, der die Distribution-Hypothese kippte). Die Box zeigt WO
gestaut wird, nicht WOHIN es geht. Validiert ist ausschliesslich der Ausbruch.
Verifiziert: CO;84.105;84.815;0 (0.710$ = 2.68xATR = knapp ueber der Schwelle,
daher korrekt als "nicht komprimiert" markiert).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Vorgabe "lerne fuer die Gesamtempfehlung die Konsolidierungen" (3 Chart-
Beispiele: False Breakout, Distribution, Accumulation + Retest). Alle auf derselben
Box wie der validierte Squeeze, 80k M5-Bars, 2 Halbjahre, Live-Exit + Echtkosten.
A) False Breakout / Liquidity Sweep: faellt in JEDER Variante durch (Rueckkehr
1/2/3 Bars x Live-/Setup-Exit x Session). H1 durchgehend negativ, H2 leicht
positiv = Regime-Kippen. Der Setup-eigene Exit (Stop am Docht, Ziel Gegenseite)
ist in ALLEN 6 Kombinationen negativ.
Nebenbefund: 54% aller Box-Ausbrueche kehren binnen 3 Bars zurueck -- der
Squeeze-Ausbruch scheitert mehrheitlich (passt zur 43%-Trefferquote). Die
Gegenrichtung zu handeln rettet das nicht.
B/C) Distribution/Accumulation: Basisrate widerlegt die Richtungs-Hypothese direkt
(48% bzw. 52% treffen die Erwartung, Zufall = 50%). "Distribution" sah mit
+0.168/+0.270 tragfaehig aus -- der KONTROLLTEST (gleicher Vor-Trend, Bruch in
die Gegenrichtung) liefert in H2 mit +0.364 sogar MEHR. Beide sind schlicht
Box-Ausbrueche mit Trailing; welcher fuehrt, wechselt mit dem Regime.
Retest-Einstieg: in beiden Haelften schlechter als der direkte Bruch.
Fazit: nichts davon in die Gesamtempfehlung. 17. verworfener Signal-Eingriff.
Methodisch: der Kontrolltest ist genau der, der bei backtest_patterns.py noch
fehlt -- hier hat er die Idee gekippt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Wunsch. Der Bot exportiert PL;wert;waehrung, der Indikator zeigt es als
OBJ_LABEL direkt unter dem Kurs oben rechts (CORNER_RIGHT_UPPER, Y = Kurs-Y +
Schrifthoehe + Abstand), gruen im Plus / rot im Minus.
Wert ist NETTO wie im Dashboard: bei Gewinn abzueglich der WHT-Quellensteuer
([trading] wht_pct = 26.375), bei Verlust unveraendert (dort faellt keine an).
Ohne offene Position schickt der Bot keine PL-Zeile -> Redraw() raeumt das Label
per ObjectsDeleteAll(PFX) automatisch weg.
Verifiziert: PL;-20.59;EUR in sr_levels.csv, deckt sich mit dem Dashboard-Netto.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User: "entferne 'Durchbruch' bei S/R die Prozentzahl reicht mir".
vorher: Widerstand 84.536 · Durchbruch 18%
jetzt: Widerstand 84.536 · 18%
Der ausgeschriebene Hinweis bleibt im Tooltip der Linie erhalten.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1) measurement_reminder.py + Task OilMeasurementReminder (taeglich 18:00):
meldet per Popup, welche Messung genug Daten hat. Jeder Punkt mit PRUEFBARER
Bedingung (Datenmenge/Datum), Meldung je Punkt 1x (Marker in .reminders/).
Status: python measurement_reminder.py --status
Direkt zwei FAELLIGE Punkte gefunden:
- P(break)-Prognose-Genauigkeit: 2213 ausgewertete Vorhersagen (Schwelle 500),
lag seit 2026-07-23 unbeachtet herum
- Chartmuster-Kontrolltest (generischer Breakout): jederzeit machbar
Noch sammelnd: verdict_votes 24%, AUTOSIG-Trades 0, M30-Level-Validierung 27%,
M1-History 7%, News-Score 8%.
2) MQL5 v1.26: Beschriftungen UND Pfeile stehen jetzt ganz rechts am Chartrand,
auf einer Linie mit dem Kurs-Label (User: "genau so angeordnet wie der aktuelle
Kurs"). RightTime() rechnet das Ende des Shift-Bereichs aus
(CHART_WIDTH_IN_BARS x InpShiftPct) statt fix 2 Kerzen hinter der letzten Bar.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Review der Gesamtempfehlungslogik auf Wunsch des Users ("ueberpruefe die
gesamtempfehlungslogik komplett mit den neuen indikatoren von heute").
Befund 1 (gravierend): Die Regel "Modul ohne Aussage -> Gewicht 0" (2026-07-15
fuer Squeeze/Elliott/KI eingefuehrt) galt NICHT fuer die Welle selbst. Sie stand
mit w=3.0 permanent im Nenner, auch bei WARTEN. Gemessen sind ~91% der letzten
2000 Empfehlungen WARTEN -> die Bias-Nadel war fast immer kuenstlich zur Mitte
gezogen. Realer Fall: bias +0.312 statt +0.625 (Faktor 2).
Fix: weight=0 bei WARTEN.
Befund 2: `agree` nutzte immer die Wellen-Richtung als Referenz -> bei WARTEN
zwangsläufig "0/N", obwohl sich die anderen Module einig waren (real "0/4" bei
2 einigen Modulen). Fix: Referenz = Wellen-Richtung, ersatzweise Bias-Richtung
(real jetzt "2/3").
Beides REINE ANZEIGE, Order-Logik unberuehrt. Mit 6 synthetischen Szenarien
verifiziert + live geprueft.
Nicht geaendert, nur dokumentiert:
- Doppelzaehlung M30/H1 (stecken bereits im Wave-Signal als Filter/Konfluenz)
- Drei divergierende Level-Quellen seit der M30-Umstellung (Supports wichen um
0.65$ ab) -- bewusst, jedes Gate ist auf seine Quelle kalibriert
- toter tu-Parameter
Neue Indikatoren von heute korrekt NICHT im Verdict: Liquiditaets-Waende
(Uebertragbarkeit ungemessen), Liquiditaetszonen + Volume Profile (verworfen),
Chartmuster (nicht reif).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Wunsch. Der Bot haengt P(break) als drittes CSV-Feld an (R;preis;pct /
S;preis;pct), der Indikator schreibt es ins Label:
"Widerstand 84.536 · Durchbruch 34%"
Quelle = dasselbe kalibrierte Logit-Modell wie der S/R-Auto-Close, heute auf die
M30-Level nachtrainiert (AUC 0.72 out-of-sample, Kalibrierung geprueft).
Richtung: Widerstand = Bruch nach oben (+1), Support = nach unten (-1); Merkmale
identisch zu _sr_close_hint/_stop_approach_hint (M5-Momentum, EMA-Richtung,
Abstand/ATR). Abschaltbar via InpShowPBreak.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User: "die liquiditaetspfeile sind immer noch gold".
Ursache: MT5 speichert Input-Werte JE CHART-INSTANZ und ueberschreibt damit neue
Defaults -- auch nach einem Recompile. Die Pfeile blieben deshalb auf dem alten
Gold-Wert (v1.15-v1.22), obwohl der Code laengst neongruen/rot vorgab.
Loesung: die betroffenen Inputs umbenennen. MT5 findet dann keinen gespeicherten
Wert und uebernimmt den Default:
InpWallBidColor -> InpArrowUpColor (neongruen #00FF7F)
InpWallAskColor -> InpArrowDownColor (rot #FF4500)
InpLiqTrendColor -> InpTrendLineColor (neongruen)
InpLiqZoneColor -> InpZoneColor / InpLiqZoneAlpha -> InpZoneAlpha
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Vorgaben: Pfeile rot/gruen behalten, Beschriftungen komplett rechtsbuendig,
alle Beschriftungen weiss, Liquiditaets-Trendlinie neongruen wie der Up-Pfeil.
(a) Pfeile zurueck: Bid NEONGRUEN #00FF7F, Ask ROT #FF4500 (statt Gold).
(b) Liquiditaets-Trendlinie neongruen statt pink.
(c) FIX "nicht komplett rechtsbuendig": auf den Linien war OBJPROP_TEXT gesetzt --
diesen Text zeichnet MT5 IMMER LINKS am Chartrand (Option
"Objektbeschreibungen"). Jetzt OBJPROP_TOOLTIP + CHART_SHOW_OBJECT_DESCR=false.
Betrifft S/R-Linien und Kanal.
(d) Alle Beschriftungen weiss (InpLabelColor) -- die Linien behalten ihre Farbe,
nur der Text ist einheitlich. Kurs oben rechts ebenfalls weiss.
(e) MT5-Positions-Labels ("sell 0.36 ...") stehen systembedingt LINKS und lassen
sich NICHT verschieben -- nur ab-/anschaltbar via InpShowTradeLevels.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User: "entferne die umrandungen fuer trade open und close" + "das bild sieht
komiesch aus" (Screenshot).
(a) Trade-Umrandungen AUS: InpShowTrades=false UND Export im Bot abgeschaltet
([trading] export_trade_marks=false) -- spart auch die DB-Abfrage im
5-s-Export-Takt. Code bleibt reaktivierbar.
(b) Liquiditaets-Trendlinie: RAY_RIGHT entfernt. Eine 60-min-Regression 100 Bars
in die Zukunft zu verlaengern riss die Linie steil ins Bodenlose (im
Screenshot deutlich zu sehen). Sie endet jetzt am aktuellen Rand.
(c) CHART_SHIFT_SIZE auf 12% begrenzt (InpShiftPct). Ohne Begrenzung war der
Shift-Bereich so gross, dass der Kursverlauf links gequetscht stand.
Verifiziert: TR-Zeilen aus sr_levels.csv verschwunden, Rest unveraendert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Vorgaben: Beschriftung aller Linien rechtsbuendig, Schrift 4 Pixel groesser.
- Neue Hilfsfunktion RightTime() (rechter Chart-Rand im Shift-Bereich); die
S/R-Labels werden dort erzeugt UND von RepositionLabels() dort gehalten
(vorher zentriert via CenterTime).
- ANCHOR_RIGHT_LOWER: der Text ENDET am Anker und laeuft nach links -> ragt
nicht ueber den Chartrand hinaus.
- Schriftgroesse 8 -> 12 (+4), einstellbar via InpLabelSize; gilt auch fuer das
(per Default ausgeblendete) Trendlinien-Label.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Vorgabe. CHART_COLOR_BID/ASK/LAST auf InpThemeBidLine (clrWhite), Bid-Linie
explizit eingeschaltet -- hebt sich klar von den blau/roten Kerzen und den
farbigen Overlays ab.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User: "setze die transparenz der zone auf 10 %".
MT5 kann bei OBJ_RECTANGLE KEIN echtes Alpha (nur Canvas-Objekte koennten das).
Loesung: BlendBg() mischt die Fuellfarbe gegen den bekannten, einfarbigen
Chart-Hintergrund -- optisch identisch zu echter Transparenz.
Gold #F59E0B bei 10% auf #0D1117 -> #241F15 (dezent)
InpLiqZoneAlpha = Deckkraft in % (Default 10). Farbe wird bei JEDEM Redraw neu
gesetzt, damit eine Alpha-Aenderung sofort greift (nicht erst beim Neuanlegen des
Objekts). Die gestrichelte Kante bleibt in voller Goldfarbe wie im Referenzbild.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Pfeil-Bugfix (User: "liquiditaetspfeile werden immer noch nicht angezeigt"):
(1) ANCHOR_LEFT ist fuer OBJ_ARROW UNGUELTIG (nur TOP/BOTTOM)
(2) Pfeile sitzen rechts neben der letzten Kerze -> ohne CHART_SHIFT kein
sichtbarer Bereich dort
Blink-Fix (User: "blinken nur manchmal auf"): hl_walls setzte den Cache bei jedem
Fehlschlag auf None -> LQ-Zeilen fehlten -> Indikator loeschte die Pfeile. Jetzt
letzter guter Stand 120s Grace.
Neu (alles reine Anzeige):
- TR;<O|C>;zeit -> Kerze der Eroeffnung HELLGRUEN, des Close DUNKELGRUEN umrandet
- EQ;<H|L>;lo;hi;zeit -> Equal Highs/Lows aus M30-Pivots als goldenes Band +
gestrichelte Kante (wie im User-Referenzbild). Als Signal gemessen verworfen.
- PX;bid -> aktueller Kurs fett oben rechts
- Beschriftung der Liquiditaets-Trendlinie per Default aus (v1.16)
Alles kompiliert und live in sr_levels.csv verifiziert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
ApplyTheme() setzt beim Indikator-Start die Chart-Eigenschaften auf die
Dashboard-Palette:
Bull #3B82F6 (blau) - Bear #EF4444 (rot) - BG #0D1117
Gitter #10151C (dezent) - Text #8B949E - Kerzen gefuellt (CHART_CANDLES)
Liquiditaets-Pfeile Gold #F59E0B (= "Liquiditaetszone" der Legende)
Periodentrenner aus, Bid/Ask in Bull/Bear-Farbe.
Abschaltbar via InpApplyTheme, alle Farben einzeln als Inputs ueberschreibbar.
WARNUNG dokumentiert: aendert das Chart dauerhaft (bleibt nach Entfernen des
Indikators bestehen).
Kompiliert. CLAUDE.md aktualisiert (Indikator-Stand v1.12 -> v1.15, inkl. der
v1.14-Umstellung auf "nur Pfeile rechtsbuendig").
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1) Entry-Checkliste (User: "blende einen Hinweis ein wenn die Checkliste gegen
meine Eroeffnung ist"): engine._entry_checklist prueft 7 Punkte mit Live-Daten
-- Signal-Deckung, HTF-Trend M30+H1, Entry-Raum, News-Konflikt, Kosten,
Verlust-Serie heute (Mental-Check), Nacht-Stunde. Snapshot checklist{long,short},
Anzeige im Bestaetigungs-Dialog, blockt nicht. Kommt jetzt auch bei vorhandenem
Signal (alter Dialog nur bei WARTEN/Gegen-Signal).
Real beim Einbau: beide Richtungen "stop" (11 Verluste heute = 80% des Kontos).
2) MQL5 v1.14 (User: "blende die liquiditaetslinien aus, nur die Pfeile sollen
rechtsbuendig angezeigt werden"): LQ-Linien + Text-Labels raus, nur noch der
Pfeil auf dem Wand-Preis, rechtsbuendig am aktuellen Rand (in RepositionLabels
nachgefuehrt, bleibt beim Scrollen rechts). Details im Tooltip. Pinke
Liquiditaets-Trendlinie unveraendert. Kompiliert.
3) backtest_liquidity_sweep.py (SMC Equal Highs/Lows + Swing Liquidity, Multi-TF-
und Session-Achse): faellt durch -- Details folgen in der Doku.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User: "DIE S/R Linien liegen oft sehr nahe beieinander" -> Option 2 (beides
umstellen, Modell nachtrainieren) gewaehlt. Erst gemessen: backtest_level_tf.py,
80k M5-Bars, 2 Halbjahre, Trades bleiben M5, nur die Level-Quelle variiert.
Ergebnis (M30 gewinnt in BEIDEN Haelften):
TF AUC(H2) Abstand <1xATR dR bei P<0.55 (H1/H2)
M5 0.710 0.61xATR 71% +6698 +7749 (bisher live)
M15 0.725 1.16xATR 46% +10138 +12071
M30 0.721 1.95xATR 28% +12424 +13047 <- gewaehlt
Die Beschwerde ist damit quantifiziert: 71% der M5-Level lagen naeher als 1xATR.
Umsetzung:
- wave_rec: _m30_hl gespeichert, neues _pb_levels30 (k=3, letzte 50 M30-Bars =
trainingsgleich zum 300-M5-Lookback), im Snapshot.
- engine._draw_levels nutzt pb_levels30 (Fallback pb_levels beim Kaltstart);
speist Chart, MQL5-CSV, Dashboard UND den P(break)-Auto-Close.
- _PB_MU/_PB_SD/_PB_W auf M30 nachtrainiert: out-of-sample validiert (H1->H2),
dann auf allen 80k gefittet (34771 Touches, Kalibrierung 23/25, 38/36, 58/59,
86/87). Merkmale bleiben M5. Alte M5-Werte als Kommentar (Rueckweg).
- NICHT mitveraendert: Entry-Raum-Gate nutzt weiter M5-pb_levels
(entry_room_atr=0.6 ist darauf kalibriert).
Verifiziert live: R/S 84.617/83.722 = 2.9xATR Abstand (vorher 0.28xATR),
M30-Pivots 4/7 statt M5 27/31, keine Fehler im Log.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Wunsch: "Kennzeiche die Liquiditaetslinie mit einem Pfeil in welche richtung
die linie den Kurs treibt. Zeichne mir eine Trendlnie in pink im mt5 auf basis
der liquiditaet ein".
(a) Pfeil je Wand in Wirkrichtung (Lesart "die Wand haelt": Nachfrage stuetzt hoch,
Angebot deckelt runter); groessere Wand dicker + "<<". CSV-Format erweitert:
LQ;<B|A>;preis;size;<U|D>;<1|0>.
WICHTIG: Pfeilrichtung ist INTERPRETATION, nicht gemessen -- die Gegenthese
("Liquidity Grab", Kurs laeuft ZUR Wand) ist genauso verbreitet. Klaert
analyze_bookflow.py Frage 3.
(b) Pinke Liquiditaets-Trendlinie LT;t1;p1;t2;p2;<U|D>: Regression ueber den
VOLUMENGEWICHTETEN Wand-Schwerpunkt der letzten 60 min. Zeigt, wohin das
Gewicht der RUHENDEN Orders wandert -- nicht der gehandelte Kurs.
Zeiten im Bot in Broker-Zeit umgerechnet, Preise basis-korrigiert.
HL /api/walls liefert jetzt arrow_bid/arrow_ask/dominant/trend.
Verifiziert: LQ;B;84.182;2441;U;1 / LQ;A;84.223;2441;D;0 /
LT;1785427175;84.135;1785430664;83.978;D in sr_levels.csv. Indikator kompiliert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Vorgabe: "bei restart_server.bat sollten beide server neugestartet werden".
Dabei echten Bug gefunden: die Kill-Zeile matcht '*server.py*' und traf damit
BEIDE Prozesse -- der HL-Server wurde bei jedem MT5-Neustart still mit-erschlagen
und nie wieder gestartet. Folgen:
- Luecken in der Lead-Lag-/Order-Flow-Datensammlung (72h Spanne, nur 2292 Samples)
- Liquiditaetslinien verschwanden aus dem MT5-Chart
Jetzt: erst HL-Dashboard (8001, versteckt via start_hidden.vbs, wartet max 10s
aufs Lauschen), dann Oil-Backend (8000) im Vordergrund. Fail-safe wenn das
HL-Projekt fehlt.
Verifiziert: vorher lief nur 8000 (8001 tot), nachher beide; LQ-Zeilen nach 5s
wieder in sr_levels.csv.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Wunsch: "zeichne mir die liquiditaetslinien in den mt5 ein. entferne die
chartmuster linien aus dem mt5".
- core/hl_walls.py: holt GET /api/walls vom HL-Dashboard (groesstes L2-Level je
Seite, basis-korrigiert auf CFD-Niveau). Fail-safe: HL aus -> keine Linien, kein
Fehler; Cache 10s, Daten >60s alt werden verworfen, Log nur 1x.
- engine._write_levels_file: PT-Zeilen raus, LQ;<B|A>;preis;size rein.
- SR_Levels.mq5 v1.12: PT-Handler entfernt, LQ-Handler (dick gestrichelt +
Groessen-Label), InpShowWalls/InpWallBidColor/InpWallAskColor. Kompiliert.
- config: export_hl_walls=true, hl_walls_url.
Zwei Fallen dokumentiert: (1) Basis-Differenz HL vs CFD ~0,45$ -- ungerechnet laegen
die Linien falsch. (2) 127.0.0.1 statt localhost (IPv6 -> 2066ms statt 19-46ms, lief
in den 2s-Timeout).
Verifiziert: LQ-Zeilen erscheinen in sr_levels.csv (B 83.619/3120, A 83.665/1721),
plausibel zwischen R 83.721 und S 83.516.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Frage "System zur besseren Vorhersage - Liquiditaetsnachfragelinien?".
Getestet, weil es die einzige Klasse mit ANDERER Datenquelle war (Volumen = wo
wurde gehandelt, statt Pivots = wo war ein Docht). SMC/Order Blocks selbst sind
strukturell Pivot-Zonen = die schon 5x verworfene Klasse.
Aufbau: feste Preis-Bins 0.05$, rollierendes 24h-Fenster, tick_volume ueber
[low,high] verteilt, Value Area 70%; 80k M5-Bars, 2 Halbjahre, Live-Exit+Echtkosten.
Ergebnis - nichts traegt, die Kern-Idee am eindeutigsten:
A) Reversion am POC ("Kurs prallt an der Liquiditaetslinie ab")
H1 -0.178 / H2 -0.121 (PF 0.79/0.84) -> in BEIDEN Haelften negativ
A) Reversion am HVN H1 -0.067 / H2 +0.044 -> kippt
B) Momentum durch LVN H1 -0.031 / H2 +0.003 -> Breakeven-Rauschen
Informations-Test (Forward-Return 2h, relativ zur mid-Baseline): kein Bucket
weicht konsistent ab. Tiefere Einsicht: die Volume-Profile-Position ist ein
TREND-PROXY ("ausserhalb Value Area" = Ausbruch laeuft = folgt dem Regime),
keine unabhaengige Information -> erbt die Regime-Anfaelligkeit von Momentum.
15. verworfener Signal-Eingriff. CLAUDE.md aktualisiert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User will Auto-Eroeffnung bei Empfehlung trotz negativem Backtest -> gebaut,
Default AUS, mit den GEMESSEN besten Parametern statt geratenen:
Entry (_check_auto_signal, [trading] auto_signal=false):
- min_conf=75 + Nacht-Sperre = beste Kombi (H1 -0.053 mildester Verlust,
H2 +0.141 bestes Netto). NICHT weil "mehr Konfidenz besser" -- conf_pct ist
unkalibriert, 75 ist empirisch.
- Nur FLAT, 1x je Signal-Episode (Dedup, re-armt bei WARTEN/Flip), kein Nachkauf,
kein Drehen einer Gegen-Position; erbt Circuit-Breaker + beide Cooldowns.
- Setup-Tag AUTOSIG_<dir> -> in der DB separierbar fuer B4-Monitor.
- Toggle POST /api/autosignal, Button "SIG" (bernstein = gemessen nicht tragfaehig),
neustart-fest via runtime_state.json.
15-Min-Regel (_check_adverse15, adverse_15min_atr=0.5):
- Schwelle GEMESSEN kalibriert: "sobald im Minus" ist die SCHLECHTESTE Variante
(WR 39->31%, Netto -0.067 vs +0.026 ohne); 0.5xATR ist die beste (H1 -0.111
-> -0.079). Netto bringt die Regel ~nichts = Regime-Schutz.
- Nur BOT-eroeffnete Trades (_bot_open_ticket) -- manuelle Diskretion bleibt.
- 1x je Ticket geprueft, Startup-Grace respektiert, closed_by=adverse15.
Verifiziert: 18 synthetische Szenarien (9 Entry + 9 Adverse) alle korrekt;
Live-Neustart ohne Loop-Fehler, Toggle + Persistenz geprueft. v=119.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Wunsch "Trades bei Empfehlung automatisch eroeffnen" -> erst gemessen (B2).
Methodik: echte _build-Logik (kein Nachbau), M30-/H1-Trend aus M5 aggregiert und
in _build gefuettert, sequentielle 1-Positions-Sim, Live-Exit (SL2,0/Trail1,5/
BE1,3/Time-Stop 120min), Echtkosten (Bar-Spread/ATR), 80k M5-Bars, 2 Halbjahre.
Ergebnis: ALLE 8 Varianten (Konf 55/65/70/75 x Nacht-Sperre) fallen durch.
H1 durchgehend NEGATIV -0.076..-0.182 (PF 0.78-0.90)
H2 durchgehend positiv +0.112..+0.167
-> Regime-Kippen, n=718-1167 je Haelfte (keine Stichprobenfrage).
Kontroll-Beleg: der Squeeze laeuft durch DIESELBE Exit-/Kosten-Maschinerie und
ist in H1 +0.187/PF1.29 -> die Sim funktioniert, das Wave-Signal traegt in H1 nicht.
Deckt sich mit dem Live-Dry-Run (WR 29%/PF 0.64).
Nebenbefunde: hoehere Konfidenz hilft NICHT monoton (conf_pct nicht kalibriert);
Nacht-Sperre verbessert konsistent, reicht aber nicht; ein 6k-Vorlauf zeigte
faelschlich "traegt" (n=60-99 = Rauschen) -> kleine Stichprobe haette zum
Fehl-Einbau gefuehrt.
CLAUDE.md aktualisiert (14. verworfener Signal-Eingriff).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- trader: open_time (echte Epoch, Broker-Offset korrigiert) aus position.time,
im Snapshot; nur 1x je Position berechnet, beim Close auf 0.
- _broker_offset_s(sym=None): Symbol explizit uebergebbar -- beim Adoptieren ist
self.symbol noch nicht gesetzt (war Offset 0 -> Zeit 3h in der Zukunft);
zusaetzlich Selbstheilung bei Zukunftswerten.
- app.js/index.html/style.css: Feld #tb-dur + Titel-Uhr #tb-runtime, eigener
1-s-Ticker (flüssig zwischen Snapshots), ab 2h bernstein (Time-Stop-Naehe).
- Verifiziert: Live-Trade 48898382 open_time == Log-Zeile 13:22:48.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Problem: trail.enabled lebte nur im Speicher -> nach jedem restart_server.bat war
das Trailing aus, die (auch per Auto-Squeeze eroeffnete) Position lief nur mit dem
Broker-SL (kein Breakeven/Time-Stop). Die magic-match-Wiedererkennung reaktivierte
es nie; der User musste es manuell einschalten (real 2026-07-29).
Fix:
- emergency_state.json persistiert zusaetzlich "trail" (=trail.enabled) per-Ticket.
- _check_auto_close-Restore-Zweig: erkannte Position + trail war AN -> trail.toggle,
Log "Trailing wiederhergestellt ... nach Neustart". War es AUS (manuelles SL/TP),
bleibt es aus (persistierter Zustand entscheidet, kein TP-Ueberschreiben).
- Change-Detection im _pos_loop persistiert bei jeder Aenderung (auch Selbst-
Deaktivierung bei manueller SL/TP-Erkennung), nur bei Aenderung -> kein I/O je Tick.
Verifiziert: Live-Position 48763789 nach Deploy-Neustart automatisch mit Trailing
wiederhergestellt (Log + Snapshot trail.enabled=True). Keine Loop-Fehler.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- ini sr_close_min_gain_pct 3.0 -> 0: beim Öffnen wird kein Gewinn-Close mehr
automatisch armiert (User-Wunsch). Auto-Notfall-Stop war bereits aus (alle
auto_emergency_* = 0).
- Live-State + runtime_state.json/emergency_state.json genullt (Erb-Falle);
Server neu gestartet, damit pct=0 geladen ist und kein Re-Arm mehr feuert.
- CLAUDE.md aktualisiert (Neustart-Hinweis beim 0-Stellen dokumentiert).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Nach Notfall/SL/Time-Stop/manuellem Close eröffnet der Auto-Squeeze ~3 min
nicht in gleicher Richtung wieder (_SQUEEZE_REENTRY_COOLDOWN_S=180). Verhindert
die Open->Instant-Close-Kaskade bei zu engem Stop (real 27.07. -3-EUR-Stop killte
Entry #1 in 16s, Squeeze noch aktiv -> sofort Re-Entry #2).
- _check_auto_close erfasst Flat-Uebergang (_pos_close_ts/_pos_close_dir via
_open_pos_dir); Squeeze-Entry-Pfad prueft ihn nach dem S/R-Cooldown.
- margin_buffer_pct 80 -> 95 (User-Vorgabe)
- CLAUDE.md aktualisiert
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Engine schreibt die top-2 erkannten Muster als PT;name;dir;trigger;target;status
in sr_levels.csv; SR_Levels.mq5 zeichnet Trigger-/Nackenlinie (rot=bear/gruen=bull,
kraeftig) + gepunktete Ziel-Linie + Label. Reine Anzeige. Indikator nach Update
mit F7 neu kompilieren.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- backtest_patterns.py: misst die Chartmuster (echte patterns.py-Logik), 2 Halbjahre.
Befund: ØR sieht positiv aus, aber Ziel-Trefferquote nur 13-38% → positiver R ist
Trailing-Exit-Artefakt (Breakout+Trailing), KEIN Muster-Edge. Deckt sich mit
backtest_doubletop (Ziel-Exit=negativ). Muster bleiben reine Anzeige; Kontrolle
(generischer Breakout) fehlt noch fuer sauberen Beleg.
- daily_loss_limit_pct=0 (Circuit Breaker auf User-Wunsch wieder deaktiviert).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Erkennt aus M30-Swing-Pivots: Doppeltop/-boden, Kopf-Schulter/inverse SKS,
Tasse+Henkel/invers, auf-/absteigendes+symmetrisches Dreieck. Je Muster Richtung,
Trigger/Nackenlinie, Measured-Move-Ziel, Status (bildet sich/bestätigt/ungültig),
Güte. Dashboard-Karte #card-patterns + Disclaimer (v=116). KEIN Signal, kein
Verdict-Gewicht — Signal-Einfluss erst nach Backtest (Muster-Klasse 2x verworfen,
hohe Beweislast). Live getestet: findet bestätigten Doppeltop.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
User-Ziel autonomes Handeln → Notbremse im Code (vorher abgelehnt, reaktiviert).
Erreicht der Tages-P&L (realisiert+offen) -8% der Balance, schließt der Bot die
Position und sperrt neue Auto-Trades bis zum naechsten Tag. _check_circuit_breaker
im _pos_loop (Startup-Grace, ~30s realized-cache, Berlin-Datum-Reset), blockt
Auto-Squeeze, Snapshot + roter Frontend-Banner (v=115). 80%-Margin bleibt (User).
Mit 5 Szenarien getestet.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Ein manuell gesetzter Notfall-Stop unter dem Minimum wird als "aus" behandelt.
Root-Cause (2026-07-27): User setzte versehentlich -1 €; der Wert lag unter dem
Spread UND vererbte sich per _emergency_remember auf alle Folge-Trades → jeder
neue Trade wurde in Sekunden per Notfall-Close geschlossen ("sofort geschlossen").
Guard in set_emergency, mit 6 Werten getestet. Live-Notfall-Stop zusätzlich auf
0 geräumt.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Befund: nur 46%/60% der echten Durchbrüche haben P≥40% — Durchbrüche sind über
alle P-Stufen verstreut (Basisrate ~37%, AUC ~0,71). Modell kalibriert
(Precision@40% = 53-57%). Schwelle 0,40 würde Abpraller mitlaufen lassen →
außerhalb des validierten 0,50-0,60-Plateaus. sr_close_pbreak bleibt 0,55.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Am selben Tag von 1,0 auf 0,6 zurück — gemischtes Regime (M15/M30 ab, M5/H1
auf) erzeugte gefühlt zu viele WARTEN-Phasen. 0,6 vs 1,0 = Frequenz-gegen-Edge,
gemessen 1,0 netto besser; User priorisiert Frequenz.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- Entry-Raum-Gate 0,6→1,0 (Messung lag vor: beide Hälften besser)
- Konfidenz-Kalibrierung gemessen (analyze_verdict_calibration.py): conf
INVERTIERT zwischen Regimen → keine P(Erfolg)-Aufwertung, kein Konf-Sizing
- verdict_votes-Logging (1×/min) für spätere Copilot/Elliott-Entscheidung
- Order-Dialog zeigt eigenen Ausrichtungs-Split (36/40 Trades ohne Signal: −423€)
- Live-Kosten-Chip (Spread/ATR) im Verdict
- P(break)×Entry-Raum-Freigabe gemessen VERWORFEN (Flip in jeder Schwelle,
backtest_entryroom_pbreak.py) — 13. verworfener Signal-Eingriff
- News-Konflikt-Chip + recommendations.news_score wieder befüllt
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Liegt im validierten Optimum-Plateau 0,50–0,60 (backtest_srclose_prob.py);
Hysterese-Zone verschiebt sich auf 50/60.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
auto_squeeze_skip_night=true (User-Vorgabe): der Bot öffnet nachts keine
autonomen Squeeze-Trades mehr — löst „muss automatisch schließen wenn ich
nicht da bin" durch Nicht-Öffnen, und ist gemessen ohnehin unrentabel
(Nacht-Spread/ATR 0,32–0,50, beide Halbjahre negativ). Tagsüber bleibt der
Auto-Close-Stack (Broker-SL + Trailing + Time-Stop + S/R-Close).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
backtest_squeeze_srclose.py: S/R-Auto-Close auf Squeeze-Trades vs. reiner
Trailing-Exit ist ein Nullsummen-Wash (H1 +7R, H2 −12R) — der P(break)-Gate
lässt echte Runner (P≥60%) laufen, PF/Tail bleiben erhalten. Kein Ausschluss
der Squeeze-Trades vom S/R-Close nötig.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
sr_close_min_gain_pct und auto_emergency_margin_pct auf 0 (User-Vorgabe): beim
Eröffnen einer Position wird nichts mehr automatisch armiert, nur manuell im UI
gesetzte Werte greifen. Mechanik bleibt im Code (reaktivierbar via ini).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Die drei `font:<weight> Npx/…`-Shorthands (.ms-chip/.ms-bos-lbl/.sqm-badge) waren
bei den beiden +2px-Runden ausgelassen worden (Skript erfasste nur `font-size`);
jetzt +4px nachgezogen → wirklich ALLE Schriftgrößen einheitlich +4px.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Alle font-size in style.css (Body-Basis 14→16px) und die Chart-fontSize in app.js
um 2px erhöht (User-Vorgabe „alle Schriftarten +2pt").
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Zeigt die Durchbruchwahrscheinlichkeit fuer das Level, dem sich der Kurs auf der
Gegen-/Stop-Seite der offenen Position naehert (LONG->Support darunter,
SHORT->Resistance darueber) — reine Anzeige, kein Auto-Close. Vorher per
backtest_pbreak_calibration.py belegt: Modell haelt auf der Gegen-Seite
out-of-sample (AUC 0,68/0,72 in beiden Haelften), niedriger P-Bereich kalibriert.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Headless FastAPI-Backend (server.py + core/engine.py) mit Mobile-PWA (web/),
Strategie-/Backtest-Suite und Doku. Secrets, DB, Logs und Laufzeit-State sind
via .gitignore ausgeschlossen; Config-Vorlage: oil_widget_config.ini.example.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>