diff --git a/CLAUDE.md b/CLAUDE.md index 575e361..75dd433 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1202,9 +1202,18 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche: Daten älter als 60 s werden verworfen. **REINE ANZEIGE** — ob HL-Buch-Signale auf den CFD übertragbar sind, wird gerade gemessen (`analyze_bookflow.py` im HL-Projekt, Datensammlung seit 2026-07-30, Urteil in ~2 Wochen). Der Indikator - **`mql5/SR_Levels.mq5`** (**v1.12** — `LQ`-Handler: dick gestrichelt + Größen-Label - „Liquidität NACHFRAGE/ANGEBOT ", `InpShowWalls`/`InpWallBidColor`/ - `InpWallAskColor`; PT-Handler entfernt; in `MQL5\Indicators\`, **braucht + **`mql5/SR_Levels.mq5`** (**v1.15** — `LQ`-Handler zeichnet seit v1.14 **nur noch + den PFEIL**, rechtsbündig am aktuellen Rand (in `RepositionLabels()` nachgeführt, + bleibt beim Scrollen rechts; Details im **Tooltip**) — Linie und Text-Label sind + auf User-Wunsch raus („Chart zu voll"). **v1.15 = CHART-THEME** (User „Farben im + MT5 wie im Bild"): `ApplyTheme()` setzt beim Start Hintergrund/Gitter/Kerzenfarben + auf die Dashboard-Palette — Bull **#3B82F6**, Bear **#EF4444**, BG **#0D1117**, + Gitter **#10151C** (dezent), Text #8B949E; Liquiditäts-Pfeile **Gold #F59E0B** + (= „Liquiditätszone" der Legende). ⚠ Das ändert das Chart **dauerhaft** (bleibt + auch nach Entfernen des Indikators) → `InpApplyTheme=false` schaltet es ab, alle + Farben sind einzeln als Inputs überschreibbar. Schalter: `InpShowWalls`/ + `InpWallBidColor`/`InpWallAskColor`/`InpShowLiqTrend`/`InpLiqTrendColor`; + PT-Handler entfernt; in `MQL5\Indicators\`, **braucht `OnCalculate` als No-op** sonst Compile-Error, F7-kompilieren, auf den Chart ziehen) liest die S/R-Linien per Timer (OBJ_HLINE) UND den **M30-Regressionskanal als 3 diagonale Trendlinien** (OBJ_TREND, nach rechts verlängert, oben/unten gestrichelt/ diff --git a/mql5/SR_Levels.mq5 b/mql5/SR_Levels.mq5 index 997cf21..cbd500e 100644 --- a/mql5/SR_Levels.mq5 +++ b/mql5/SR_Levels.mq5 @@ -12,7 +12,12 @@ //| 4) Der Bot muss laufen (schreibt die CSV alle ~5 s). | //+------------------------------------------------------------------+ #property copyright "Oil Trading Bot" -#property version "1.14" +#property version "1.15" +// v1.15 (2026-07-30): CHART-THEME (User: „Farben im MT5 wie im Bild") — setzt beim +// Start Hintergrund/Gitter/Kerzenfarben auf die Dashboard-Palette +// (Bull #3B82F6, Bear #EF4444, BG #0D1117, Gitter #10151C dezent). +// Liquiditäts-Pfeile jetzt GOLD #F59E0B (= „Liquiditätszone" der Legende). +// Abschaltbar via InpApplyTheme. ⚠ ändert das Chart dauerhaft. // v1.14 (2026-07-30): Liquiditäts-LINIEN + Text-Labels ENTFERNT (User: „blende die // liquiditätslinien aus, nur die Pfeile sollen rechtsbündig angezeigt werden"). // Es bleibt NUR der Pfeil auf dem Wand-Preis, RECHTSBÜNDIG am aktuellen Rand @@ -47,10 +52,23 @@ input bool InpRangeFill = false; // Range füllen (aus = nur Umris input bool InpShowChannel = true; // Regressionskanal (M30) zeichnen input color InpChanColor = clrYellow; // Kanal-Farbe input bool InpShowWalls = true; // echte Liquiditäts-Wände (Hyperliquid-Orderbuch) -input color InpWallBidColor = clrMediumSpringGreen; // Nachfrage-Wand (Bid, Käufer) -input color InpWallAskColor = clrOrangeRed; // Angebots-Wand (Ask, Verkäufer) +input color InpWallBidColor = C'245,158,11'; // Liquidität Nachfrage (Bid) — Gold +input color InpWallAskColor = C'245,158,11'; // Liquidität Angebot (Ask) — Gold input bool InpShowLiqTrend = true; // Liquiditäts-Trendlinie zeichnen input color InpLiqTrendColor = clrMagenta; // Liquiditäts-Trend (pink) +// ── Chart-THEME (User-Vorgabe 2026-07-30 „Farben im MT5 wie im Bild") ──────── +// Setzt beim Start die Chart-Eigenschaften auf die Dashboard-Palette, damit MT5 +// und die PWA gleich aussehen. Farben in MQL5-Notation C'R,G,B'. +// Bullish #3B82F6 · Bearish #EF4444 · Liquidität #F59E0B · Entry/Target #22C55E +// Hintergrund #0D1117 · Gitter #10151C (sehr dezent) · Text #8B949E +// ⚠ Ändert das Chart dauerhaft (bleibt auch nach Entfernen des Indikators) — +// deshalb per Schalter abschaltbar. +input bool InpApplyTheme = true; // Chart-Farben setzen (Dashboard-Look) +input color InpThemeBull = C'59,130,246'; // Bullish Candle (blau) +input color InpThemeBear = C'239,68,68'; // Bearish Candle (rot) +input color InpThemeBg = C'13,17,23'; // Hintergrund +input color InpThemeGrid = C'16,21,28'; // Gitternetz (dezent) +input color InpThemeText = C'139,148,158'; // Achsen/Text const string PFX = "SRB_"; // Präfix S/R-Linien (aus Datei) const string RPFX = "SRR_"; // Präfix dynamische Range (aus Chart) @@ -60,12 +78,38 @@ bool g_range_drawn = false; // hat DIESE Instanz die Range ge //+------------------------------------------------------------------+ int OnInit() { + if(InpApplyTheme) ApplyTheme(); EventSetTimer(MathMax(1, InpRefreshS)); Redraw(); DrawRange(); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ +//| Chart-Farben auf die Dashboard-Palette setzen (User-Vorgabe). | +//| Kerzen werden GEFÜLLT gezeichnet (Body in Bull-/Bear-Farbe), damit| +//| es aussieht wie im Referenzbild. | +//+------------------------------------------------------------------+ +void ApplyTheme() +{ + ChartSetInteger(0, CHART_MODE, CHART_CANDLES); + ChartSetInteger(0, CHART_COLOR_BACKGROUND, InpThemeBg); + ChartSetInteger(0, CHART_COLOR_FOREGROUND, InpThemeText); + ChartSetInteger(0, CHART_SHOW_GRID, true); + ChartSetInteger(0, CHART_COLOR_GRID, InpThemeGrid); + // Body-Füllung + ChartSetInteger(0, CHART_COLOR_CANDLE_BULL, InpThemeBull); + ChartSetInteger(0, CHART_COLOR_CANDLE_BEAR, InpThemeBear); + // Umriss + Docht in derselben Farbe → klare, flächige Kerzen wie im Bild + ChartSetInteger(0, CHART_COLOR_CHART_UP, InpThemeBull); + ChartSetInteger(0, CHART_COLOR_CHART_DOWN, InpThemeBear); + ChartSetInteger(0, CHART_COLOR_CHART_LINE, InpThemeText); + ChartSetInteger(0, CHART_COLOR_BID, InpThemeBull); + ChartSetInteger(0, CHART_COLOR_ASK, InpThemeBear); + ChartSetInteger(0, CHART_COLOR_STOP_LEVEL, C'239,68,68'); + ChartSetInteger(0, CHART_SHOW_PERIOD_SEP, false); + ChartRedraw(); +} +//+------------------------------------------------------------------+ void OnDeinit(const int reason) { EventKillTimer();