MQL5 v1.28: G/V der offenen Position unter dem Kurs

User-Wunsch. Der Bot exportiert PL;wert;waehrung, der Indikator zeigt es als
OBJ_LABEL direkt unter dem Kurs oben rechts (CORNER_RIGHT_UPPER, Y = Kurs-Y +
Schrifthoehe + Abstand), gruen im Plus / rot im Minus.

Wert ist NETTO wie im Dashboard: bei Gewinn abzueglich der WHT-Quellensteuer
([trading] wht_pct = 26.375), bei Verlust unveraendert (dort faellt keine an).
Ohne offene Position schickt der Bot keine PL-Zeile -> Redraw() raeumt das Label
per ObjectsDeleteAll(PFX) automatisch weg.

Verifiziert: PL;-20.59;EUR in sr_levels.csv, deckt sich mit dem Dashboard-Netto.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-30 19:20:49 +02:00
co-authored by Claude Opus 4.8
parent 04ea6934ee
commit 2bda2680bb
3 changed files with 54 additions and 2 deletions
+15
View File
@@ -2031,6 +2031,21 @@ class TradingEngine:
lines.append(f"PX;{_bid}")
except Exception:
pass
# G/V der offenen Position, direkt unter dem Kurs (User-Wunsch 2026-07-30):
# PL;wert;waehrung. **NETTO** wie im Dashboard — bei Gewinn abzüglich der
# WHT-Quellensteuer, die der Broker einbehält (`[trading] wht_pct`); bei
# Verlust unverändert (da fällt keine Steuer an). Ohne Position keine Zeile
# → der Indikator löscht das Label.
try:
_ps = self.trader.snapshot()
if _ps.get("ticket") and _ps.get("pnl") is not None:
_p = float(_ps["pnl"])
if _p > 0 and self._wht_pct > 0:
_p *= (1.0 - self._wht_pct / 100.0)
_cur = (self.data.snapshot() or {}).get("currency") or ""
lines.append(f"PL;{_p:.2f};{_cur}")
except Exception:
pass
# Trade-Marker: TR;<O|C>;<broker_time> → der Indikator umrandet die Kerze,
# in der eröffnet (hellgrün) bzw. geschlossen (dunkelgrün) wurde
# (User-Vorgabe 2026-07-30). Offene Position + die letzten Trades des Tages.