From e40e962db402d086d636274a2e96545db6f043de Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Thu, 30 Jul 2026 18:45:35 +0200 Subject: [PATCH] MQL5 v1.21: Beschriftungen rechtsbuendig + 4px groesser User-Vorgaben: Beschriftung aller Linien rechtsbuendig, Schrift 4 Pixel groesser. - Neue Hilfsfunktion RightTime() (rechter Chart-Rand im Shift-Bereich); die S/R-Labels werden dort erzeugt UND von RepositionLabels() dort gehalten (vorher zentriert via CenterTime). - ANCHOR_RIGHT_LOWER: der Text ENDET am Anker und laeuft nach links -> ragt nicht ueber den Chartrand hinaus. - Schriftgroesse 8 -> 12 (+4), einstellbar via InpLabelSize; gilt auch fuer das (per Default ausgeblendete) Trendlinien-Label. Co-Authored-By: Claude Opus 4.8 --- CLAUDE.md | 2 +- mql5/SR_Levels.mq5 | 37 +++++++++++++++++++++++++++---------- 2 files changed, 28 insertions(+), 11 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 510cbf3..edda612 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.20** — `LQ`-Handler zeichnet seit v1.14 **nur noch + **`mql5/SR_Levels.mq5`** (**v1.21** — `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/mql5/SR_Levels.mq5 b/mql5/SR_Levels.mq5 index 8780aec..842c555 100644 --- a/mql5/SR_Levels.mq5 +++ b/mql5/SR_Levels.mq5 @@ -12,7 +12,11 @@ //| 4) Der Bot muss laufen (schreibt die CSV alle ~5 s). | //+------------------------------------------------------------------+ #property copyright "Oil Trading Bot" -#property version "1.20" +#property version "1.21" +// 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, +// User-Wunsch). Neu einstellbar via InpLabelSize. // v1.20 (2026-07-30): aktuelle KURSLINIE weiss (User-Vorgabe) — CHART_COLOR_BID/ // ASK/LAST auf InpThemeBidLine, Bid-Linie explizit eingeschaltet. // v1.19 (2026-07-30): Liquiditaetszone TRANSPARENT (User: „Transparenz der Zone @@ -86,6 +90,7 @@ input color InpLiqZoneColor = C'245,158,11'; // Zonen-Grundfarbe (Gold #F59E0B input int InpLiqZoneAlpha = 10; // Deckkraft der Zonenfuellung in % (10 = sehr transparent) input bool InpShowPrice = true; // aktuellen Kurs oben rechts anzeigen input int InpPriceSize = 20; // Schriftgroesse des Kurses +input int InpLabelSize = 12; // Schriftgroesse der Linien-Beschriftungen (+4 per User-Wunsch) input color InpPriceColor = C'230,237,243'; // Kurs-Farbe // ── Chart-THEME (User-Vorgabe 2026-07-30 „Farben im MT5 wie im Bild") ──────── // Setzt beim Start die Chart-Eigenschaften auf die Dashboard-Palette, damit MT5 @@ -189,11 +194,20 @@ datetime CenterTime() return iTime(_Symbol, PERIOD_CURRENT, mid); } //+------------------------------------------------------------------+ -//| Hält die S/R-Beschriftungen beim Scrollen/Zoomen mittig | +//| Zeitpunkt am RECHTEN Chart-Rand (im Shift-Bereich hinter der | +//| letzten Kerze) — dort sitzen ALLE Beschriftungen (User-Vorgabe | +//| 2026-07-30 „Beschriftung aller Linien bitte rechtsbündig"). | +//+------------------------------------------------------------------+ +datetime RightTime() +{ + return iTime(_Symbol, PERIOD_CURRENT, 0) + (datetime)(PeriodSeconds() * 2); +} +//+------------------------------------------------------------------+ +//| Hält die Beschriftungen beim Scrollen/Zoomen am rechten Rand | //+------------------------------------------------------------------+ void RepositionLabels() { - datetime ct = CenterTime(); + datetime ct = RightTime(); int total = ObjectsTotal(0, 0, OBJ_TEXT); for(int i = 0; i < total; i++) { @@ -202,6 +216,8 @@ void RepositionLabels() { double pr = ObjectGetDouble(0, nm, OBJPROP_PRICE); ObjectMove(0, nm, 0, ct, pr); + // rechtsbündig = Text endet am Anker und läuft nach LINKS + ObjectSetInteger(0, nm, OBJPROP_ANCHOR, ANCHOR_RIGHT_LOWER); } } // Liquiditäts-PFEILE rechtsbündig halten: die CSV ändert sich nicht bei jedem @@ -339,16 +355,17 @@ void Redraw() ObjectSetInteger(0, nm, OBJPROP_SELECTABLE, false); ObjectSetString (0, nm, OBJPROP_TEXT, lbl); // Tooltip } - // Beschriftung als eigenes Text-Objekt: horizontal ZENTRIERT im sicht- - // baren Chart, direkt über der Linie (bleibt via RepositionLabels() - // auch beim Scrollen/Zoomen zentriert) + // Beschriftung als eigenes Text-Objekt — RECHTSBÜNDIG am rechten Chart- + // Rand (User-Vorgabe 2026-07-30; vorher horizontal zentriert). Bleibt via + // RepositionLabels() beim Scrollen/Zoomen dort. ANCHOR_RIGHT_LOWER: der + // Text ENDET am Anker und läuft nach links → ragt nicht aus dem Chart. string tn = PFX + "T" + typ + "_" + IntegerToString(idx); - if(ObjectCreate(0, tn, OBJ_TEXT, 0, CenterTime(), price)) + if(ObjectCreate(0, tn, OBJ_TEXT, 0, RightTime(), price)) { ObjectSetString (0, tn, OBJPROP_TEXT, lbl); ObjectSetInteger(0, tn, OBJPROP_COLOR, col); - ObjectSetInteger(0, tn, OBJPROP_FONTSIZE, 8); - ObjectSetInteger(0, tn, OBJPROP_ANCHOR, ANCHOR_LOWER); // zentriert über dem Punkt + ObjectSetInteger(0, tn, OBJPROP_FONTSIZE, InpLabelSize); + ObjectSetInteger(0, tn, OBJPROP_ANCHOR, ANCHOR_RIGHT_LOWER); ObjectSetInteger(0, tn, OBJPROP_BACK, false); ObjectSetInteger(0, tn, OBJPROP_SELECTABLE, false); } @@ -591,7 +608,7 @@ void Redraw() { ObjectSetString (0, tl, OBJPROP_TEXT, tt); ObjectSetInteger(0, tl, OBJPROP_COLOR, InpLiqTrendColor); - ObjectSetInteger(0, tl, OBJPROP_FONTSIZE, 9); + ObjectSetInteger(0, tl, OBJPROP_FONTSIZE, InpLabelSize); ObjectSetInteger(0, tl, OBJPROP_ANCHOR, ANCHOR_LOWER); ObjectSetInteger(0, tl, OBJPROP_SELECTABLE, false); }