Hyperliquid geprueft: Orderbuch-Stimme raus, Funding gemessen (traegt nicht),
Kontext in die Meldungen (v=145)
Direkt gegen die HL-API geprueft statt aus dem Code geschlossen.
ANGEBOT: 4 Oel-Maerkte (2 liquide: xyz:CL OI 3,07 Mio, xyz:BRENTOIL 2,25 Mio),
je Markt mark/oracle/funding/open_interest/day_volume + l2Book (20 Level je
Seite). Historie: fundingHistory 5.095 Stundenwerte ueber 7 Monate inkl.
premium. Open Interest hat KEINE Historie -> waere sammelpflichtig.
Netz-Frage geklaert: config sagt testnet (leeres Buch, 0 Bids/0 Asks), aber es
sind zwei Schalter — [hyperliquid] network steuert das Handeln (aus),
[sim] price_network die Daten (mainnet, live bestaetigt).
(1) Mehr Orderbuch-Daten: NEIN. Zweimal unabhaengig gemessen — bookflow_report
0,2-1,0 bp gegen eine ~3-bp-Schwelle und KIPPT; Lead-Lag: Pepperstone
fuehrt, HL trifft nach 6 s zu 51 %.
(2) Modul "Orderbuch" Gewicht 0,5 -> 0. Ueber 2.688 Episoden beidhaelftig
negativ (-0,054/-0,066, 49 % Treffer). Chip bleibt.
(3) analyze_hl_funding.py: Funding/Premium gegen den CFD, 2 Haelften.
⚠ Der erste Lauf meldete mehrere "robuste" Buckets und war FALSCH —
ueberlappende Forward-Fenster (aus n=506 werden ~21 unabhaengige Faelle)
und global gebildete Quintile (Bucket mit der Zeit konfundiert). Dass
Funding- und Premium-Tabelle fast identisch waren, war der dritte Hinweis:
HL rechnet das Funding aus dem Premium. Entueberlappt haelt kein Bucket.
(4) hl_ctx in den Meldungen (#hl-note) als reine Anzeige.
⚠ Zwei Bau-Fallen behoben: der Aufruf erbte den 2-s-Timeout der Waende und
lief still ins Leere (braucht real 7,2 s), und er haette den Trend-Loop
blockiert -> Daemon-Thread wie beim Wirtschaftskalender.
Live verifiziert: hl_ctx befuellt, Orderbuch weight=0 bei erhaltenem Chip,
v=145 ausgeliefert, eine Instanz auf Port 8000.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
874ee16e00
commit
2cdd1ba0e8
+40
-1
@@ -694,6 +694,20 @@ class TradingEngine:
|
||||
except Exception as re_: log.warning(f"rec_outcomes: {re_}")
|
||||
# Wirtschaftskalender (self-throttled ~1 h, außerhalb des mt5_lock
|
||||
# unkritisch — reiner HTTP-Fetch mit Timeout)
|
||||
# HL-Kontext (Funding/OI/Premium) — reine Anzeige.
|
||||
# ⚠⚠ IM DAEMON-THREAD, nicht inline: der Aufruf fragt die
|
||||
# HL-API live nach allen Öl-Märkten und braucht real ~7 s.
|
||||
# Inline würde er den Trend-Loop bei jedem Fälligwerden
|
||||
# (~5 min) so lange anhalten — dieselbe Begründung, aus der
|
||||
# der Wirtschaftskalender im Thread läuft. `market()` ist
|
||||
# selbst gedrosselt und thread-sicher, ein zweiter Aufruf
|
||||
# während der erste läuft liefert einfach den Cache.
|
||||
try:
|
||||
if not getattr(self, "_hl_ctx_busy", False):
|
||||
self._hl_ctx_busy = True
|
||||
threading.Thread(target=self._hl_ctx_refresh,
|
||||
daemon=True).start()
|
||||
except Exception as he: log.debug(f"hl market: {he}")
|
||||
try: self.calendar.maybe_refresh()
|
||||
except Exception as ke: log.warning(f"calendar.refresh: {ke}")
|
||||
self._run_analysis()
|
||||
@@ -2974,7 +2988,20 @@ class TradingEngine:
|
||||
imb = w.get("imb5")
|
||||
if isinstance(imb, (int, float)) and abs(imb) >= _OB_IMB_MIN:
|
||||
ov = 1 if imb > 0 else -1
|
||||
ow = 0.5
|
||||
# ⚠⚠ GEWICHT AUF 0 (2026-08-06). Das Orderbuch-Modul ist aus
|
||||
# ZWEI unabhängigen Richtungen als nicht tragfähig gemessen:
|
||||
# · `analyze_verdict_modules.py` (15.544 Zeilen): über **2.688
|
||||
# Episoden beidhälftig NEGATIV** (−0,054/−0,066 ×ATR, 49 %
|
||||
# Treffer) — der einzige konsistent falsche Beitrag im Feld.
|
||||
# · Das HL-Projekt selbst (`bookflow_report.txt`): Bid/Ask-Druck
|
||||
# auf den CFD übertragen −0,61/−0,52 bp und KIPPT; die eigene
|
||||
# Schwelle dort lautet „< ~3 bp ist von den Kosten gefressen".
|
||||
# Dazu der Lead-Lag-Befund: **Pepperstone führt** (Peak k=−1 ≈ 6 s),
|
||||
# HL-Richtung trifft nach 6 s zu 51 % (n=545) — alles
|
||||
# Preis-Abgeleitete von HL läuft hinterher.
|
||||
# Der CHIP bleibt (Imbalance ist als Kontext lesbar), nur die
|
||||
# Stimme entfällt. Zurück: `ow = 0.5`.
|
||||
ow = 0.0
|
||||
odet = f"Imbalance {imb:+.2f}"
|
||||
elif isinstance(imb, (int, float)):
|
||||
odet = f"Imbalance {imb:+.2f} (zu schwach)"
|
||||
@@ -3090,6 +3117,17 @@ class TradingEngine:
|
||||
self._align_ts = now
|
||||
return getattr(self, "_align_cache", None)
|
||||
|
||||
def _hl_ctx_refresh(self):
|
||||
"""Holt den HL-Kontext im Hintergrund (s. Aufrufstelle im Trend-Loop)."""
|
||||
try:
|
||||
d = self.hl_walls.market()
|
||||
if d:
|
||||
self._hl_ctx = d
|
||||
except Exception as e:
|
||||
log.debug(f"hl market: {e}")
|
||||
finally:
|
||||
self._hl_ctx_busy = False
|
||||
|
||||
def _block_mix_cached(self) -> dict | None:
|
||||
"""WELCHE Gates blocken heute, und wie oft? (2026-08-06)
|
||||
|
||||
@@ -3726,6 +3764,7 @@ class TradingEngine:
|
||||
(self.news.sentiment or {}).get("score")),
|
||||
"alignment": self._alignment_cached(),
|
||||
"block_mix": self._block_mix_cached(),
|
||||
"hl_ctx": getattr(self, "_hl_ctx", None),
|
||||
"rec_track": self._rec_track_cached(),
|
||||
# Kennzahlen der MANUELLEN Trades für die gleichnamige Karte
|
||||
# (2026-08-04). Rein deskriptiv; ~120 s gecacht, damit der heiße
|
||||
|
||||
Reference in New Issue
Block a user