MQL5 v1.48: Schaltflaechen links zum Ein-/Ausblenden der Objektgruppen
User-Wunsch. 13 OBJ_BUTTON am linken Chartrand, Klick ueber OnChartEvent: S/R, Zonen, Kanal, Liq, LiqTr, EqH/L, Box, Kegel, Pfeile, Muster, Meldung, Kurs, Trades. Gruen = an, grau = aus. EIGENER PRAEFIX BPFX="SRBTN_": Redraw() ruft bei jedem Datei-Update ObjectsDeleteAll(0, PFX) - unter PFX waeren die Knoepfe sofort wieder weg. Nachgerechnet statt angenommen: "SRBTN_" beginnt NICHT mit "SRB_" (viertes Zeichen T gegen _), die Praefix-Loeschung greift also nicht. g_last wird beim Klick zurueckgesetzt: Redraw() steigt bei unveraendertem Dateiinhalt sofort wieder aus, ohne den Reset waere das Umschalten erst beim naechsten CSV-Update sichtbar und der Knopf saehe tot aus. Voreinstellung UNTEN links, weil oben links der Meldungs-Stapel (MS;) steht. InpBtnOben=true stellt um; die Stapelrichtung dreht mit, damit der erste Knopf immer oben steht (bei CORNER_LEFT_LOWER waechst YDISTANCE nach oben). Zustand je Symbol UND Periode in einer GlobalVariable - ueberlebt Neustart und Zeitebenen-Wechsel und hat Vorrang vor der Eingabe. Die InpShow*-Eingaben bleiben die Voreinstellung; Vis(i) ist danach die einzige Quelle fuer alle Zeichen-Zweige. OBJPROP_STATE bleibt immer false, sonst bliebe der Knopf optisch gedrueckt haengen. BtnDraw() laeuft auch im Timer (Fenstergroesse, von Hand geloeschte Objekte). Neu ist, dass die S/R-Linien ueberhaupt abschaltbar sind - sie waren als einzige Gruppe fest verdrahtet. 0 errors 0 warnings, Spiegel bitgleich, statisch geprueft: 13 Vis()-Guards, genau ein OnChartEvent, keine Praefix-Kollision. Das Klick-Verhalten selbst ist NICHT verifiziert - dafuer braucht es einen echten Klick im Chart.
This commit is contained in:
@@ -9564,3 +9564,67 @@ stimmen; der Dreiecks-Apex landet korrekt in der Zukunft.
|
||||
CSV-Zeile
|
||||
`PT;M5;Doppeltop;bear;87.384;86.814;dreieck;1787327400;87.954;1787328000;87.384;1787330100;87.914`.
|
||||
Abschaltbar wie bisher `InpShowMuster=false`; Füllfarbe `InpMusterFill`.
|
||||
|
||||
## ✅ SCHALTFLÄCHEN LINKS IM MT5-CHART (2026-08-21, v1.48)
|
||||
|
||||
User-Wunsch: die einzelnen Objektgruppen im Chart von Hand ein- und ausblenden.
|
||||
**13 Knöpfe** (`OBJ_BUTTON`) am linken Rand, Klick über `OnChartEvent`:
|
||||
|
||||
`S/R · Zonen · Kanal · Liq · LiqTr · EqH/L · Box · Kegel · Pfeile · Muster ·
|
||||
Meldung · Kurs · Trades`
|
||||
|
||||
Grün = an (mit `*`), grau = aus. Eingaben: `InpShowButtons` ·
|
||||
`InpBtnOben` (Voreinstellung **unten** links) · `InpBtnX/Y` · `InpBtnBreite/Hoehe` ·
|
||||
`InpBtnFont` · `InpBtnAnFarbe`/`InpBtnAusFarbe`.
|
||||
|
||||
⚠⚠ **EIGENER PRÄFIX — sonst wären die Knöpfe sofort wieder weg.** `Redraw()`
|
||||
ruft bei jedem Datei-Update `ObjectsDeleteAll(0, PFX)`. Die Knöpfe liegen
|
||||
deshalb unter **`BPFX = "SRBTN_"`** und werden nur in `OnDeinit` aufgeräumt.
|
||||
✅ Geprüft, dass das wirklich trennt: `"SRBTN_"` beginnt **nicht** mit `"SRB_"`
|
||||
(viertes Zeichen `T` gegen `_`) — die Präfix-Löschung greift also nicht. Das ist
|
||||
knapp und war der erste Punkt, den ich nachgerechnet statt angenommen habe.
|
||||
|
||||
⚠⚠ **`g_last` MUSS beim Klick zurückgesetzt werden.** `Redraw()` steigt bei
|
||||
unverändertem Dateiinhalt sofort wieder aus (`if(content == g_last) return;`) —
|
||||
ohne den Reset würde ein Umschalten erst beim nächsten CSV-Update sichtbar, bis
|
||||
zu Sekunden später. Es sähe aus, als reagiere der Knopf nicht.
|
||||
|
||||
⚠ **Voreinstellung UNTEN links**, weil oben links der Meldungs-Stapel (`MS;`)
|
||||
steht — dort wären die Knöpfe eine Überdeckung. `InpBtnOben=true` stellt um; die
|
||||
Stapelrichtung dreht dabei mit, damit der erste Knopf **immer oben** steht (bei
|
||||
`CORNER_LEFT_LOWER` wächst `YDISTANCE` nach oben, die Liste liefe sonst verkehrt
|
||||
herum).
|
||||
|
||||
⚠ **Der Zustand überlebt Neustart und Zeitebenen-Wechsel**: er liegt je Symbol
|
||||
UND Periode in einer `GlobalVariable` (`SRB_<sym>_<period>_<key>`) und hat
|
||||
Vorrang vor der Eingabe. Ohne das wäre jeder Chart-Wechsel ein Zurücksetzen von
|
||||
dreizehn Knöpfen.
|
||||
⚠ Die `InpShow*`-Eingaben bleiben die **Voreinstellung**; der Knopf ist danach
|
||||
die Autorität. `Vis(i)` ist die **einzige** Quelle für alle Zeichen-Zweige — ein
|
||||
zweiter Pfad wäre genau die Divergenz, die in diesem Projekt mehrfach
|
||||
zugeschlagen hat.
|
||||
⚠ **`OBJPROP_STATE` bleibt immer `false`**: sonst bliebe der Knopf optisch
|
||||
„gedrückt" hängen und arbeitete gegen die Hintergrundfarbe.
|
||||
⚠ **`BtnDraw()` läuft auch im Timer** — das Chart-Fenster kann seine Größe
|
||||
ändern, und ein von Hand gelöschtes Objekt baut sich so wieder auf.
|
||||
|
||||
✅ Neu ist, dass die **S/R-Linien überhaupt abschaltbar** sind — sie waren als
|
||||
einzige Gruppe fest verdrahtet.
|
||||
✅ Kompiliert ins richtige Terminal, `0 errors, 0 warnings`, Spiegel
|
||||
`mql5/SR_Levels.mq5` bitgleich. Statisch geprüft: 13 `Vis()`-Guards, genau ein
|
||||
`OnChartEvent`, keine Präfix-Kollision.
|
||||
⚠ **NICHT verifiziert ist das Klick-Verhalten selbst** — dafür braucht es einen
|
||||
echten Klick im Chart. Compile und Verdrahtung sind belegt, die Wirkung nicht.
|
||||
|
||||
⚠⚠ **BEIM SCHREIBEN DIESES ABSCHNITTS EIN NEUER FALL DER SCHREIB-FALLE — und
|
||||
die Größenprüfung hat ihn NICHT gefangen.** Der Doku-Patch wandelte `\n` nach
|
||||
`\r\n` auf dem **gesamten** Dokument statt nur auf dem angehängten Block. Die
|
||||
bereits vorhandenen `\r\n` wurden dadurch zu **`\r\r\n`** — 9.567 Zeilen,
|
||||
+9,5 KB. Die Datei wuchs also, die Prüfung `neu > alt` war zufrieden.
|
||||
✅ Aufgefallen nur, weil die Zunahme (12,5 KB) nicht zum geschriebenen Text
|
||||
(~3 KB) passte; repariert durch `\r\r\n` → `\r\n`, kein Inhalt verloren.
|
||||
**➜ Regel: die Zeilenenden-Umwandlung IMMER nur auf den neuen Text anwenden,
|
||||
nie auf das eingelesene Dokument.** Und: **eine Größenprüfung belegt nur, dass
|
||||
nichts abgeschnitten wurde — nicht, dass der Inhalt stimmt** (dieselbe Klasse
|
||||
wie „eine LEERE Datei besteht `node --check`"). Wo es billig ist, gehört die
|
||||
erwartete Zunahme mitgeprüft, nicht nur ihr Vorzeichen.
|
||||
|
||||
Reference in New Issue
Block a user