Konsens-Zeile korrigiert: falscher Bezug + Nenner passte nicht zu den Chips

User-Fund: "Modul-Konsens: stark LONG · 4/4 Module fuer WARTEN" - dabei sind
9 Module sichtbar. Zwei echte Fehler.

(a) FALSCHER BEZUG: der Text lautete "... Module fuer ${sig}" mit der
HEADLINE als Bezug. Seit dem ref-Fix vom 30.07. zaehlt `agree` bei WARTEN
aber die Uebereinstimmung mit der BIAS-Richtung - deshalb stand dort
"stark LONG ... fuer WARTEN". Die Richtung kommt jetzt als verdict.ref_dir
vom Backend, statt im Frontend aus `bias` nachgebaut zu werden (dort galt
ein +-0,05-Totband, im Backend `bias > 0` - die Nachbildung waere am Rand
auseinandergelaufen; dieselbe Sorte Divergenz wie die fuenf
Deployment-Drift-Faelle desselben Tages).

(b) ANDERER NENNER ALS DIE CHIPS: `total` zaehlt nur Module MIT Aussage
(Gewicht>0, ohne die Welle). Nach den Gewichts-Fixes des Tages schweigen
deutlich mehr Module -> "4/4" bei 9 sichtbaren Chips. Neu ist
verdict.silent (Module mit Gewicht 0) dabei, sodass die Summe aufgeht.

Live verifiziert: "Modul-Konsens: leicht LONG · 3 von 5 stimmberechtigten
fuer LONG (4 ohne Aussage)" - 5 + 4 = 9. Sonderfall "kein Modul mit klarer
Aussage" abgedeckt. v=125.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-31 15:37:37 +02:00
co-authored by Claude Opus 5
parent a1f471f163
commit df092674cb
4 changed files with 52 additions and 7 deletions
+22 -4
View File
@@ -121,10 +121,28 @@ function renderVerdict(v, snap) {
const tag = cr < 0.20 ? "✅ günstig" : cr <= 0.32 ? "· normal" : "⚠ teuer";
costTxt = ` · Kosten ${fmt(cr, 2)}×ATR ${tag}`;
}
$("vd-consensus").textContent =
(sig === "—" ? "keine Daten"
: `Modul-Konsens: ${strength} ${dir} · ${agree}/${total} Module für ${sig}`)
+ costTxt;
// ⚠ Konsens-Zeile korrigiert (2026-07-31). Zwei Fehler waren drin:
// (1) „… Module für ${sig}" nahm die HEADLINE als Bezug. Seit dem Fix vom 30.07.
// zählt `agree` bei WARTEN aber die Übereinstimmung mit der BIAS-Richtung →
// es stand „stark LONG · 4/4 Module für WARTEN". Die Richtung kommt jetzt als
// `ref_dir` vom Backend, statt hier aus `bias` nachgebaut zu werden.
// (2) `total` zählt nur Module MIT Aussage (Gewicht>0, ohne die Welle) — nach den
// Gewichts-Fixes schweigen mehr Module, während 9 Chips sichtbar bleiben.
// „4/4" las sich dadurch widersprüchlich. Jetzt steht dabei, wie viele
// Module gerade nichts sagen.
const refDir = v.ref_dir || null;
const silent = typeof v.silent === "number" ? v.silent : null;
let consensus;
if (sig === "—") {
consensus = "keine Daten";
} else if (!refDir || !total) {
consensus = `Modul-Konsens: ${strength} ${dir} · kein Modul mit klarer Aussage`;
} else {
consensus = `Modul-Konsens: ${strength} ${dir} · ${agree} von ${total} `
+ `stimmberechtigten für ${refDir}`
+ (silent ? ` (${silent} ohne Aussage)` : "");
}
$("vd-consensus").textContent = consensus + costTxt;
$("vd-needle").style.left = ((bias + 1) / 2 * 100).toFixed(1) + "%";
// Modul-Chips
+2 -2
View File
@@ -6,7 +6,7 @@
<meta name="theme-color" content="#0d1117">
<title>Oil · MT5</title>
<link rel="manifest" href="manifest.json">
<link rel="stylesheet" href="style.css?v=124">
<link rel="stylesheet" href="style.css?v=125">
</head>
<body>
<!-- Modul-Menü (ganz oben) -->
@@ -244,6 +244,6 @@
<div id="toast" class="toast hidden"></div>
<script src="lightweight-charts.standalone.production.js?v=114"></script>
<script src="app.js?v=124"></script>
<script src="app.js?v=125"></script>
</body>
</html>