Widerspruch "stark LONG" bei WARTEN aufgeloest (v=149)

User-Fund: Headline "◌ WARTEN · M30", darunter "stark LONG · 2 von 2
stimmberechtigten fuer LONG (7 ohne Aussage)". Beide Zahlen stimmten, die
Kombination war irrefuehrend. Zwei Ursachen:

(1) Die Headline nannte den Grund nicht. Er stand im Snapshot
    (wave_signal.block = min_conf, conf 49 gegen 55 % — die Welle HATTE eine
    LONG-Richtung, ihr fehlten sechs Punkte), gerendert wurde er aber nur bei
    breakout_pending. ⚠ Meine Luecke vom 06.08.: ich habe die Tages-Verteilung
    (#vd-blocks) gebaut und den AKTUELLEN Grund vergessen. Jetzt Mapping fuer
    alle neun Gate-Codes an der Headline.

(2) "2 von 2" las sich wie Einstimmigkeit — es waren 2 von 7 sichtbaren
    Modulen (H1 1,5 und Liq-Trend 0,5), und die Welle, die als einzige die
    Order steuert, war nicht dabei. bias=1,0 ist arithmetisch korrekt, aber die
    Basis war winzig. Das Entmachten von Elliott/Orderbuch hat das Problem
    nicht erzeugt, aber verschaerft.
    Neu: Zeile fuehrt mit der Basis, "stark/leicht" entfaellt solange weniger
    als die Haelfte der Module spricht, stumme Welle wird ausdruecklich genannt.

Live gegengerechnet:
  "◌ WARTEN · M30  ·  Konfidenz 49 % < 55 % — Setup zu schwach"
  "2 von 7 Modulen sprechen, alle fuer LONG · die Welle ... schweigt"

Reine Anzeige — Gewichte, Gates und Order-Logik unveraendert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-07 00:04:46 +02:00
co-authored by Claude Opus 5
parent cf94679022
commit 4155afb434
3 changed files with 66 additions and 7 deletions
+26 -1
View File
@@ -3773,7 +3773,32 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
GESAMTEN Render ab (s. Cache-Regel oben), das Dashboard wäre eingefroren. GESAMTEN Render ab (s. Cache-Regel oben), das Dashboard wäre eingefroren.
Gegenprobe eingebaut: alle `$("id")`-Zugriffe der `app.js` gegen die IDs der Gegenprobe eingebaut: alle `$("id")`-Zugriffe der `app.js` gegen die IDs der
`index.html` geprüft — **0 verwaiste Referenzen**. `index.html` geprüft — **0 verwaiste Referenzen**.
- Asset-Version aktuell **v=148** (in `web/index.html` hochzählen, siehe Workflows). - **⚠⚠ „stark LONG" bei WARTEN — der scheinbare Widerspruch aufgelöst
(User-Fund 2026-08-07, v=149).** Reale Anzeige: Headline `◌ WARTEN · M30`,
darunter „Modul-Konsens: stark LONG · **2 von 2** stimmberechtigten für LONG
(7 ohne Aussage)". Beide Zahlen stimmten, die Kombination war trotzdem
irreführend. Zwei Ursachen, beide behoben:
**(1) Die Headline nannte den Grund nicht.** Der Block stand im Snapshot
(`wave_signal.block = min_conf`, conf 49 gegen die 55-%-Schwelle — die Welle
HATTE eine LONG-Richtung, ihr fehlten sechs Punkte), gerendert wurde er aber
**nur bei `breakout_pending`**. Bei jedem anderen Gate blieb ein nacktes
„WARTEN" stehen. ⚠ Das war meine Lücke vom 06.08.: ich habe die
**Tages-Verteilung** (`#vd-blocks`) gebaut und den **aktuellen** Grund
vergessen. Jetzt steht er an der Headline: „◌ WARTEN · M30 · Konfidenz 49 % <
55 % — Setup zu schwach" (Mapping für alle neun Gate-Codes).
**(2) „2 von 2" las sich wie Einstimmigkeit.** Es waren **2 von 7** sichtbaren
Modulen — H1 (1,5) und Liq-Trend (0,5) — und die **Welle**, die als einzige die
Order steuert, war nicht dabei. `bias = 1,0` ist arithmetisch korrekt (das
gesamte *sprechende* Gewicht war einig), aber die Basis war winzig. Seit dem
Entmachten von Elliott und Orderbuch (06.08.) tritt das häufiger auf — die
Änderung hat das Problem nicht erzeugt, aber verschärft.
**Neu:** die Zeile führt mit der Basis („2 von 7 Modulen sprechen, alle für
LONG"), das Wort „stark/leicht" entfällt, solange **weniger als die Hälfte**
der Module spricht, und eine stumme Welle wird ausdrücklich genannt
(„⚠ die Welle (steuert die Order) schweigt").
Live gegengerechnet, beide Zeilen erscheinen wie beabsichtigt.
⚠ Reine Anzeige — an Gewichten, Gates und Order-Logik ist nichts geändert.
- Asset-Version aktuell **v=149** (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`
+38 -4
View File
@@ -107,8 +107,28 @@ function renderVerdict(v, snap) {
// Stelle, an der der scheinbare Widerspruch entsteht. Jetzt steht er direkt an der // Stelle, an der der scheinbare Widerspruch entsteht. Jetzt steht er direkt an der
// Headline: „◌ WARTEN · M15 · LONG, noch 0.11 bis zur Bestätigung". // Headline: „◌ WARTEN · M15 · LONG, noch 0.11 bis zur Bestätigung".
const bo = (snap && snap.wave && snap.wave.breakout) || null; const bo = (snap && snap.wave && snap.wave.breakout) || null;
const wsig = (snap && snap.wave_signal) || {};
if (sig === "WARTEN" && bo && bo.pending && bo.dir) { if (sig === "WARTEN" && bo && bo.pending && bo.dir) {
head += ` · ${bo.dir}, noch ${fmt(bo.need, 2)} bis zur Bestätigung`; head += ` · ${bo.dir}, noch ${fmt(bo.need, 2)} bis zur Bestätigung`;
} else if (sig === "WARTEN" && wsig.block) {
// ⚠ ERGÄNZUNG 2026-08-07: bisher stand der Grund NUR bei
// `breakout_pending` an der Headline — bei jedem anderen Gate blieb dort
// ein nacktes „WARTEN", während die Konsens-Zeile darunter „stark LONG"
// meldete. Genau dieser Widerspruch war der Anlass. Der Grund liegt im
// Snapshot (`wave_signal.block`), er wurde nur nie gezeigt.
const G = {
min_conf: `Konfidenz ${wsig.conf_pct || 0} % < 55 % — Setup zu schwach`,
entry_room: "kein Raum bis zum Gegenlevel",
htf_counter: "höhere Zeitebene steht dagegen",
stretch: "Kurs zu weit von der EMA entfernt",
deadband: "Totband — kein klarer Trend",
dead_hour: "gesperrte Handelsstunde",
eia: "EIA-Blackout",
stale: "Kursdaten veraltet",
no_data: "keine Daten",
};
const g = G[wsig.block] || wsig.block;
if (g) head += ` · ${g}`;
} }
$("vd-signal").textContent = head; $("vd-signal").textContent = head;
@@ -144,15 +164,29 @@ function renderVerdict(v, snap) {
// Module gerade nichts sagen. // Module gerade nichts sagen.
const refDir = v.ref_dir || null; const refDir = v.ref_dir || null;
const silent = typeof v.silent === "number" ? v.silent : null; const silent = typeof v.silent === "number" ? v.silent : null;
// ⚠⚠ KORREKTUR 2026-08-07. „stark LONG · 2 von 2 stimmberechtigten" las sich
// wie Einstimmigkeit — dabei sprachen nur 2 von 9 Modulen, und die WELLE, die
// als einzige die Order steuert, war nicht dabei. `bias` ist arithmetisch
// richtig (das gesamte sprechende Gewicht war einig), aber die BASIS war
// winzig. Seit dem Entmachten von Elliott und Orderbuch (06.08.) trat das
// häufiger auf. Jetzt führt die Zeile mit der Basis und nennt die stumme
// Welle ausdrücklich — das löst den scheinbaren Widerspruch zur Headline auf.
const welleStumm = (v.votes || []).some(
m => m.name === "Welle" && !Number(m.weight));
const nMod = (v.votes || []).filter(m => m.used !== false).length;
let consensus; let consensus;
if (sig === "—") { if (sig === "—") {
consensus = "keine Daten"; consensus = "keine Daten";
} else if (!refDir || !total) { } else if (!refDir || !total) {
consensus = `Modul-Konsens: ${strength} ${dir} · kein Modul mit klarer Aussage`; consensus = "Modul-Konsens: kein Modul mit klarer Aussage";
} else { } else {
consensus = `Modul-Konsens: ${strength} ${dir} · ${agree} von ${total} ` // „stark/leicht" nur noch, wenn ueberhaupt die Haelfte der Module spricht —
+ `stimmberechtigten für ${refDir}` // sonst beschreibt das Wort die Einigkeit von zwei Nebenstimmen.
+ (silent ? ` (${silent} ohne Aussage)` : ""); const dueneBasis = nMod && total < nMod / 2;
consensus = `Modul-Konsens: ${agree} von ${nMod} Modulen sprechen, `
+ `${agree === total ? "alle" : `${agree} davon`} für ${refDir}`
+ (dueneBasis ? "" : ` · ${strength} ${dir}`);
if (welleStumm) consensus += " · ⚠ die Welle (steuert die Order) schweigt";
} }
$("vd-consensus").textContent = consensus + costTxt; $("vd-consensus").textContent = consensus + costTxt;
$("vd-needle").style.left = ((bias + 1) / 2 * 100).toFixed(1) + "%"; $("vd-needle").style.left = ((bias + 1) / 2 * 100).toFixed(1) + "%";
+2 -2
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=148"> <link rel="stylesheet" href="style.css?v=149">
</head> </head>
<body> <body>
<!-- Modul-Menü (ganz oben) --> <!-- Modul-Menü (ganz oben) -->
@@ -330,6 +330,6 @@
</div> </div>
<div id="toast" class="toast hidden"></div> <div id="toast" class="toast hidden"></div>
<script src="app.js?v=148"></script> <script src="app.js?v=149"></script>
</body> </body>
</html> </html>