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:
co-authored by
Claude Opus 5
parent
e471170b01
commit
e1a671a137
+16
-3
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user