Fix: Broker-Offset bei geschlossenem Markt (-9,5 h statt +3 h)

`_broker_offset_s()` leitete die Zeitzone aus `tick.time - now` ab. Das misst
die Zeitzone nur bei FRISCHEM Tick; steht der Markt, misst es die Veraltung.
Real am 01.08. (letzter Tick Fr 23:54): -34210 s -> gerundet -34200 (-9,5 h)
statt +10800. Die Pruefung [-12h,+14h] liess das durch.

Folgen (die Laufzeit-Uhr war nur das Sichtbare):
- open_time 12,5 h in der Zukunft -> Laufzeit 0:00
- Time-Stop-Alter (trailing.py:504) negativ -> 120-min-Stop haette nicht ausgeloest
- deal.time-Umrechnung beim externen Close, alle MQL5-Chart-Anker

Fix: Offset nur noch aus frischem Tick bestimmen, sonst letzter gueltiger Wert
(vorbelegt UTC+3 = dieselbe Konstante wie engine.broker_utc_offset). Frische am
bereits bekannten Offset gemessen -> nicht zirkulaer. Schwelle 900 s < halbes
Rundungsraster. Zeitzonen-Wechsel wird uebernommen und geloggt.

Ausserdem:
- market_closed greift sofort nach Neustart: _last_bid_move_ts wird aus dem
  echten Tick-Alter vorbelegt statt bei null zu starten (vorher 180 s blind)
- pollSnapshot: der stille catch umschloss render() -> Render-Fehler wurden
  lautlos verschluckt, das Dashboard fror ohne Konsolen-Fehler ein. Jetzt ist
  nur noch der fetch im try.
- Header-Labels ausgeschrieben: "PEPPERSTONE KURS" / "HYPERLIQUID KURS"
- v=131, CLAUDE.md (Deployment-Drift Fall 4)

Verifiziert: market_closed sofort True, tick_age gegen die Rohwerte 0 s
Abweichung, open_time -> 31.07. 22:54 (Laufzeit +15,8 h).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-01 14:44:25 +02:00
co-authored by Claude Opus 5
parent 2ea17ce3e0
commit b8bb1d260f
5 changed files with 149 additions and 20 deletions
+6 -5
View File
@@ -6,7 +6,7 @@
<meta name="theme-color" content="#0d1117">
<title>Oil · MT5</title>
<link rel="manifest" href="manifest.json">
<link rel="stylesheet" href="style.css?v=130">
<link rel="stylesheet" href="style.css?v=131">
</head>
<body>
<!-- Modul-Menü (ganz oben) -->
@@ -34,11 +34,12 @@
<div class="px"><label>BALANCE</label><span id="balance"></span></div>
<div class="px"><label>TAG P/L</label><span id="day-pl"></span></div>
<div class="px"><label>EQUITY</label><span id="equity"></span></div>
<div class="px"><label id="hdr-price-lbl">KURS</label><span id="hdr-price"></span></div>
<div class="px"><label id="hdr-price-lbl">PEPPERSTONE KURS</label><span id="hdr-price"></span></div>
<!-- Hyperliquid-Kurs NEBEN dem Broker-Kurs (User 2026-08-01). HL handelt 24/7,
Pepperstone nicht — am Wochenende der einzige lebende Kurs. Basis-korrigiert,
also direkt vergleichbar. -->
<div class="px" id="px-hl"><label>HL</label><span id="hdr-hl"></span></div>
also direkt vergleichbar. Beide Quellen AUSGESCHRIEBEN (User 2026-08-01):
„KURS"/„HL" ließ offen, welcher Kurs woher kommt. -->
<div class="px" id="px-hl"><label>HYPERLIQUID KURS</label><span id="hdr-hl"></span></div>
<div class="px"><label>G/V</label><span id="hdr-pnl"></span></div>
</div>
</header>
@@ -248,6 +249,6 @@
<div id="toast" class="toast hidden"></div>
<script src="lightweight-charts.standalone.production.js?v=114"></script>
<script src="app.js?v=130"></script>
<script src="app.js?v=131"></script>
</body>
</html>