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:
co-authored by
Claude Opus 5
parent
046d9c6948
commit
e471170b01
+20
-4
@@ -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]);
|
||||
|
||||
Reference in New Issue
Block a user