S/R-Auto-Close-Schalter in die Aktionsleiste + Doku nachgetragen (v=178)

Den S/R-Schalter gab es nur in der Trade-Leiste -- die ist aber nur bei OFFENER
Position sichtbar, also genau dann nicht, wenn man ihn VOR einem Trade setzen
will. Jetzt zusaetzlich in der Aktionsleiste neben STOPP. Der alte Knopf bleibt;
beide lesen auto_sr_close aus demselben Snapshot und koennen nicht
auseinanderlaufen. Live getestet: aus -> an, Endzustand AN.

Ausserdem die Doku zu den heutigen UI-/Telegram-Aenderungen nachgetragen, die
beim vorigen Versuch am Encoding-Fehler gescheitert war -- inklusive der Lehre:
Emoji nie als getrennte Unicode-Escapes, immer erst nach .tmp schreiben und die
Groesse gegen das Original pruefen, und eine Syntaxpruefung ersetzt die
Groessenpruefung nicht (eine leere Datei besteht node --check und jeden Hook).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-19 17:06:49 +02:00
co-authored by Claude Opus 5
parent 880bf1075e
commit c0293ece01
3 changed files with 62 additions and 2 deletions
+45
View File
@@ -7434,6 +7434,51 @@ vollständig.
**Verifikation der Zustellung steht aus** — sie erfolgt mit dem Report am
nächsten Morgen um 07:30. Die Bausteine sind einzeln live gegengeprüft.
## ✅ UI AUFGERÄUMT, TELEGRAM AUF CLOSES, ZWEI SCHALTER (User 2026-08-19, v=178)
**(1) Einsatz-Felder entfernt.** ⚠ Backend bleibt vollständig; die Werte leben
in `runtime_state.json` UND der ini (40 %). **Folge: ohne UI ändert man den
Prozentsatz nur über die ini + Neustart.**
**(2) BRK-Schalter raus, STOPP (Circuit-Breaker) rein.**
⚠⚠ **Bewusster Tausch mit Konsequenz:** der An/Aus-Schalter des **autonomen**
Pfads ist aus der App verschwunden — BRK läuft, stoppen lässt er sich nur noch
per `POST /api/autosqueeze` oder ini+Neustart. Sein **Zustand** bleibt in der
Breakout-Karte sichtbar. Dafür ist die **Notbremse** bedienbar, die am 17.08.
real ausgelöst hat. `set_circuit_breaker` + `POST /api/circuit` + Persistenz
(`cb_limit_pct`/`cb_remember`) — ⚠ der Breaker hat keinen eigenen Bool, er lebt
in `_cb_limit_pct` (0 = aus); **ohne das Gedächtnis wäre die Prozentzahl nach
einmal Ausschalten für immer weg.**
**(3) S/R-Auto-Close jetzt auch in der Aktionsleiste** (`#btn-sr`). Den Schalter
gab es nur in der **Trade-Leiste** — die ist aber nur bei OFFENER Position
sichtbar, also genau dann nicht, wenn man ihn **vor** einem Trade setzen will.
Der alte Knopf bleibt; beide lesen `auto_sr_close` aus demselben Snapshot und
können nicht auseinanderlaufen.
**(4) Telegram nur noch bei geschlossenen Trades.**
**EINE Filterstelle statt 17 Einzeleingriffe:** `send_telegram` ist jetzt ein
Filter vor `_send_telegram_roh`, `_TG_ERLAUBT = ("Trade geschlossen",)`. Alle
Sender bleiben stehen. **Umkehren = Liste erweitern.** Rückgabe `False` für
Unterdrücktes, damit der Report-Marker nichts fälschlich als zugestellt bucht.
⚠ **Tages-/Wochenreport werden nur auf dem TELEGRAM-Weg still — die E-Mail
läuft weiter.**
⚠⚠ **Eine Ausnahme mit Bypass:** „<ok_word> FEHLGESCHLAGEN“ beim Notfall-Close
geht am Gate vorbei — dort ist die Position **NICHT** zu und es braucht eine
Handeingabe. Die erfolgreichen Closes von Breaker, Notfall-Stop und S/R meldet
ohnehin `_check_close_notify`; es geht also keine *Schliessung* verloren.
⚠⚠ **ZWEITER TOTALVERLUST DERSELBEN URSACHE AM SELBEN TAG — diesmal CLAUDE.md.**
Ein Emoji, geschrieben als ZWEI getrennte \u-Escapes, erzeugt in Python
**lone surrogates**, die sich nicht nach UTF-8 kodieren lassen — und
`io.open(p,"w")` kürzt die Datei **vor** dem Schreiben. Ergebnis: **0 Bytes**,
und der Commit ging **grün durch** (der Hook prüft Python und JS, nicht die
Doku) und wurde gepusht. Wiederhergestellt aus `HEAD~1`.
**Regel, ab hier ausnahmslos:** (a) Emoji nie als getrennte \u-Surrogate —
Zeichen direkt oder gar nicht; (b) IMMER erst nach `.tmp`, Grösse gegen das
Original prüfen, dann `os.replace`; (c) **eine Syntaxprüfung ersetzt die
Grössenprüfung nicht** — eine LEERE Datei besteht `node --check` und jeden Hook.
## ✅✅ EINSATZ 95 % → 40 % + BREAKOUT-KARTE AKTIV (User 2026-08-19, v=176)
Nach dem Schliessen der offenen Position ausgeführt (User: „trade is closed“).
+8
View File
@@ -1148,6 +1148,13 @@ function render(d) {
// Auto-Squeeze-ZUSTAND bleibt in der Breakout-Karte sichtbar -- nur sein
// Schalter ist weg (jetzt POST-Endpunkt bzw. ini).
const cb = d.circuit_breaker || {};
const srb = $streng("btn-sr");
if (srb) {
srb.classList.toggle("on", !!d.auto_sr_close);
srb.title = d.auto_sr_close
? "S/R-Auto-Close AN: schliesst am Level, wenn P(break) unter der Schwelle liegt."
: "S/R-Auto-Close AUS -- der Bot schliesst nicht mehr selbst am Level.";
}
const cbb = $streng("btn-cb");
if (cbb) {
cbb.classList.toggle("on", !!cb.enabled);
@@ -1730,6 +1737,7 @@ _updateMuteBtn();
// Toggle-Buttons (AUTO/TRAIL/S-R-Close) — ohne Bestätigung
$("btn-cb").onclick = () => toggle("api/circuit", "Tagesverlust-Stopp");
$("btn-sr").onclick = () => toggle("api/srclose", "S/R-Auto-Close");
// (🎯 SIG entfernt 2026-08-12 — s. renderOrderButtons oben)
$("btn-trail").onclick = () => toggle("api/trail", "Trailing");
$("srclose-btn").onclick = () => toggle("api/srclose", "Auto-S/R-Close");
+9 -2
View File
@@ -12,7 +12,7 @@
⚠ LOKAL eingebunden, kein CDN: die PWA laeuft ueber WireGuard
und muss offline funktionieren. -->
<link rel="stylesheet" href="pico.min.css?v=1">
<link rel="stylesheet" href="style.css?v=177">
<link rel="stylesheet" href="style.css?v=178">
</head>
<body>
<!-- Modul-Menü (ganz oben) -->
@@ -348,6 +348,13 @@
<!-- BRK-Schalter ENTFERNT, dafuer der Circuit-Breaker (User 2026-08-19).
Der Auto-Squeeze-Zustand bleibt in der Breakout-Karte sichtbar. -->
<button class="btn tog" id="btn-cb" title="Tagesverlust-Stopp (Circuit Breaker) an/aus">🛑 STOPP</button>
<!-- S/R-Auto-Close auch in der Aktionsleiste (User 2026-08-19). Den
Schalter gab es nur in der Trade-Leiste -- die ist aber NUR bei
offener Position sichtbar, also genau dann nicht, wenn man ihn vor
einem Trade setzen will. Der alte Knopf bleibt; beide lesen
`auto_sr_close` aus demselben Snapshot und koennen nicht
auseinanderlaufen. -->
<button class="btn tog" id="btn-sr" title="Auto-Close am S/R-Level an/aus (P(break)-gegatet: schliesst nur, wenn das Level wahrscheinlich haelt)">S/R</button>
<!-- 🎯 SIG (Auto-Signal-Entry) ENTFERNT 2026-08-12: seit 01.08. aus und auf
BEIDEN Ausfuehrungs-Achsen gemessen negativ (Markt alle 8 Felder,
ruhende Order mit Touch-Fill alle 6 und schlechter als Markt). -->
@@ -369,6 +376,6 @@
</div>
<div id="toast" class="toast hidden"></div>
<script src="app.js?v=177"></script>
<script src="app.js?v=178"></script>
</body>
</html>