From 73712b5ea7481b382c452b1f697e90bb594c727a Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Thu, 30 Jul 2026 18:49:45 +0200 Subject: [PATCH] Trade-Umrandungen entfernt + Darstellungsfehler behoben (MQL5 v1.22) User: "entferne die umrandungen fuer trade open und close" + "das bild sieht komiesch aus" (Screenshot). (a) Trade-Umrandungen AUS: InpShowTrades=false UND Export im Bot abgeschaltet ([trading] export_trade_marks=false) -- spart auch die DB-Abfrage im 5-s-Export-Takt. Code bleibt reaktivierbar. (b) Liquiditaets-Trendlinie: RAY_RIGHT entfernt. Eine 60-min-Regression 100 Bars in die Zukunft zu verlaengern riss die Linie steil ins Bodenlose (im Screenshot deutlich zu sehen). Sie endet jetzt am aktuellen Rand. (c) CHART_SHIFT_SIZE auf 12% begrenzt (InpShiftPct). Ohne Begrenzung war der Shift-Bereich so gross, dass der Kursverlauf links gequetscht stand. Verifiziert: TR-Zeilen aus sr_levels.csv verschwunden, Rest unveraendert. Co-Authored-By: Claude Opus 4.8 --- CLAUDE.md | 2 +- core/engine.py | 7 +++++++ mql5/SR_Levels.mq5 | 24 +++++++++++++++++++++--- 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index edda612..4770e16 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1202,7 +1202,7 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche: Daten älter als 60 s werden verworfen. **REINE ANZEIGE** — ob HL-Buch-Signale auf den CFD übertragbar sind, wird gerade gemessen (`analyze_bookflow.py` im HL-Projekt, Datensammlung seit 2026-07-30, Urteil in ~2 Wochen). Der Indikator - **`mql5/SR_Levels.mq5`** (**v1.21** — `LQ`-Handler zeichnet seit v1.14 **nur noch + **`mql5/SR_Levels.mq5`** (**v1.22** — `LQ`-Handler zeichnet seit v1.14 **nur noch den PFEIL**, rechtsbündig am aktuellen Rand (in `RepositionLabels()` nachgeführt, bleibt beim Scrollen rechts; Details im **Tooltip**) — Linie und Text-Label sind auf User-Wunsch raus („Chart zu voll"). **v1.15 = CHART-THEME** (User „Farben im diff --git a/core/engine.py b/core/engine.py index 375b53e..1cd5f9b 100644 --- a/core/engine.py +++ b/core/engine.py @@ -298,6 +298,7 @@ class TradingEngine: "runtime_state.json") self._load_runtime_state() self._mql5_files_dir = None # \MQL5\Files (lazy, für den Indikator) + self._export_trade_marks = self.cfg["trading"].get("export_trade_marks", "false").lower() == "true" self._export_mql5 = self.cfg["trading"].get("export_mql5_levels", "true").lower() == "true" self._draw_last = {"r": None, "s": None} # letzte gezeichnete S/R (Hysterese) try: # WHT-Quellensteuer (Broker behält % je GEWINN ein) → Netto-Anzeige @@ -2010,7 +2011,13 @@ class TradingEngine: # Trade-Marker: TR;; → der Indikator umrandet die Kerze, # in der eröffnet (hellgrün) bzw. geschlossen (dunkelgrün) wurde # (User-Vorgabe 2026-07-30). Offene Position + die letzten Trades des Tages. + # ⚠ Per Default AUS (User-Wunsch 2026-07-30: „entferne die Umrandungen + # für Trade open und close" — kurz nach dem Einbau wieder verworfen). + # Code bleibt reaktivierbar via `[trading] export_trade_marks=true`; + # spart im Aus-Zustand die DB-Abfrage im ~5-s-Export-Takt. try: + if not self._export_trade_marks: + raise StopIteration boff = self.trader._broker_offset_s() marks: list[tuple[str, int]] = [] ps = self.trader.snapshot() diff --git a/mql5/SR_Levels.mq5 b/mql5/SR_Levels.mq5 index 842c555..6cdccb0 100644 --- a/mql5/SR_Levels.mq5 +++ b/mql5/SR_Levels.mq5 @@ -12,7 +12,15 @@ //| 4) Der Bot muss laufen (schreibt die CSV alle ~5 s). | //+------------------------------------------------------------------+ #property copyright "Oil Trading Bot" -#property version "1.21" +#property version "1.22" +// v1.22 (2026-07-30): Aufraeumen nach User-Feedback „das Bild sieht komisch aus": +// (a) Trade-Umrandungen ENTFERNT (InpShowTrades=false, Export im Bot aus). +// (b) Liquiditaets-Trendlinie nicht mehr RAY_RIGHT — eine 60-min-Regression +// 100 Bars in die Zukunft zu ziehen riss die Linie ins Bodenlose. +// (c) CHART_SHIFT_SIZE begrenzt (InpShiftPct=12 %) — ohne Begrenzung stand +// der Kursverlauf ganz links gequetscht. +// ⚠ MT5 uebernimmt beim Neukompilieren NICHT die neuen Default-Inputs, wenn +// der Indikator schon auf dem Chart liegt: einmal ENTFERNEN und neu aufziehen. // v1.21 (2026-07-30): Beschriftungen aller Linien RECHTSBUENDIG am rechten // Chart-Rand (vorher zentriert; ANCHOR_RIGHT_LOWER -> Text endet am Anker, // laeuft nach links, ragt nicht raus) + Schriftgroesse 8 -> 12 (+4 px, @@ -82,7 +90,7 @@ input color InpWallAskColor = C'245,158,11'; // Liquidität Angebot (Ask) — input bool InpShowLiqTrend = true; // Liquiditäts-Trendlinie zeichnen input color InpLiqTrendColor = clrMagenta; // Liquiditäts-Trend (pink) input bool InpLiqTrendLabel = false; // Beschriftung der Trendlinie (aus per User-Wunsch) -input bool InpShowTrades = true; // Trade-Kerzen umranden (Eroeffnung/Close) +input bool InpShowTrades = false; // Trade-Kerzen umranden (AUS per User-Wunsch) input color InpTradeOpenColor = C'134,239,172'; // Eroeffnung — hellgruen input color InpTradeCloseColor = C'21,128,61'; // Close — dunkelgruen input bool InpShowLiqZones = true; // Liquiditaetszonen (Equal Highs/Lows) @@ -106,6 +114,7 @@ input color InpThemeBg = C'13,17,23'; // Hintergrund input color InpThemeGrid = C'16,21,28'; // Gitternetz (dezent) input color InpThemeText = C'139,148,158'; // Achsen/Text input color InpThemeBidLine = clrWhite; // aktuelle Kurslinie (Bid) — weiss +input double InpShiftPct = 12.0; // Platz rechts fuer Pfeile/Labels (% der Chartbreite) const string PFX = "SRB_"; // Präfix S/R-Linien (aus Datei) const string RPFX = "SRR_"; // Präfix dynamische Range (aus Chart) @@ -171,6 +180,10 @@ void ApplyTheme() // letzten Kerze. Ohne Shift gibt es dort keinen sichtbaren Bereich → die Pfeile // wären unsichtbar (das war der zweite Grund für „Pfeile werden nicht angezeigt"). ChartSetInteger(0, CHART_SHIFT, true); + // Shift-Bereich klein halten: nur so viel Platz rechts, dass Pfeile und + // Beschriftungen hinpassen. Ohne Begrenzung stand der Kursverlauf ganz links + // gequetscht (User-Feedback „das Bild sieht komisch aus", 2026-07-30). + ChartSetDouble(0, CHART_SHIFT_SIZE, InpShiftPct); ChartRedraw(); } //+------------------------------------------------------------------+ @@ -586,7 +599,11 @@ void Redraw() ObjectSetInteger(0, nm, OBJPROP_COLOR, InpLiqTrendColor); ObjectSetInteger(0, nm, OBJPROP_STYLE, STYLE_SOLID); ObjectSetInteger(0, nm, OBJPROP_WIDTH, 2); - ObjectSetInteger(0, nm, OBJPROP_RAY_RIGHT, true); + // ⚠ KEIN RAY_RIGHT: eine 60-min-Regression 100 Bars in die Zukunft zu + // verlängern ergibt keinen Sinn und riss die Linie optisch ins + // Bodenlose (User-Feedback „das Bild sieht komisch aus", 2026-07-30). + // Die Linie endet jetzt am aktuellen Rand. + ObjectSetInteger(0, nm, OBJPROP_RAY_RIGHT, false); ObjectSetInteger(0, nm, OBJPROP_RAY_LEFT, false); ObjectSetInteger(0, nm, OBJPROP_BACK, true); ObjectSetInteger(0, nm, OBJPROP_SELECTABLE, false); @@ -595,6 +612,7 @@ void Redraw() { ObjectMove(0, nm, 0, t1, q1); ObjectMove(0, nm, 1, t2, q2); + ObjectSetInteger(0, nm, OBJPROP_RAY_RIGHT, false); } // Beschriftung der Liquiditäts-Trendlinie: auf User-Wunsch (2026-07-30) // per Default AUS — der Chart soll sauber bleiben. Die Richtung liest man