MQL5 v1.15: Chart-Theme wie im Dashboard (User-Vorgabe mit Referenzbild)

ApplyTheme() setzt beim Indikator-Start die Chart-Eigenschaften auf die
Dashboard-Palette:
  Bull #3B82F6 (blau) - Bear #EF4444 (rot) - BG #0D1117
  Gitter #10151C (dezent) - Text #8B949E - Kerzen gefuellt (CHART_CANDLES)
  Liquiditaets-Pfeile Gold #F59E0B (= "Liquiditaetszone" der Legende)
Periodentrenner aus, Bid/Ask in Bull/Bear-Farbe.

Abschaltbar via InpApplyTheme, alle Farben einzeln als Inputs ueberschreibbar.
WARNUNG dokumentiert: aendert das Chart dauerhaft (bleibt nach Entfernen des
Indikators bestehen).

Kompiliert. CLAUDE.md aktualisiert (Indikator-Stand v1.12 -> v1.15, inkl. der
v1.14-Umstellung auf "nur Pfeile rechtsbuendig").

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-07-30 18:18:00 +02:00
co-authored by Claude Opus 4.8
parent a9908cf0fb
commit b75997d703
2 changed files with 59 additions and 6 deletions
+12 -3
View File
@@ -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 <kontrakte>", `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/
+47 -3
View File
@@ -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();