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 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-30 18:45:35 +02:00
co-authored by Claude Opus 4.8
parent 6d279e0886
commit e40e962db4
2 changed files with 28 additions and 11 deletions
+1 -1
View File
@@ -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 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, CFD übertragbar sind, wird gerade gemessen (`analyze_bookflow.py` im HL-Projekt,
Datensammlung seit 2026-07-30, Urteil in ~2 Wochen). Der Indikator 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, den PFEIL**, rechtsbündig am aktuellen Rand (in `RepositionLabels()` nachgeführt,
bleibt beim Scrollen rechts; Details im **Tooltip**) — Linie und Text-Label sind 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 auf User-Wunsch raus („Chart zu voll"). **v1.15 = CHART-THEME** (User „Farben im
+27 -10
View File
@@ -12,7 +12,11 @@
//| 4) Der Bot muss laufen (schreibt die CSV alle ~5 s). | //| 4) Der Bot muss laufen (schreibt die CSV alle ~5 s). |
//+------------------------------------------------------------------+ //+------------------------------------------------------------------+
#property copyright "Oil Trading Bot" #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/ // v1.20 (2026-07-30): aktuelle KURSLINIE weiss (User-Vorgabe) — CHART_COLOR_BID/
// ASK/LAST auf InpThemeBidLine, Bid-Linie explizit eingeschaltet. // ASK/LAST auf InpThemeBidLine, Bid-Linie explizit eingeschaltet.
// v1.19 (2026-07-30): Liquiditaetszone TRANSPARENT (User: „Transparenz der Zone // 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 int InpLiqZoneAlpha = 10; // Deckkraft der Zonenfuellung in % (10 = sehr transparent)
input bool InpShowPrice = true; // aktuellen Kurs oben rechts anzeigen input bool InpShowPrice = true; // aktuellen Kurs oben rechts anzeigen
input int InpPriceSize = 20; // Schriftgroesse des Kurses 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 input color InpPriceColor = C'230,237,243'; // Kurs-Farbe
// ── Chart-THEME (User-Vorgabe 2026-07-30 „Farben im MT5 wie im Bild") ──────── // ── 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 // Setzt beim Start die Chart-Eigenschaften auf die Dashboard-Palette, damit MT5
@@ -189,11 +194,20 @@ datetime CenterTime()
return iTime(_Symbol, PERIOD_CURRENT, mid); 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() void RepositionLabels()
{ {
datetime ct = CenterTime(); datetime ct = RightTime();
int total = ObjectsTotal(0, 0, OBJ_TEXT); int total = ObjectsTotal(0, 0, OBJ_TEXT);
for(int i = 0; i < total; i++) for(int i = 0; i < total; i++)
{ {
@@ -202,6 +216,8 @@ void RepositionLabels()
{ {
double pr = ObjectGetDouble(0, nm, OBJPROP_PRICE); double pr = ObjectGetDouble(0, nm, OBJPROP_PRICE);
ObjectMove(0, nm, 0, ct, pr); 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 // 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); ObjectSetInteger(0, nm, OBJPROP_SELECTABLE, false);
ObjectSetString (0, nm, OBJPROP_TEXT, lbl); // Tooltip ObjectSetString (0, nm, OBJPROP_TEXT, lbl); // Tooltip
} }
// Beschriftung als eigenes Text-Objekt: horizontal ZENTRIERT im sicht- // Beschriftung als eigenes Text-Objekt — RECHTSBÜNDIG am rechten Chart-
// baren Chart, direkt über der Linie (bleibt via RepositionLabels() // Rand (User-Vorgabe 2026-07-30; vorher horizontal zentriert). Bleibt via
// auch beim Scrollen/Zoomen zentriert) // 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); 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); ObjectSetString (0, tn, OBJPROP_TEXT, lbl);
ObjectSetInteger(0, tn, OBJPROP_COLOR, col); ObjectSetInteger(0, tn, OBJPROP_COLOR, col);
ObjectSetInteger(0, tn, OBJPROP_FONTSIZE, 8); ObjectSetInteger(0, tn, OBJPROP_FONTSIZE, InpLabelSize);
ObjectSetInteger(0, tn, OBJPROP_ANCHOR, ANCHOR_LOWER); // zentriert über dem Punkt ObjectSetInteger(0, tn, OBJPROP_ANCHOR, ANCHOR_RIGHT_LOWER);
ObjectSetInteger(0, tn, OBJPROP_BACK, false); ObjectSetInteger(0, tn, OBJPROP_BACK, false);
ObjectSetInteger(0, tn, OBJPROP_SELECTABLE, false); ObjectSetInteger(0, tn, OBJPROP_SELECTABLE, false);
} }
@@ -591,7 +608,7 @@ void Redraw()
{ {
ObjectSetString (0, tl, OBJPROP_TEXT, tt); ObjectSetString (0, tl, OBJPROP_TEXT, tt);
ObjectSetInteger(0, tl, OBJPROP_COLOR, InpLiqTrendColor); 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_ANCHOR, ANCHOR_LOWER);
ObjectSetInteger(0, tl, OBJPROP_SELECTABLE, false); ObjectSetInteger(0, tl, OBJPROP_SELECTABLE, false);
} }