Liquiditaets-Waende: Richtungs-Pfeil + pinke Liquiditaets-Trendlinie (v1.13)

User-Wunsch: "Kennzeiche die Liquiditaetslinie mit einem Pfeil in welche richtung
die linie den Kurs treibt. Zeichne mir eine Trendlnie in pink im mt5 auf basis
der liquiditaet ein".

(a) Pfeil je Wand in Wirkrichtung (Lesart "die Wand haelt": Nachfrage stuetzt hoch,
    Angebot deckelt runter); groessere Wand dicker + "<<". CSV-Format erweitert:
    LQ;<B|A>;preis;size;<U|D>;<1|0>.
    WICHTIG: Pfeilrichtung ist INTERPRETATION, nicht gemessen -- die Gegenthese
    ("Liquidity Grab", Kurs laeuft ZUR Wand) ist genauso verbreitet. Klaert
    analyze_bookflow.py Frage 3.

(b) Pinke Liquiditaets-Trendlinie LT;t1;p1;t2;p2;<U|D>: Regression ueber den
    VOLUMENGEWICHTETEN Wand-Schwerpunkt der letzten 60 min. Zeigt, wohin das
    Gewicht der RUHENDEN Orders wandert -- nicht der gehandelte Kurs.
    Zeiten im Bot in Broker-Zeit umgerechnet, Preise basis-korrigiert.

HL /api/walls liefert jetzt arrow_bid/arrow_ask/dominant/trend.
Verifiziert: LQ;B;84.182;2441;U;1 / LQ;A;84.223;2441;D;0 /
LT;1785427175;84.135;1785430664;83.978;D in sr_levels.csv. Indikator kompiliert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-30 15:58:50 +02:00
co-authored by Claude Opus 4.8
parent f64677895e
commit 06b37a1474
4 changed files with 127 additions and 8 deletions
+16 -2
View File
@@ -1940,11 +1940,25 @@ class TradingEngine:
# basis-korrigiert auf CFD-Niveau) — Format LQ;<B|A>;preis;size.
# Anders als R/S NICHT aus Pivots geschätzt, sondern tatsächlich ruhende
# Orders. REINE ANZEIGE (Übertragbarkeit auf den CFD wird gerade gemessen).
# Format: LQ;<B|A>;preis;size;<U|D>;<1|0> (Pfeil-Richtung = Wirkrichtung
# der Wand nach der Lesart „sie hält"; letztes Feld 1 = die GRÖSSERE der
# beiden Wände). Zusätzlich LT;t1;p1;t2;p2;<U|D> = Liquiditäts-Trendlinie
# (Regression über den volumengewichteten Wand-Schwerpunkt) — Zeiten
# werden hier in BROKER-Zeit umgerechnet, weil MT5-Charts die brauchen.
try:
w = self.hl_walls.walls()
if w:
lines.append(f"LQ;B;{w['bid']};{w['bid_sz']:.0f}")
lines.append(f"LQ;A;{w['ask']};{w['ask_sz']:.0f}")
dom = w.get("dominant")
ab = "U" if (w.get("arrow_bid") == "up") else "D"
aa = "D" if (w.get("arrow_ask") == "down") else "U"
lines.append(f"LQ;B;{w['bid']};{w['bid_sz']:.0f};{ab};{1 if dom=='B' else 0}")
lines.append(f"LQ;A;{w['ask']};{w['ask_sz']:.0f};{aa};{1 if dom=='A' else 0}")
tr = w.get("trend")
if tr and tr.get("t1") and tr.get("t2"):
boff = self.trader._broker_offset_s()
lines.append(f"LT;{int(tr['t1'])+boff};{tr['p1']};"
f"{int(tr['t2'])+boff};{tr['p2']};"
f"{'U' if tr.get('dir')=='up' else 'D'}")
except Exception:
pass
# Zonen NICHT mehr aus der (statischen) [zones]-Config — die dynamische
+11 -1
View File
@@ -67,7 +67,17 @@ class HLWalls:
data = {"bid": float(d["bid_mt5"]), "ask": float(d["ask_mt5"]),
"bid_sz": float(d.get("bid_sz") or 0),
"ask_sz": float(d.get("ask_sz") or 0),
"basis": d.get("basis"), "imb5": d.get("imb5")}
"basis": d.get("basis"), "imb5": d.get("imb5"),
# Wirkrichtung je Wand (Pfeil im Chart) + größere Wand.
# ⚠ Lesart „die Wand hält" — INTERPRETATION, nicht gemessen.
"arrow_bid": d.get("arrow_bid") or "up",
"arrow_ask": d.get("arrow_ask") or "down",
"dominant": d.get("dominant"),
# Liquiditäts-Trendlinie (Regression über den volumen-
# gewichteten Wand-Schwerpunkt): {t1,p1,t2,p2,dir,slope_per_h}
# — Zeiten sind LOKALE Epoch, der Aufrufer rechnet sie in
# Broker-Zeit um (MT5-Charts brauchen Broker-Zeit).
"trend": d.get("trend")}
self._fail_logged = False
except Exception as e:
if not self._fail_logged: # nur 1× melden, nicht jeden Tick