S/R als ZONE statt Linie (RZ/SZ, Indikator v1.37)
User-Wunsch nach einem TradingView-Bild: Resistance Zone und eine untere Zone
als farbige Baender. Neu RZ;lo;hi und SZ;lo;hi, im Indikator als OBJ_RECTANGLE
mit Beschriftung, nach rechts verlaengert.
DIE BREITE IST ECHT: sie ist die Spanne der M30-Pivots, die den Cluster gebildet
haben (sr_levels.zonen(), additiv -- cluster() bleibt unveraendert, weil es den
S/R-Auto-Close speist). Live verifiziert: R;82.786 liegt in RZ;82.776;82.797,
S;82.15 in SZ;82.14;82.16. Einzel-Pivot bekommt 0,10xATR Mindestbreite.
ZWEI ABWEICHUNGEN VOM VORBILD, beide begruendet:
(1) KEIN Fibonacci. Das Bild leitet seine Zone aus 0,618/0,658 ab. Fib ist hier
gemessen und verworfen (04.08.): 54,3/54,5 % Haltequote gegen 55,7/53,8 %
einer Zufallslinie gleicher Distanz, und schlechter als M30-Pivots.
(2) Die untere Zone heisst SUPPORT, nicht "Cumulative Long Liquidation". Echte
Liquidationsdaten hat das Projekt nicht; die HL-Waende sind am 17.08. als
reaktiv gemessen. Bricht die Support-Zone, liegen dort die Long-Stops --
dieselbe Stelle, ehrlich benannt.
Abschaltbar InpShowZonen. Kompiliert ins richtige Terminal (0/0), deployt,
verifiziert.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
8d17cf08e0
commit
ca61cf1498
@@ -2805,6 +2805,46 @@ class TradingEngine:
|
||||
lines.append(f"PL;{_p:.2f};{_cur}")
|
||||
except Exception:
|
||||
pass
|
||||
# ── ZONEN statt nackter Linien (User-Wunsch 2026-08-17, nach einem
|
||||
# TradingView-Bild): RZ;lo;hi = Widerstands-Zone · SZ;lo;hi =
|
||||
# Support-Zone. Der Indikator zeichnet sie als farbiges Band.
|
||||
# ⚠⚠ DIE BREITE IST ECHT, NICHT ERFUNDEN: sie ist die Spanne der
|
||||
# M30-Pivots, die den Cluster gebildet haben (`sr_levels.zonen`).
|
||||
# Das Vorbild-Bild leitet seine Zone aus **Fibonacci** ab (0,618/
|
||||
# 0,658) — Fib ist hier gemessen und VERWORFEN: die Level halten
|
||||
# nicht besser als eine Zufallslinie gleicher Distanz (04.08.,
|
||||
# Haltequote 54,3/54,5 % gegen 55,7/53,8 % Zufall). Eine
|
||||
# Fib-Zone waere also eine huebsche Linie ohne Beleg.
|
||||
# ⚠ Ein Cluster aus EINEM Pivot hat Breite 0 — dann bekommt er eine
|
||||
# Mindestbreite von 0,10xATR, damit das Band sichtbar bleibt.
|
||||
# ⚠ Die untere Zone heisst SUPPORT, nicht „Long Liquidation": echte
|
||||
# Liquidations-Daten hat das Projekt nicht. Bricht sie, liegen dort
|
||||
# die Long-Stops — das ist dieselbe Stelle, aber ehrlich benannt.
|
||||
try:
|
||||
_zl = self._draw_levels() or {}
|
||||
_r0 = (_zl.get("res") or [None])[0]
|
||||
_s0 = (_zl.get("sup") or [None])[0]
|
||||
_ws3 = self.wave.snapshot() or {}
|
||||
_a3 = (_ws3.get("pb_feats") or {}).get("atr") or 0.2
|
||||
_lv3 = _ws3.get("pb_levels30") or _ws3.get("pb_levels") or {}
|
||||
from core.sr_levels import zonen as _zonen_lv
|
||||
_mind = 0.10 * _a3
|
||||
for _px, _seite, _tag in ((_r0, "ph", "RZ"), (_s0, "pl", "SZ")):
|
||||
if _px is None:
|
||||
continue
|
||||
_tr = None
|
||||
for _m, _lo2, _hi2 in _zonen_lv(_lv3.get(_seite) or [], _a3):
|
||||
if abs(_m - _px) < 0.0015:
|
||||
_tr = (_lo2, _hi2); break
|
||||
if _tr is None:
|
||||
_tr = (_px, _px)
|
||||
_lo2, _hi2 = _tr
|
||||
if _hi2 - _lo2 < _mind: # Einzel-Pivot sichtbar machen
|
||||
_mit = (_lo2 + _hi2) / 2.0
|
||||
_lo2, _hi2 = _mit - _mind / 2, _mit + _mind / 2
|
||||
lines.append(f"{_tag};{round(_lo2, 3)};{round(_hi2, 3)}")
|
||||
except Exception:
|
||||
pass
|
||||
# ── MELDUNGEN oben links (MS;<text>) — User-Wunsch 2026-08-17 ────
|
||||
# Dieselben Zeilen wie die Dashboard-Karte „Meldungen" (`#card-pos`).
|
||||
# ⚠⚠ NUR ZUSAMMENSETZEN, NICHT NEU RECHNEN. Der Konsens-Pfeil hat im
|
||||
|
||||
Reference in New Issue
Block a user