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:
co-authored by
Claude Opus 5
parent
880bf1075e
commit
c0293ece01
@@ -7434,6 +7434,51 @@ vollständig.
|
|||||||
⚠ **Verifikation der Zustellung steht aus** — sie erfolgt mit dem Report am
|
⚠ **Verifikation der Zustellung steht aus** — sie erfolgt mit dem Report am
|
||||||
nächsten Morgen um 07:30. Die Bausteine sind einzeln live gegengeprüft.
|
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)
|
## ✅✅ EINSATZ 95 % → 40 % + BREAKOUT-KARTE AKTIV (User 2026-08-19, v=176)
|
||||||
|
|
||||||
Nach dem Schliessen der offenen Position ausgeführt (User: „trade is closed“).
|
Nach dem Schliessen der offenen Position ausgeführt (User: „trade is closed“).
|
||||||
|
|||||||
@@ -1148,6 +1148,13 @@ 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 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");
|
const cbb = $streng("btn-cb");
|
||||||
if (cbb) {
|
if (cbb) {
|
||||||
cbb.classList.toggle("on", !!cb.enabled);
|
cbb.classList.toggle("on", !!cb.enabled);
|
||||||
@@ -1730,6 +1737,7 @@ _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", "Tagesverlust-Stopp");
|
$("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)
|
// (🎯 SIG entfernt 2026-08-12 — s. renderOrderButtons oben)
|
||||||
$("btn-trail").onclick = () => toggle("api/trail", "Trailing");
|
$("btn-trail").onclick = () => toggle("api/trail", "Trailing");
|
||||||
$("srclose-btn").onclick = () => toggle("api/srclose", "Auto-S/R-Close");
|
$("srclose-btn").onclick = () => toggle("api/srclose", "Auto-S/R-Close");
|
||||||
|
|||||||
+9
-2
@@ -12,7 +12,7 @@
|
|||||||
⚠ 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=177">
|
<link rel="stylesheet" href="style.css?v=178">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<!-- Modul-Menü (ganz oben) -->
|
<!-- Modul-Menü (ganz oben) -->
|
||||||
@@ -348,6 +348,13 @@
|
|||||||
<!-- BRK-Schalter ENTFERNT, dafuer der Circuit-Breaker (User 2026-08-19).
|
<!-- BRK-Schalter ENTFERNT, dafuer der Circuit-Breaker (User 2026-08-19).
|
||||||
Der Auto-Squeeze-Zustand bleibt in der Breakout-Karte sichtbar. -->
|
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>
|
<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
|
<!-- 🎯 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). -->
|
||||||
@@ -369,6 +376,6 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="toast" class="toast hidden"></div>
|
<div id="toast" class="toast hidden"></div>
|
||||||
|
|
||||||
<script src="app.js?v=177"></script>
|
<script src="app.js?v=178"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user