Y-Stapel oben rechts korrigiert (Indikator v1.41)

User: oben rechts die Texte ueberlagern sich. Dieselbe Punkt-statt-Pixel-
Rechnung wie gestern links -- OBJPROP_FONTSIZE ist in PUNKT, die alten Formeln
behandelten sie wie Pixel.

Bei InpPriceSize=20 stand:
  Kurs  y=14, 20 pt -> belegt 14..50
  G/V   y=44        -> lag MITTEN im Kurs
  HL    y=56        -> lag MITTEN im G/V

Jetzt gestapelt mit Faktor 1,8 px je Punkt (konservativ zwischen 1,6 und 2,0,
traegt auch 125 % DPI):
  Kurs 14 · G/V 50 · HL 78

Die Positionen werden deterministisch aus den Schriftgroessen berechnet, nicht
ueber eine laufende Variable -- die CSV-Zeilen kommen nicht in garantierter
Reihenfolge, ein Akkumulator waere davon abhaengig.

Kompiliert ins richtige Terminal: 0 errors, 0 warnings, .ex5 frisch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-19 00:13:55 +02:00
co-authored by Claude Opus 5
parent e471170b01
commit e1a671a137
+16 -3
View File
@@ -12,7 +12,12 @@
//| 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.40" #property version "1.41"
// v1.41 (2026-08-19): Y-STAPEL oben rechts korrigiert (User: "oben rechts die
// Texte ueberlagern sich"). Dieselbe Punkt-statt-Pixel-Rechnung wie
// gestern links: bei InpPriceSize=20 lag G/V auf y=44 mitten im Kurs
// (14..50) und HL auf y=56 mitten im G/V. Jetzt gestapelt mit Faktor
// 1,8 px je Punkt -> Kurs 14, G/V 50, HL 78.
// v1.40 (2026-08-19): MELDUNGEN ZENTRIERT statt oben links (User-Wunsch). // v1.40 (2026-08-19): MELDUNGEN ZENTRIERT statt oben links (User-Wunsch).
// MT5 kennt keine "Mitte"-Ecke: Bezug bleibt CORNER_LEFT_UPPER, aber der // MT5 kennt keine "Mitte"-Ecke: Bezug bleibt CORNER_LEFT_UPPER, aber der
// ANKER wird ANCHOR_UPPER (Oberkante mittig) und X = halbe Chartbreite. // ANKER wird ANCHOR_UPPER (Oberkante mittig) und X = halbe Chartbreite.
@@ -879,7 +884,9 @@ void Redraw()
ObjectSetInteger(0, hn, OBJPROP_CORNER, CORNER_RIGHT_UPPER); ObjectSetInteger(0, hn, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, hn, OBJPROP_XDISTANCE, 12); ObjectSetInteger(0, hn, OBJPROP_XDISTANCE, 12);
// unter Kurs (14) und G/V (14+PriceSize+6) einreihen // unter Kurs (14) und G/V (14+PriceSize+6) einreihen
ObjectSetInteger(0, hn, OBJPROP_YDISTANCE, 14 + InpPriceSize + 6 + InpPriceSize - 4); ObjectSetInteger(0, hn, OBJPROP_YDISTANCE,
14 + (int)(InpPriceSize * 1.8)
+ (int)(MathMax(8, InpPriceSize - 4) * 1.8));
ObjectSetInteger(0, hn, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER); ObjectSetInteger(0, hn, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);
ObjectSetInteger(0, hn, OBJPROP_SELECTABLE, false); ObjectSetInteger(0, hn, OBJPROP_SELECTABLE, false);
ObjectSetString (0, hn, OBJPROP_FONT, "Arial"); ObjectSetString (0, hn, OBJPROP_FONT, "Arial");
@@ -911,6 +918,11 @@ void Redraw()
ObjectCreate(0, pn, OBJ_LABEL, 0, 0, 0); ObjectCreate(0, pn, OBJ_LABEL, 0, 0, 0);
ObjectSetInteger(0, pn, OBJPROP_CORNER, CORNER_RIGHT_UPPER); ObjectSetInteger(0, pn, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, pn, OBJPROP_XDISTANCE, 12); ObjectSetInteger(0, pn, OBJPROP_XDISTANCE, 12);
// ⚠ Y-STAPEL oben rechts (Fix 2026-08-19). Reihenfolge von oben:
// Kurs (20 pt) -> G/V (16 pt) -> HL (13 pt). Die Abstaende
// rechnen mit Faktor 1,8 px je PUNKT — FONTSIZE ist in Punkt,
// nicht Pixel. Die alte Formel behandelte sie wie Pixel, dadurch
// lag G/V (y=44) IM Kurs (14..50) und HL (y=56) IM G/V (44..73).
ObjectSetInteger(0, pn, OBJPROP_YDISTANCE, 14); ObjectSetInteger(0, pn, OBJPROP_YDISTANCE, 14);
ObjectSetInteger(0, pn, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER); ObjectSetInteger(0, pn, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);
ObjectSetString (0, pn, OBJPROP_FONT, "Arial Black"); ObjectSetString (0, pn, OBJPROP_FONT, "Arial Black");
@@ -1026,7 +1038,8 @@ void Redraw()
ObjectSetInteger(0, qn, OBJPROP_CORNER, CORNER_RIGHT_UPPER); ObjectSetInteger(0, qn, OBJPROP_CORNER, CORNER_RIGHT_UPPER);
ObjectSetInteger(0, qn, OBJPROP_XDISTANCE, 12); ObjectSetInteger(0, qn, OBJPROP_XDISTANCE, 12);
// direkt unter dem Kurs: dessen Y (14) + Schrifthoehe + kleiner Abstand // direkt unter dem Kurs: dessen Y (14) + Schrifthoehe + kleiner Abstand
ObjectSetInteger(0, qn, OBJPROP_YDISTANCE, 14 + InpPriceSize + 10); ObjectSetInteger(0, qn, OBJPROP_YDISTANCE,
14 + (int)(InpPriceSize * 1.8));
ObjectSetInteger(0, qn, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER); ObjectSetInteger(0, qn, OBJPROP_ANCHOR, ANCHOR_RIGHT_UPPER);
ObjectSetString (0, qn, OBJPROP_FONT, "Arial Black"); ObjectSetString (0, qn, OBJPROP_FONT, "Arial Black");
ObjectSetInteger(0, qn, OBJPROP_SELECTABLE, false); ObjectSetInteger(0, qn, OBJPROP_SELECTABLE, false);