Zwei neue Tabs: "SIG Live" und "SIG Anzeige", Module nach WIRKUNG sortiert
User-Vorgabe. Sortiert wird nicht nach Thema, sondern danach, ob ein Modul die Empfehlung bewegt - und das ist am Code pruefbar: engine._verdict ruft add(name, vote, gewicht, ...); Gewicht > 0 heisst Einfluss auf die Bias-Nadel. SIG Live <- KI-Copilot (Gewicht 1,0) · Chartmuster (_PAT_W = 0,25) SIG Anzeige <- Marktstruktur · Kerzen-Anatomie (gemessen ohne Einfluss) Chartmuster landet damit bewusst in "Live", obwohl die Klasse als Signal verworfen wurde - seit 01.08. hat sie 5 % Stimmanteil. "Gewicht" heisst nicht "belegt"; genau deshalb ist die Trennung nach Wirkung sinnvoll: sie zeigt, was die Empfehlung TATSAECHLICH bewegt, unabhaengig von der Beleglage. Auf dem Dashboard bleiben Trade-Leiste, Gesamtempfehlung, Meldungen und Statistik (live). Die Meldungen-Karte enthaelt zwar einflussreiche Teile (Squeeze-Stimme, S/R-Close-Hinweis, Flip-Close), ist aber der Live-Meldungsstrom zum laufenden Trade und gehoert dorthin, wo gehandelt wird. Reiner Markup-Umzug: showView bildet data-view="siglive" auf #view-siglive ab, keine JS-Aenderung noetig. CSS-Regel analog zum Statistik-Tab, weil beide Views ausserhalb des <main>-Grids liegen. Die verschobenen Bloecke wurden aus git zurueckgeholt statt nachgetippt. Verifiziert am ausgelieferten HTML: 7 Tabs, 7 Views, keine doppelten IDs, keine verwaisten JS-Referenzen, section-Tags balanciert. v=141. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
65e12ab264
commit
a13adb891b
+73
-40
@@ -6,12 +6,18 @@
|
||||
<meta name="theme-color" content="#0d1117">
|
||||
<title>Oil · MT5</title>
|
||||
<link rel="manifest" href="manifest.json">
|
||||
<link rel="stylesheet" href="style.css?v=140">
|
||||
<link rel="stylesheet" href="style.css?v=141">
|
||||
</head>
|
||||
<body>
|
||||
<!-- Modul-Menü (ganz oben) -->
|
||||
<nav id="tabs">
|
||||
<button class="tab active" data-view="dash">Dashboard</button>
|
||||
<!-- Aufteilung nach WIRKUNG (User-Vorgabe 2026-08-05), nicht nach Thema:
|
||||
„SIG Live" = Module MIT Verdict-Gewicht (fließen in die Empfehlung ein),
|
||||
„SIG Anzeige" = gemessen OHNE Einfluss. Die Trennung ist am Code prüfbar
|
||||
(`_verdict`: `add(...)` mit Gewicht > 0), nicht Geschmackssache. -->
|
||||
<button class="tab" data-view="siglive">SIG Live</button>
|
||||
<button class="tab" data-view="siganzeige">SIG Anzeige</button>
|
||||
<button class="tab" data-view="logs">Logs</button>
|
||||
<button class="tab" data-view="stats">Statistik</button>
|
||||
<button class="tab" data-view="charts">Charts</button>
|
||||
@@ -119,47 +125,9 @@
|
||||
<div class="kv"><span>Lauf</span><b id="wave-move">—</b></div>
|
||||
</section>
|
||||
|
||||
<!-- Marktstruktur (M30) — reine Anzeige, kein Signal -->
|
||||
<section class="card wide" id="card-structure">
|
||||
<h2>Marktstruktur <span class="ms-tf">M30</span></h2>
|
||||
<div class="ms-top">
|
||||
<span class="ms-trend" id="ms-trend">—</span>
|
||||
<div class="ms-swings" id="ms-swings"></div>
|
||||
</div>
|
||||
<div class="ms-bos" id="ms-bos"></div>
|
||||
<div class="ms-chan" id="ms-chan">
|
||||
<div class="ms-chan-head"><span id="ms-chan-dir">—</span>
|
||||
<span class="ms-chan-note" id="ms-chan-note"></span></div>
|
||||
<div class="ms-chan-track"><div class="ms-chan-fill" id="ms-chan-fill"></div>
|
||||
<div class="ms-chan-dot" id="ms-chan-dot"></div></div>
|
||||
<div class="ms-chan-scale"><span>Kanal unten</span><span>oben</span></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Chartmuster (visuell) — reine Anzeige, kein Signal (noch nicht backtestet) -->
|
||||
<section class="card wide" id="card-patterns">
|
||||
<h2>Chartmuster <span class="pt-tf">M30 · visuell</span></h2>
|
||||
<div class="pt-list" id="pt-list"><span class="dim">—</span></div>
|
||||
</section>
|
||||
|
||||
<!-- Kerzen-Anatomie (M5) — reine Anzeige; die Lehrbuch-Deutung ist gemessen
|
||||
invertiert, deshalb steht die GEMESSENE Lesart im Hinweistext -->
|
||||
<section class="card wide" id="card-candles">
|
||||
<h2>Kerzen-Anatomie <span class="ca-tf">M5 · nur Anzeige</span></h2>
|
||||
<div class="ca-list" id="ca-list"><span class="dim">—</span></div>
|
||||
</section>
|
||||
|
||||
<!-- Karte „Erwartete Spanne" ENTFERNT 2026-08-05 (User-Vorgabe) — die Kernwerte
|
||||
stehen jetzt komprimiert in der Gesamtempfehlung (`#vd-cone`). Backend
|
||||
(`core/cone.py`, Snapshot `cone`, MT5-Export `CN;…`) ist unverändert aktiv. -->
|
||||
<!-- KI-Agent -->
|
||||
<section class="card wide" id="card-agent">
|
||||
<h2>KI-Copilot</h2>
|
||||
<div class="signal" id="agent-bias">◌ —</div>
|
||||
<div class="agent-head" id="agent-head"></div>
|
||||
<div class="agent-text" id="agent-reason"></div>
|
||||
<ul class="risks" id="agent-risks"></ul>
|
||||
</section>
|
||||
|
||||
<!-- Trailing (Dashboard-Kachel ausgeblendet 2026-07-22, User-Vorgabe; Backend/
|
||||
Logik unverändert aktiv, nur die Anzeige raus) -->
|
||||
@@ -179,6 +147,71 @@
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<!-- ══ SIG LIVE — Module MIT Verdict-Gewicht (fließen in die Empfehlung ein) ══
|
||||
Die Zuordnung ist am Code prüfbar: `engine._verdict` ruft `add(name, vote,
|
||||
gewicht, …)`. Wer hier steht, hat ein Gewicht > 0 und verschiebt die
|
||||
Bias-Nadel. ⚠ Gewicht heißt NICHT „belegt": der KI-Copilot ist gemessen
|
||||
nicht robust prädiktiv, hat aber Stimmrecht — genau deshalb ist die
|
||||
Trennung nach WIRKUNG und nicht nach Beleglage sinnvoll. -->
|
||||
<section id="view-siglive" class="view hidden">
|
||||
<div class="view-head">
|
||||
<h2>SIG Live</h2>
|
||||
<span class="view-note">Module mit Einfluss auf die Gesamtempfehlung</span>
|
||||
</div>
|
||||
|
||||
<!-- KI-Agent — Verdict-Gewicht 1,0 bei gerichteter Aussage, 0 bei NEUTRAL -->
|
||||
<section class="card wide" id="card-agent">
|
||||
<h2>KI-Copilot <span class="ca-tf">Gewicht 1,0</span></h2>
|
||||
<div class="signal" id="agent-bias">◌ —</div>
|
||||
<div class="agent-head" id="agent-head"></div>
|
||||
<div class="agent-text" id="agent-reason"></div>
|
||||
<ul class="risks" id="agent-risks"></ul>
|
||||
</section>
|
||||
|
||||
<!-- Chartmuster — Verdict-Gewicht `_PAT_W`=0,25 (User-Vorgabe „5 %" 2026-08-01);
|
||||
`forming` zählt halb. Deshalb LIVE, nicht Anzeige. -->
|
||||
<section class="card wide" id="card-patterns">
|
||||
<h2>Chartmuster <span class="pt-tf">M30 · Gewicht 0,25</span></h2>
|
||||
<div class="pt-list" id="pt-list"><span class="dim">—</span></div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- ══ SIG ANZEIGE — gemessen OHNE Einfluss auf die Empfehlung ══════════════
|
||||
Kein Verdict-Gewicht, kein Trade-Trigger. Beide Module wurden als Signal
|
||||
gemessen und verworfen; sie bleiben als Kontext, nicht als Entscheidung. -->
|
||||
<section id="view-siganzeige" class="view hidden">
|
||||
<div class="view-head">
|
||||
<h2>SIG Anzeige</h2>
|
||||
<span class="view-note">reine Anzeige — gemessen ohne Einfluss</span>
|
||||
</div>
|
||||
|
||||
<!-- Marktstruktur (M30) — Signalvariante gemessen verworfen
|
||||
(backtest_structure.py + backtest_structure_tf.py: 24/24 Zellen negativ) -->
|
||||
<section class="card wide" id="card-structure">
|
||||
<h2>Marktstruktur <span class="ms-tf">M30 · nur Anzeige</span></h2>
|
||||
<div class="ms-top">
|
||||
<span class="ms-trend" id="ms-trend">—</span>
|
||||
<div class="ms-swings" id="ms-swings"></div>
|
||||
</div>
|
||||
<div class="ms-bos" id="ms-bos"></div>
|
||||
<div class="ms-chan" id="ms-chan">
|
||||
<div class="ms-chan-head"><span id="ms-chan-dir">—</span>
|
||||
<span class="ms-chan-note" id="ms-chan-note"></span></div>
|
||||
<div class="ms-chan-track"><div class="ms-chan-fill" id="ms-chan-fill"></div>
|
||||
<div class="ms-chan-dot" id="ms-chan-dot"></div></div>
|
||||
<div class="ms-chan-scale"><span>Kanal unten</span><span>oben</span></div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Kerzen-Anatomie (M5) — 3× als Signal gemessen und verworfen; die
|
||||
Lehrbuch-Deutung ist invertiert, deshalb steht die GEMESSENE Lesart im
|
||||
Hinweistext und die Kachel ist bewusst neutral gefärbt. -->
|
||||
<section class="card wide" id="card-candles">
|
||||
<h2>Kerzen-Anatomie <span class="ca-tf">M5 · nur Anzeige</span></h2>
|
||||
<div class="ca-list" id="ca-list"><span class="dim">—</span></div>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<!-- Logs -->
|
||||
<section id="view-logs" class="view hidden">
|
||||
<div class="view-head">
|
||||
@@ -289,6 +322,6 @@
|
||||
<div id="toast" class="toast hidden"></div>
|
||||
|
||||
<script src="lightweight-charts.standalone.production.js?v=114"></script>
|
||||
<script src="app.js?v=140"></script>
|
||||
<script src="app.js?v=141"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
+9
-2
@@ -102,8 +102,15 @@ main{display:grid;grid-template-columns:1fr 1fr;gap:11px;padding:11px}
|
||||
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 */
|
||||
#view-stats > .card,
|
||||
#view-siglive > .card,
|
||||
#view-siganzeige > .card{margin:11px 10px}
|
||||
#view-stats > .card:last-child,
|
||||
#view-siglive > .card:last-child,
|
||||
#view-siganzeige > .card:last-child{margin-bottom:74px} /* Platz für die fixe Leiste */
|
||||
/* Untertitel in der View-Kopfzeile: sagt in einem Halbsatz, wonach der Tab
|
||||
sortiert ist — ohne ihn ist „SIG Live" vs. „SIG Anzeige" nicht selbsterklärend. */
|
||||
.view-note{font-size:12px;color:var(--dim);margin-left:auto}
|
||||
.card h2{margin:0 0 9px;font-size:14px;letter-spacing:1.5px;
|
||||
text-transform:uppercase;color:var(--dim);font-weight:600}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user