Doku: PT-Muster-Export + der PERIOD_CURRENT-Fehler

This commit is contained in:
Axel Hocks
2026-08-21 13:11:14 +02:00
parent eba3feb46a
commit c512863e5f
+45
View File
@@ -9459,3 +9459,48 @@ unabhängig vom Schalter berechnet. ⚠ Diese Anzeigen tragen dieselbe Inversion
sie sind Kontext, kein Urteil. sie sind Kontext, kein Urteil.
**Was weiter schützt:** Broker-SL 2×ATR, Trailing, Time-Stop. **Was weiter schützt:** Broker-SL 2×ATR, Trailing, Time-Stop.
**Zurück:** Knopf **S/R** — dann bitte den Wächter-Anker mitdrehen. **Zurück:** Knopf **S/R** — dann bitte den Wächter-Anker mitdrehen.
## ✅⚠⚠ BESTÄTIGTES CHARTMUSTER IM MT5-CHART (2026-08-21, Indikator v1.45/1.46)
User: „kannst Du das bestätigte Chartmuster in das jeweils passende Chart
(M1, M5, M15, H1) im MT5 einzeichnen".
**Neue CSV-Zeile `PT;<TF>;<name>;<richtung>;<trigger>;<ziel>`** — gespeist aus
`engine.patterns_tf` (fünf `PatternDetector`, je Zeitebene einer). Exportiert
werden **nur `status == "confirmed"`**-Muster. Der Indikator zeichnet die
Trigger-/Nackenlinie durchgezogen und das Measured-Move-Ziel gepunktet, dazu ein
Label mit Name und Richtung.
**Das Label nennt die Messung mit: „(trifft 1338 %)".** Die
Muster-Klasse ist im Projekt **3× als Signal verworfen**
(`backtest_doubletop.py`, `backtest_structure_tf.py`, `backtest_patterns.py`) —
der positive ØR dort kam nachweislich vom **Trailing auf einem Momentum-Bruch**,
nicht von der Muster-Prognose. Eine Linie im Chart ohne diese Zahl würde
autoritativer aussehen, als sie ist. **Kein Verdict-Gewicht, kein Trigger.**
**Round-Robin statt fünf Aufrufe am Stück.** Der erste Bau ließ alle fünf
Detektoren in EINEM Trend-Loop-Durchlauf unter `mt5_lock` laufen — real hängte
danach `_trend_loop` beim Serverstart, `_pos_loop` 70 s später, und alle 15 s
stand „Time-Stop-Close fehlgeschlagen: MT5 belegt" im Log (User: „G/V
aktualisiert nicht mehr"). Jetzt wird **je Durchlauf genau EINE** Zeitebene
aufgefrischt.
⚠⚠ **DER FEHLER, der es unsichtbar machte — und er traf JEDE Zeitebene, nicht
nur M30 (v1.46, User: „in M30 müsste ,Tasse mit Henkel' zu sehen sein, ist aber
nicht sichtbar").** Der TF-Filter verglich gegen `TFName(PERIOD_CURRENT)`.
**`PERIOD_CURRENT` ist der WERT 0.** MT5-Funktionen wie `iTime()` deuten die 0
selbst als „dieser Chart" — ein `switch` trifft damit aber **keinen case**, und
`TFName()` fiel auf `EnumToString()` zurück und lieferte den String
`"PERIOD_CURRENT"`. Der Vergleich war deshalb **immer** wahr, jede `PT`-Zeile
wurde übersprungen.
**Fix: `TFName((ENUM_TIMEFRAMES)_Period)`**`_Period` liefert die
tatsächliche Chart-Periode als Wert. Die übrigen `PERIOD_CURRENT`-Vorkommen im
Indikator sind **korrekt** und bleiben: sie stehen als Argument in
`iTime()`/`Bars()`, wo MT5 die 0 auflöst.
**Merksatz: `PERIOD_CURRENT` ist ein Argument-Platzhalter, kein Wert.** Wer
darauf vergleicht oder `switch`t, prüft gegen die 0 — und die gehört zu keiner
Zeitebene.
⚠ Von außen sah alles richtig aus: CSV-Zeile vorhanden, Snapshot `confirmed`,
`.ex5` frisch, `0 errors`. **Nur das Ergebnis fehlte** — dieselbe Klasse wie die
vier dokumentierten Fälle „Erfolg melden, wo nichts geprüft wurde".
Abschaltbar: `InpShowMuster=false`; Farben `InpMusterBullColor`/`…BearColor`.