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.
This commit is contained in:
Axel Hocks
2026-08-21 13:09:19 +02:00
parent 263ec9f9a5
commit eba3feb46a
+8 -2
View File
@@ -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");