From eba3feb46afad857bc2cbab4b42bc4d1fc90a5d4 Mon Sep 17 00:00:00 2001 From: Axel Hocks Date: Fri, 21 Aug 2026 13:09:19 +0200 Subject: [PATCH] MQL5 v1.46: PT-Muster wurden NIE gezeichnet - PERIOD_CURRENT ist 0 Das bestaetigte M30-Muster "Tasse+Henkel" blieb unsichtbar, obwohl die CSV-Zeile korrekt vorlag (PT;M30;Tasse+Henkel;bull;87.810;88.746) und der Snapshot status=confirmed meldete. URSACHE: der TF-Filter verglich gegen TFName(PERIOD_CURRENT). PERIOD_CURRENT hat den WERT 0. MT5-Funktionen wie iTime() deuten 0 als "dieser Chart" - ein switch trifft damit aber KEINEN case, und TFName() fiel auf EnumToString() zurueck und lieferte den String "PERIOD_CURRENT". Der Vergleich p[1] != "PERIOD_CURRENT" war deshalb IMMER wahr, jede PT-Zeile wurde uebersprungen. Auf JEDER Zeitebene, nicht nur M30. FIX: TFName((ENUM_TIMEFRAMES)_Period) - _Period liefert die tatsaechliche Chart-Periode als Wert. Die uebrigen PERIOD_CURRENT-Verwendungen im Indikator sind korrekt: sie stehen als Argument in iTime()/Bars(), wo MT5 die 0 selbst aufloest. Kompiliert ins richtige Terminal (D0E8209F...), 0 errors 0 warnings, Spiegel mql5/SR_Levels.mq5 bitgleich. --- mql5/SR_Levels.mq5 | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/mql5/SR_Levels.mq5 b/mql5/SR_Levels.mq5 index 9196026..2f9f268 100644 --- a/mql5/SR_Levels.mq5 +++ b/mql5/SR_Levels.mq5 @@ -12,7 +12,7 @@ //| 4) Der Bot muss laufen (schreibt die CSV alle ~5 s). | //+------------------------------------------------------------------+ #property copyright "Oil Trading Bot" -#property version "1.45" +#property version "1.46" // v1.42 (2026-08-19): Y-Stapel oben rechts GEMESSEN statt geschaetzt. Der // Faktor 1,8 aus v1.41 war nur die naechste Schaetzung; jetzt liefert // TextGetSize die TATSAECHLICHE Pixelhoehe (LabelH). Ausserdem wird Y bei @@ -1021,7 +1021,13 @@ void Redraw() if(typ == "PT") { if(!InpShowMuster || k < 6) continue; - if(p[1] != TFName(PERIOD_CURRENT)) continue; // fremde Zeitebene + // ⚠⚠ `_Period`, NICHT `PERIOD_CURRENT`. PERIOD_CURRENT ist der Wert 0 — + // MT5-Funktionen wie iTime() deuten das als "dieser Chart", ein + // `switch` trifft damit aber KEINEN case und TFName() gab + // "PERIOD_CURRENT" zurueck. Der Vergleich schlug also IMMER fehl und + // es wurde NIE etwas gezeichnet (real am 21.08.: das bestaetigte + // M30-Muster blieb unsichtbar, obwohl die CSV-Zeile korrekt da war). + if(p[1] != TFName((ENUM_TIMEFRAMES)_Period)) continue; // fremde Zeitebene double trg = StringToDouble(p[4]), zl = StringToDouble(p[5]); if(trg <= 0 || zl <= 0) continue; bool bull = (p[3] == "bull");