Meldungen zentriert statt oben links (Indikator v1.40)

User-Wunsch. MT5 kennt keine 'Mitte'-Ecke: der Bezugspunkt bleibt
CORNER_LEFT_UPPER, aber der ANKER wird auf ANCHOR_UPPER (Text-Oberkante mittig)
gesetzt und X auf die halbe Chartbreite. Damit waechst der Text nach beiden
Seiten und bleibt bei jeder Fensterbreite zentriert.

X wird bei JEDEM Redraw neu gesetzt, nicht nur beim Erzeugen -- sonst haengt die
Zentrierung nach einer Fenster-Groessenaenderung auf der alten Breite fest.

Startabstand von oben 40 -> 24, weil MT5s eigene Symbol-/Zeitrahmen-Zeile links
steht und mittig nicht mehr im Weg ist. Weiterhin ueber InpMeldungY einstellbar,
Zeilenabstand bleibt Faktor 2,0 der Schriftgroesse (v1.39).

Kompiliert ins richtige Terminal: 0 errors, 0 warnings.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-19 00:10:56 +02:00
co-authored by Claude Opus 5
parent 046d9c6948
commit e471170b01
+20 -4
View File
@@ -12,7 +12,14 @@
//| 4) Der Bot muss laufen (schreibt die CSV alle ~5 s). |
//+------------------------------------------------------------------+
#property copyright "Oil Trading Bot"
#property version "1.39"
#property version "1.40"
// v1.40 (2026-08-19): MELDUNGEN ZENTRIERT statt oben links (User-Wunsch).
// MT5 kennt keine "Mitte"-Ecke: Bezug bleibt CORNER_LEFT_UPPER, aber der
// ANKER wird ANCHOR_UPPER (Oberkante mittig) und X = halbe Chartbreite.
// X wird bei JEDEM Redraw neu gesetzt, sonst haengt die Zentrierung nach
// einer Fenster-Groessenaenderung auf der alten Breite fest.
// Startabstand 40 -> 24, weil MT5s eigene Symbol-Zeile links steht und
// mittig nicht mehr stoert.
// v1.39 (2026-08-19): MELDUNGEN oben links neu positioniert (User: "die
// Anzeigetexte ueberlagern sich"). Zwei Fehler: der Start lag bei y=16
// und damit in MT5s EIGENER Symbol-/OHLC-Zeile, und der Zeilenabstand
@@ -245,7 +252,7 @@ input bool InpShowTradeLevels = true; // MT5-Positionslinien+Labels (st
// (`[trading] export_meldungen=false`) ODER hier.
input bool InpShowMeldungen = true; // Meldungen oben links einblenden
input int InpMeldungSize = 10; // Schriftgroesse der Meldungen
input int InpMeldungY = 40; // Startabstand von oben (unter MT5s eigener Symbol-Zeile)
input int InpMeldungY = 24; // Startabstand von oben (zentriert -> MT5s Symbol-Zeile stoert nicht)
input color InpMeldungColor = clrGainsboro; // Farbe der Meldungen
// Zonen statt nackter Linien (User-Wunsch 2026-08-17). Die BREITE ist die echte
// Spanne der Pivots im Cluster — NICHT Fibonacci (im Projekt gemessen und
@@ -968,8 +975,12 @@ void Redraw()
{
ObjectCreate(0, mn, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, mn, OBJPROP_CORNER, CORNER_LEFT_UPPER);
ObjectSetInteger(0, mn, OBJPROP_XDISTANCE, 12);
ObjectSetInteger(0, mn, OBJPROP_ANCHOR, ANCHOR_LEFT_UPPER);
// ⚠ ZENTRIERT (User-Wunsch 2026-08-19). MT5 kennt keine „Mitte"-Ecke:
// der Bezugspunkt bleibt LINKS OBEN, aber der ANKER wird auf
// ANCHOR_UPPER (Text-Oberkante MITTIG) gesetzt und der X-Abstand
// auf die halbe Chartbreite gelegt. Damit waechst der Text nach
// beiden Seiten und bleibt bei jeder Fensterbreite zentriert.
ObjectSetInteger(0, mn, OBJPROP_ANCHOR, ANCHOR_UPPER);
ObjectSetString (0, mn, OBJPROP_FONT, "Arial");
ObjectSetInteger(0, mn, OBJPROP_FONTSIZE, InpMeldungSize);
ObjectSetInteger(0, mn, OBJPROP_SELECTABLE, false);
@@ -986,6 +997,11 @@ void Redraw()
// 10 pt rendern je nach DPI-Skalierung 16-20 px hoch — bei 16 px
// Zeilenabstand ueberlappen mehrere Meldungen zwangslaeufig.
// Jetzt Faktor 2,0 (10 pt -> 20 px), das traegt auch 125 % DPI.
// ⚠ X JEDEN Redraw neu setzen, nicht nur beim Erzeugen: die Chartbreite
// aendert sich beim Groessenaendern des Fensters, sonst bliebe die
// Zentrierung auf der alten Breite haengen.
ObjectSetInteger(0, mn, OBJPROP_XDISTANCE,
(int)ChartGetInteger(0, CHART_WIDTH_IN_PIXELS) / 2);
ObjectSetInteger(0, mn, OBJPROP_YDISTANCE,
InpMeldungY + msg_idx * (int)(InpMeldungSize * 2.0));
ObjectSetString (0, mn, OBJPROP_TEXT, p[1]);