Manuelle Trades, Letzte Trades und Kurslueken in den Statistik-Tab verschoben

User-Vorgabe: die drei sind Rueckschau, das Dashboard soll das
Handlungsrelevante zeigen. Reiner Umzug im Markup - keine Logik beruehrt.
Die Karten werden weiterhin von render() aus dem Snapshot gefuettert und
haengen NICHT an loadStats(); ein ausgeblendeter View ist nur display:none,
die Elemente bleiben im DOM.

Noetig war eine CSS-Regel: #view-stats > .card{margin:11px 10px}. Das
Dashboard ist ein <main>-GRID mit eigenem Padding, #view-stats eine schlichte
<section> - ohne die Regel klebten die Karten randlos aneinander und
.card.wide{grid-column:1/-1} liefe ins Leere.

Verifiziert am ausgelieferten HTML (alle drei nach id="view-stats",
card-stats-live bleibt im Dashboard), keine doppelten IDs, Tag-Balance
geprueft. v=138.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-05 09:10:25 +02:00
co-authored by Claude Opus 5
parent 5f70980e59
commit 43b7756df3
3 changed files with 53 additions and 26 deletions
+16 -2
View File
@@ -2248,7 +2248,21 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
`recommendations.news_score` seit 2026-07-24 wieder BEFÜLLT (war auf None `recommendations.news_score` seit 2026-07-24 wieder BEFÜLLT (war auf None
degradiert) → in ein paar Monaten messbar. degradiert) → in ein paar Monaten messbar.
- **Karten** (Dashboard, von oben): Gesamtempfehlung · **Meldungen** · Marktstruktur · - **Karten** (Dashboard, von oben): Gesamtempfehlung · **Meldungen** · Marktstruktur ·
KI-Copilot · Letzte Trades · Kurslücken · **Statistik (live) ganz unten**. Chartmuster · Kerzen-Anatomie · Erwartete Spanne · KI-Copilot ·
**Statistik (live) ganz unten**.
⚠ **Drei Karten am 2026-08-05 in den Statistik-Tab verschoben (User-Vorgabe,
v=138): „Manuelle Trades" (`#card-manual`), „Letzte Trades" (`#card-trades`) und
„Kurslücken" (`#card-gaps`)** — sie sind Rückschau, das Dashboard soll das
Handlungsrelevante zeigen. **Reiner Umzug im Markup**, keine Logik berührt: die
drei werden weiterhin von `render()` aus dem Snapshot gefüttert und hängen NICHT
an `loadStats()`; ein ausgeblendeter View ist nur `display:none`, die Elemente
bleiben im DOM (sonst wären ihre IDs beim Rendern weg — genau die Null-Falle aus
der Cache-Regel). ⚠ Dazu nötig: **`#view-stats > .card{margin:11px 10px}`** in
`style.css` — das Dashboard ist ein `<main>`-GRID mit eigenem Padding, `#view-stats`
eine schlichte `<section>`; ohne die Regel klebten die Karten randlos aneinander
und `.card.wide{grid-column:1/-1}` liefe ins Leere. Verifiziert am ausgelieferten
HTML (alle drei nach `id="view-stats"`, `#card-stats-live` bleibt im Dashboard),
keine doppelten IDs, Tag-Balance geprüft.
(Tagesziele-Kachel **entfernt** 2026-07-13. **Welle-Karte komplett entfernt (Tagesziele-Kachel **entfernt** 2026-07-13. **Welle-Karte komplett entfernt
2026-07-15** — TF-Ampel wanderte in die Gesamtempfehlung, die Wellen-Meldungen 2026-07-15** — TF-Ampel wanderte in die Gesamtempfehlung, die Wellen-Meldungen
[Squeeze/Überdehnung/Setup/Lauf/Gründe] in die **„Meldungen"-Karte** (`#card-pos`, [Squeeze/Überdehnung/Setup/Lauf/Gründe] in die **„Meldungen"-Karte** (`#card-pos`,
@@ -2828,7 +2842,7 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
Signal → **Hinweis-Dialog „trotzdem eröffnen?"** (überschreibbar). CLOSE bei Signal → **Hinweis-Dialog „trotzdem eröffnen?"** (überschreibbar). CLOSE bei
**negativem** P&L → Sicherheitsabfrage; im Plus/Breakeven direkt. Sonst keine **negativem** P&L → Sicherheitsabfrage; im Plus/Breakeven direkt. Sonst keine
Token-Dialoge (`require_token=false`). Audio braucht 1× Nutzer-Tap. Token-Dialoge (`require_token=false`). Audio braucht 1× Nutzer-Tap.
- Asset-Version aktuell **v=136** (in `web/index.html` hochzählen, siehe Workflows). - Asset-Version aktuell **v=138** (in `web/index.html` hochzählen, siehe Workflows).
Schriftgrößen 2026-07-24 global **+4px** (2× je +2px auf User-Wunsch; Body-Basis Schriftgrößen 2026-07-24 global **+4px** (2× je +2px auf User-Wunsch; Body-Basis
14→18px). ⚠ Betrifft in `style.css` sowohl `font-size:Npx` (71×) ALS AUCH die 14→18px). ⚠ Betrifft in `style.css` sowohl `font-size:Npx` (71×) ALS AUCH die
`font:<weight> Npx/…`-**Shorthand** (3×: `.ms-chip`/`.ms-bos-lbl`/`.sqm-badge` `font:<weight> Npx/…`-**Shorthand** (3×: `.ms-chip`/`.ms-bos-lbl`/`.sqm-badge`
+31 -24
View File
@@ -6,7 +6,7 @@
<meta name="theme-color" content="#0d1117"> <meta name="theme-color" content="#0d1117">
<title>Oil · MT5</title> <title>Oil · MT5</title>
<link rel="manifest" href="manifest.json"> <link rel="manifest" href="manifest.json">
<link rel="stylesheet" href="style.css?v=137"> <link rel="stylesheet" href="style.css?v=138">
</head> </head>
<body> <body>
<!-- Modul-Menü (ganz oben) --> <!-- Modul-Menü (ganz oben) -->
@@ -124,16 +124,6 @@
</div> </div>
</section> </section>
<!-- Manuelle Trades — deskriptiv (2026-08-04). Zeigt die EIGENE Historie,
rechnet nichts hoch. Der volle Entscheidungskontext (ctx_*) wird erst
seit dem 04.08. mitgeschrieben; die Reifegrad-Zeile macht das sichtbar. -->
<section class="card wide" id="card-manual">
<h2>Manuelle Trades <span class="mt-sub">deine Historie · 30 Tage</span></h2>
<div class="mt-grid" id="mt-grid"></div>
<div class="mt-split" id="mt-split"></div>
<div class="mt-note dim" id="mt-note"></div>
</section>
<!-- Chartmuster (visuell) — reine Anzeige, kein Signal (noch nicht backtestet) --> <!-- Chartmuster (visuell) — reine Anzeige, kein Signal (noch nicht backtestet) -->
<section class="card wide" id="card-patterns"> <section class="card wide" id="card-patterns">
<h2>Chartmuster <span class="pt-tf">M30 · visuell</span></h2> <h2>Chartmuster <span class="pt-tf">M30 · visuell</span></h2>
@@ -174,18 +164,6 @@
<div class="kv"><span>ATR · TF</span><b id="trail-atr"></b></div> <div class="kv"><span>ATR · TF</span><b id="trail-atr"></b></div>
</section> </section>
<!-- Letzte Trades -->
<section class="card wide" id="card-trades">
<h2>Letzte Trades</h2>
<div class="trades" id="trades"></div>
</section>
<!-- Kurslücken (Gaps) — Fill-Magnete, nur Kontext -->
<section class="card wide" id="card-gaps">
<h2>Kurslücken (Gaps 2026)</h2>
<div class="gaps-list" id="gaps-list"><span class="dim">lade …</span></div>
</section>
<!-- Live-Statistik — ganz unten --> <!-- Live-Statistik — ganz unten -->
<section class="card wide" id="card-stats-live"> <section class="card wide" id="card-stats-live">
<h2>Statistik (live)</h2> <h2>Statistik (live)</h2>
@@ -212,6 +190,35 @@
<div id="stats-body"></div> <div id="stats-body"></div>
<h2 class="sub-h">Setups (gesamt)</h2> <h2 class="sub-h">Setups (gesamt)</h2>
<div id="stats-setups"></div> <div id="stats-setups"></div>
<!-- ⚠ Aus dem Dashboard hierher verschoben (User-Vorgabe 2026-08-05): das
Dashboard soll die HANDLUNGSrelevanten Module zeigen, die Rückschau
gehört in die Statistik. Die drei Karten werden weiterhin von `render()`
aus dem Snapshot gefüttert — sie hängen NICHT an `loadStats()`. Das
funktioniert, weil ein ausgeblendeter View nur `display:none` ist und
die Elemente im DOM bleiben; sonst würden die IDs beim Rendern fehlen. -->
<!-- Manuelle Trades — deskriptiv (2026-08-04). Zeigt die EIGENE Historie,
rechnet nichts hoch. Der volle Entscheidungskontext (ctx_*) wird erst
seit dem 04.08. mitgeschrieben; die Reifegrad-Zeile macht das sichtbar. -->
<section class="card wide" id="card-manual">
<h2>Manuelle Trades <span class="mt-sub">deine Historie · 30 Tage</span></h2>
<div class="mt-grid" id="mt-grid"></div>
<div class="mt-split" id="mt-split"></div>
<div class="mt-note dim" id="mt-note"></div>
</section>
<!-- Letzte Trades -->
<section class="card wide" id="card-trades">
<h2>Letzte Trades</h2>
<div class="trades" id="trades"></div>
</section>
<!-- Kurslücken (Gaps) — Fill-Magnete, nur Kontext -->
<section class="card wide" id="card-gaps">
<h2>Kurslücken (Gaps 2026)</h2>
<div class="gaps-list" id="gaps-list"><span class="dim">lade …</span></div>
</section>
</section> </section>
<!-- Charts: M1/M5/M15/M30/H1 untereinander mit Trend (Lightweight Charts) --> <!-- Charts: M1/M5/M15/M30/H1 untereinander mit Trend (Lightweight Charts) -->
@@ -274,6 +281,6 @@
<div id="toast" class="toast hidden"></div> <div id="toast" class="toast hidden"></div>
<script src="lightweight-charts.standalone.production.js?v=114"></script> <script src="lightweight-charts.standalone.production.js?v=114"></script>
<script src="app.js?v=137"></script> <script src="app.js?v=138"></script>
</body> </body>
</html> </html>
+6
View File
@@ -98,6 +98,12 @@ main{display:grid;grid-template-columns:1fr 1fr;gap:11px;padding:11px}
.card{background:var(--card);border:1px solid var(--border); .card{background:var(--card);border:1px solid var(--border);
border-radius:var(--r-lg);padding:12px 14px;box-shadow:var(--shadow-sm)} border-radius:var(--r-lg);padding:12px 14px;box-shadow:var(--shadow-sm)}
.card.wide{grid-column:1 / -1} .card.wide{grid-column:1 / -1}
/* Karten AUSSERHALB des Dashboard-Grids (Statistik-Tab, 2026-08-05): `main` ist
ein Grid mit eigenem padding, `#view-stats` ist eine schlichte <section> — ohne
diese Regel klebten die verschobenen Karten randlos aneinander und `.wide`
(grid-column) liefe ins Leere. */
#view-stats > .card{margin:11px 10px}
#view-stats > .card:last-child{margin-bottom:74px} /* Platz für die fixe Leiste */
.card h2{margin:0 0 9px;font-size:14px;letter-spacing:1.5px; .card h2{margin:0 0 9px;font-size:14px;letter-spacing:1.5px;
text-transform:uppercase;color:var(--dim);font-weight:600} text-transform:uppercase;color:var(--dim);font-weight:600}