M15 -> "AT" (Auto Trader), Trail -> "TR", beide als runde Knoepfe neben CB (v=212)
User-Vorgabe. Balance-Feld jetzt: Wert - CB - AT - TR.
M15 heisst "AT" (Auto Trader), die ID wurde von `btn-m15` auf `btn-at`
mitgezogen; Endpoint (/api/autom15) und Backend-Zustand (`auto_m15`) bleiben
unveraendert - nur die Beschriftung und der Platz aendern sich.
Der Trail-Knopf heisst "TR".
⚠ Fuer TR war KEIN Name vorgegeben ("bennene den Trail Button" - der Satz
nennt kein Ziel). "TR" ist analog zu CB/AT gewaehlt, zwei Buchstaben,
Mono-Schrift. Umbenennen ist ein Einzeiler, falls etwas anderes gemeint war.
⚠ Beide VERSCHOBEN, nicht kopiert - zwei Elemente mit derselben ID waeren ein
stiller Fehler, weil getElementById nur das erste findet.
⚠⚠ ZWEI LESARTEN NEBENEINANDER, und das ist Absicht:
CB gruen = AUS (inaktiv, nichts begrenzt) <- ausdrueckliche User-Vorgabe
AT gruen = AN (laeuft)
TR gruen = AN (laeuft)
Drei Knoepfe nebeneinander mit zwei Farb-Bedeutungen sind eine Falle. Deshalb
steht die Begruendung im Markup, in der CSS UND im JS, und jeder Tooltip sagt
ausdruecklich, was SEIN Zustand bedeutet. Wer die CB-Logik spaeter "geradezieht",
soll vorher lesen, dass sie so gewollt ist.
Am ausgelieferten HTML geprueft: Reihenfolge balance -> btn-cb -> btn-at ->
btn-trail, Beschriftungen CB/AT/TR, 0 doppelte IDs, `btn-m15` nicht mehr
vorhanden.
Pipeline A-G gruen, 97 Tests, 14 render*-Funktionen, deployt.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
75e783e882
commit
df7163bf18
+15
-6
@@ -1511,9 +1511,15 @@ function render(d) {
|
|||||||
// Auto-Squeeze-ZUSTAND bleibt in der Breakout-Karte sichtbar -- nur sein
|
// Auto-Squeeze-ZUSTAND bleibt in der Breakout-Karte sichtbar -- nur sein
|
||||||
// Schalter ist weg (jetzt POST-Endpunkt bzw. ini).
|
// Schalter ist weg (jetzt POST-Endpunkt bzw. ini).
|
||||||
const cb = d.circuit_breaker || {};
|
const cb = d.circuit_breaker || {};
|
||||||
const m15b = $streng("btn-m15");
|
const m15b = $streng("btn-at");
|
||||||
if (m15b) {
|
if (m15b) {
|
||||||
m15b.classList.toggle("on", !!d.auto_m15);
|
// ⚠ AT und TR nutzen `an`/`aus` (runde Knoepfe im Balance-Feld).
|
||||||
|
// Farb-Logik hier die UEBLICHE: gruen = an.
|
||||||
|
// ⚠⚠ Der Nachbar CB ist bewusst INVERS (gruen = AUS) — ausdrueckliche
|
||||||
|
// Vorgabe des Nutzers, kein Versehen. Die Tooltips sagen jeweils, was
|
||||||
|
// der Zustand bedeutet.
|
||||||
|
m15b.classList.toggle("an", !!d.auto_m15);
|
||||||
|
m15b.classList.toggle("aus", !d.auto_m15);
|
||||||
m15b.title = d.auto_m15
|
m15b.title = d.auto_m15
|
||||||
? "Auto-Entry auf die gruene M15-Karte AN (" + (d.m15_entry_count || 0)
|
? "Auto-Entry auf die gruene M15-Karte AN (" + (d.m15_entry_count || 0)
|
||||||
+ " Entries). ACHTUNG: gemessen negativ -- reiner Test."
|
+ " Entries). ACHTUNG: gemessen negativ -- reiner Test."
|
||||||
@@ -1536,7 +1542,10 @@ function render(d) {
|
|||||||
// Ausführungs-Achsen gemessen negativ — Markt in allen 8 Feldern, ruhende
|
// Ausführungs-Achsen gemessen negativ — Markt in allen 8 Feldern, ruhende
|
||||||
// Order mit Touch-Fill in allen 6 und dabei schlechter als Markt. Grund
|
// Order mit Touch-Fill in allen 6 und dabei schlechter als Markt. Grund
|
||||||
// strukturell: das Bestätigungs-Level `_pend` WANDERT.
|
// strukturell: das Bestätigungs-Level `_pend` WANDERT.
|
||||||
$("btn-trail").classList.toggle("on", !!(d.trail || {}).enabled);
|
{
|
||||||
|
const trb = $streng("btn-trail"), trAn = !!(d.trail || {}).enabled;
|
||||||
|
if (trb) { trb.classList.toggle("an", trAn); trb.classList.toggle("aus", !trAn); }
|
||||||
|
}
|
||||||
|
|
||||||
// Empfehlungs-Blinken: LONG/SHORT-Button blinkt, sobald die Welle eine
|
// Empfehlungs-Blinken: LONG/SHORT-Button blinkt, sobald die Welle eine
|
||||||
// Richtung empfiehlt (= wie in der Welle-Kachel sichtbar) und keine Position
|
// Richtung empfiehlt (= wie in der Welle-Kachel sichtbar) und keine Position
|
||||||
@@ -2102,9 +2111,9 @@ _updateMuteBtn();
|
|||||||
|
|
||||||
// Toggle-Buttons (AUTO/TRAIL/S-R-Close) — ohne Bestätigung
|
// Toggle-Buttons (AUTO/TRAIL/S-R-Close) — ohne Bestätigung
|
||||||
$("btn-cb").onclick = () => toggle("api/circuit", "Circuit Breaker");
|
$("btn-cb").onclick = () => toggle("api/circuit", "Circuit Breaker");
|
||||||
$("btn-m15").onclick = () => toggle("api/autom15", "M15-Auto-Entry (gemessen negativ!)");
|
$streng("btn-at").onclick = () => toggle("api/autom15", "Auto Trader (gemessen negativ!)");
|
||||||
// (🎯 SIG entfernt 2026-08-12 — s. renderOrderButtons oben)
|
// (🎯 SIG entfernt 2026-08-12 — s. renderOrderButtons oben)
|
||||||
$("btn-trail").onclick = () => toggle("api/trail", "Trailing");
|
$streng("btn-trail").onclick = () => toggle("api/trail", "Trailing");
|
||||||
|
|
||||||
// ⚠ Der Mindestgewinn-Sender ist am 2026-08-21 mit dem S/R-Auto-Close
|
// ⚠ Der Mindestgewinn-Sender ist am 2026-08-21 mit dem S/R-Auto-Close
|
||||||
// entfallen — die Schwelle gab es nur fuer ihn (Endpoint, Feld und
|
// entfallen — die Schwelle gab es nur fuer ihn (Endpoint, Feld und
|
||||||
@@ -2481,7 +2490,7 @@ async function closeSlot(slot, label, pnl) {
|
|||||||
// und der Browser zeigte Altes. Statt das jedes Mal von Hand zu diagnostizieren,
|
// und der Browser zeigte Altes. Statt das jedes Mal von Hand zu diagnostizieren,
|
||||||
// sagt die Seite es jetzt selbst.
|
// sagt die Seite es jetzt selbst.
|
||||||
// ⚠ Bewusst SICHTBAR statt nur Konsole: die Konsole sieht am Handy niemand.
|
// ⚠ Bewusst SICHTBAR statt nur Konsole: die Konsole sieht am Handy niemand.
|
||||||
const _JS_V = "211";
|
const _JS_V = "212";
|
||||||
{
|
{
|
||||||
const htmlV = document.body && document.body.dataset
|
const htmlV = document.body && document.body.dataset
|
||||||
? document.body.dataset.htmlV : null;
|
? document.body.dataset.htmlV : null;
|
||||||
|
|||||||
+9
-6
@@ -12,9 +12,9 @@
|
|||||||
⚠ LOKAL eingebunden, kein CDN: die PWA laeuft ueber WireGuard
|
⚠ LOKAL eingebunden, kein CDN: die PWA laeuft ueber WireGuard
|
||||||
und muss offline funktionieren. -->
|
und muss offline funktionieren. -->
|
||||||
<link rel="stylesheet" href="pico.min.css?v=1">
|
<link rel="stylesheet" href="pico.min.css?v=1">
|
||||||
<link rel="stylesheet" href="style.css?v=211">
|
<link rel="stylesheet" href="style.css?v=212">
|
||||||
</head>
|
</head>
|
||||||
<body data-html-v="211">
|
<body data-html-v="212">
|
||||||
<!-- Modul-Menü (ganz oben) -->
|
<!-- Modul-Menü (ganz oben) -->
|
||||||
<nav id="tabs">
|
<nav id="tabs">
|
||||||
<button class="tab active" data-view="dash">Dashboard</button>
|
<button class="tab active" data-view="dash">Dashboard</button>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
(aktiv, ein Tagesverlust-Limit ist scharf). Bewusst NICHT die
|
(aktiv, ein Tagesverlust-Limit ist scharf). Bewusst NICHT die
|
||||||
uebliche "gruen = geschuetzt"-Lesart — Rot signalisiert hier,
|
uebliche "gruen = geschuetzt"-Lesart — Rot signalisiert hier,
|
||||||
dass eine Automatik eingreifen kann. -->
|
dass eine Automatik eingreifen kann. -->
|
||||||
<div class="px px-cb"><label title="Kontostand ohne die offene Position.">BALANCE</label><span class="px-zeile"><span id="balance">—</span><button class="cb-dot" id="btn-cb" title="Circuit Breaker (Tagesverlust-Stopp) an/aus">CB</button></span></div>
|
<div class="px px-cb"><label title="Kontostand ohne die offene Position.">BALANCE</label><span class="px-zeile"><span id="balance">—</span><button class="cb-dot" id="btn-cb" title="Circuit Breaker (Tagesverlust-Stopp) an/aus">CB</button><button class="cb-dot" id="btn-at" title="AUTO TRADER — Auto-Entry auf die gruene M15-Karte. ⚠ GEMESSEN NEGATIV (OeR -0,162/-0,094, KI ohne Null, schlechter als die HTF-Richtung UND als ihr eigenes Gegenteil) — reiner Test.">AT</button><button class="cb-dot" id="btn-trail" title="TRAILING der offenen Position an/aus. Startet ab 1,3×ATR Gewinn und lockert einen bereits engeren Stop niemals.">TR</button></span></div>
|
||||||
<div class="px"><label title="Realisiertes Ergebnis von heute. Brutto — die Quellensteuer wird größtenteils erstattet und ist hier nicht abgezogen.">TAG P/L</label><span id="day-pl">—</span></div>
|
<div class="px"><label title="Realisiertes Ergebnis von heute. Brutto — die Quellensteuer wird größtenteils erstattet und ist hier nicht abgezogen.">TAG P/L</label><span id="day-pl">—</span></div>
|
||||||
<div class="px"><label title="Kontostand einschließlich der offenen Position.">EQUITY</label><span id="equity">—</span></div>
|
<div class="px"><label title="Kontostand einschließlich der offenen Position.">EQUITY</label><span id="equity">—</span></div>
|
||||||
<div class="px"><label id="hdr-price-lbl" title="Der Kurs, zu dem tatsächlich gehandelt wird. Steht er länger als 3 Minuten still, gilt der Markt als geschlossen und das Label zeigt ZU.">PEPPERSTONE KURS</label><span id="hdr-price">—</span></div>
|
<div class="px"><label id="hdr-price-lbl" title="Der Kurs, zu dem tatsächlich gehandelt wird. Steht er länger als 3 Minuten still, gilt der Markt als geschlossen und das Label zeigt ZU.">PEPPERSTONE KURS</label><span id="hdr-price">—</span></div>
|
||||||
@@ -445,11 +445,14 @@
|
|||||||
backtest_m15_auto.py -> Lesart beidhaelftig negativ (OeR -0,162/
|
backtest_m15_auto.py -> Lesart beidhaelftig negativ (OeR -0,162/
|
||||||
-0,094, PF 0,72/0,84), KI ohne Null, schlechter als die
|
-0,094, PF 0,72/0,84), KI ohne Null, schlechter als die
|
||||||
HTF-Richtung UND als ihr eigenes Gegenteil. Default AUS. -->
|
HTF-Richtung UND als ihr eigenes Gegenteil. Default AUS. -->
|
||||||
<button class="btn tog" id="btn-m15" title="Auto-Entry auf die gruene M15-Karte. ACHTUNG: gemessen negativ (OeR -0,162/-0,094) — reiner Test.">M15</button>
|
<!-- ⚠ M15 heisst seit dem 2026-08-21 "AT" (Auto Trader) und sitzt als
|
||||||
|
runder Knopf im Balance-Feld (User-Vorgabe). VERSCHOBEN, nicht
|
||||||
|
kopiert — zwei Elemente mit derselben ID waeren ein stiller Fehler.
|
||||||
<!-- 🎯 SIG (Auto-Signal-Entry) ENTFERNT 2026-08-12: seit 01.08. aus und auf
|
<!-- 🎯 SIG (Auto-Signal-Entry) ENTFERNT 2026-08-12: seit 01.08. aus und auf
|
||||||
BEIDEN Ausfuehrungs-Achsen gemessen negativ (Markt alle 8 Felder,
|
BEIDEN Ausfuehrungs-Achsen gemessen negativ (Markt alle 8 Felder,
|
||||||
ruhende Order mit Touch-Fill alle 6 und schlechter als Markt). -->
|
ruhende Order mit Touch-Fill alle 6 und schlechter als Markt). -->
|
||||||
<button class="btn tog" id="btn-trail">🎯 TRAIL</button>
|
<!-- ⚠ TRAIL sitzt seit dem 2026-08-21 als runder "TR" im Balance-Feld
|
||||||
|
(User-Vorgabe). VERSCHOBEN, nicht kopiert. -->
|
||||||
</nav>
|
</nav>
|
||||||
|
|
||||||
<!-- Modal (Bestätigung / Token-Eingabe) -->
|
<!-- Modal (Bestätigung / Token-Eingabe) -->
|
||||||
@@ -485,6 +488,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="toast" class="toast hidden"></div>
|
<div id="toast" class="toast hidden"></div>
|
||||||
|
|
||||||
<script src="app.js?v=211"></script>
|
<script src="app.js?v=212"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@@ -779,3 +779,11 @@ main{padding-bottom:4.1111rem} /* Platz für die fixe Leiste */
|
|||||||
.px-cb .cb-dot{width:1.7222rem; height:1.7222rem; font-size:0.6111rem}
|
.px-cb .cb-dot{width:1.7222rem; height:1.7222rem; font-size:0.6111rem}
|
||||||
.cb-dot.inaktiv{background:#0d2a16; border-color:#1a4731; color:#3fb950}
|
.cb-dot.inaktiv{background:#0d2a16; border-color:#1a4731; color:#3fb950}
|
||||||
.cb-dot.aktiv{background:#2d0d0d; border-color:#5c1a1a; color:#f85149}
|
.cb-dot.aktiv{background:#2d0d0d; border-color:#5c1a1a; color:#f85149}
|
||||||
|
|
||||||
|
/* ⚠ AT (Auto Trader) und TR (Trailing) neben CB im Balance-Feld
|
||||||
|
(User 2026-08-21). Farb-Logik hier die UEBLICHE: gruen = AN, grau = aus.
|
||||||
|
⚠⚠ Der Nachbar CB ist bewusst INVERS (gruen = AUS) — ausdrueckliche Vorgabe
|
||||||
|
des Nutzers. Drei Knoepfe nebeneinander mit zwei Lesarten sind eine Falle;
|
||||||
|
deshalb sagt jeder Tooltip, was sein Zustand bedeutet. */
|
||||||
|
.cb-dot.an{background:#0d2a16; border-color:#1a4731; color:#3fb950}
|
||||||
|
.cb-dot.aus{background:var(--surface-2); border-color:var(--border); color:var(--dim)}
|
||||||
|
|||||||
Reference in New Issue
Block a user