Doku: Einsatz je Pfad, MQL5 v1.44 und drei neue Fehlerklassen

Pflege-Regel. Festgehalten sind neben den beiden Features vor allem drei
Fallen, die heute real zugeschlagen haben:

1. Ein fehlgeschlagener MQL5-Compile LOESCHT die .ex5 - und der Default-Log
   des Terminals wird dabei nicht ueberschrieben. Ich habe daraufhin "0 errors"
   aus einem stale Log gemeldet, waehrend der Chart gar keinen Indikator hatte.
   Regel: eigener Logpfad je Compile, Pruefung auf "Result: N errors" PLUS
   .ex5-Zeitstempel.
2. Backticks in einer Bash-Commit-Nachricht werden als Kommando ausgefuehrt.
3. "git commit --amend -F <fehlende Datei>" nimmt eine stale COMMIT_EDITMSG,
   also die Nachricht eines fremden Commits.

Asset-Version auf v=182 nachgezogen (stand noch auf 169).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Axel Hocks
2026-08-19 19:07:13 +02:00
co-authored by Claude Opus 5
parent 0a465f9258
commit 618f3a4bee
+65 -1
View File
@@ -4328,7 +4328,7 @@ Trader wäre sie nie abgelaufen. Latte unverändert: Verhältnis < 1,0 ODER PF <
(„⚠ die Welle (steuert die Order) schweigt").
Live gegengerechnet, beide Zeilen erscheinen wie beabsichtigt.
⚠ Reine Anzeige — an Gewichten, Gates und Order-Logik ist nichts geändert.
- Asset-Version aktuell **v=169** (in `web/index.html` hochzählen, siehe Workflows).
- Asset-Version aktuell **v=182** (in `web/index.html` hochzählen, siehe Workflows).
- **✅ SCHRIFT SKALIERT MIT DEM FENSTER (2026-08-13, v=167).** User: „die Größe der
Schriftarten im Dashboard auf em einstellen, damit auf jedem Gerät oder je nach
Fenstergröße die Schriftgröße automatisch angepasst wird."
@@ -8586,3 +8586,67 @@ besser) · Teil-Exit bei 1:1 (`_PARTIAL_TP_FRAC=0`, User-Vorgabe).
weg (kurz); M1 ist die Master-Auflösung → aus M1 jede höhere TF exakt aggregierbar.
⚠ Ticks/Echtzeit bewusst NICHT geloggt (~85k/Tag = 30M/Jahr, kein Bedarf — Strategien
sind M5+, Slippage aus echten Fills gemessen). ~370k Bars/Jahr = vernachlässigbar.
## ✅ EINSATZ JE AUTONOMEM PFAD + MELDUNGS-ABSTAND IM CHART (2026-08-19, v=182 / MQL5 v1.44)
**(1) Eingabefeld `Einsatz je Pfad` in der Breakout-Karte** (User-Wunsch
"Margin Verhaeltnis von M15 / BRK manuell setzen"). Zwei Zahlenfelder
`BRK / M15`, **0 = globaler Wert** (`margin_buffer_pct`, live 40).
`POST /api/automargin {brk, m15}` · `engine.set_auto_margin` · Snapshot
`margin_brk`/`margin_m15` · neustart-fest.
⚠⚠ **ES IST KEINE GLEICHZEITIGE RESERVIERUNG — das war der Wunsch, aber es
geht heute nicht.** Der Bot haelt **EINE** Position (`_check_auto_squeeze`
feuert "nur FLAT"), und Trailing, Notfall-Stop, S/R-Close, Time-Stop und
Circuit-Breaker verwalten je EINE Position — **42 Einzel-Positions-Annahmen in
`engine.py`, 25 in `trader.py`**. Bei zwei Positionen auf demselben Symbol
haengt der GESAMTE Schutz-Stack an einer davon, die andere liefe ungeschuetzt.
**Das ist ein Sicherheits-, kein Aufwandsargument.** Das Feld steuert die
**GROESSE** der jeweiligen Position, wenn dieser Pfad eroeffnet.
**Manuelle Trades bleiben beim globalen Wert** — Absicht: der Mensch ist die
gemessen bessere Population (+1,56 gegen 4,71 EUR/Lot).
Umsetzung quellen-abhaengig wie die SL-Zeitebene seit 05.08.: `_open()` setzt
`config.MARGIN_BUFFER` fuer die Dauer des einen Aufrufs, `finally` stellt ihn
zurueck. ⚠ Direkt gesetzt statt ueber `set_margin_buffer()` — das loggt je
Trade eine Zeile und wuerde den globalen Wert dauerhaft ueberschreiben.
✅ Ende-zu-Ende: 50/25 gesetzt → Snapshot → persistiert · 150 abgelehnt · 0/0
zurueck · `deploy.py --feld margin_brk`, alle 5 Schritte.
⚠⚠ **ZWEI ECHTE FEHLER VOM LINTER GEFANGEN, die `py_compile` durchwinkte:**
`config` war in `engine.py` **gar nicht importiert** (nur Einzelnamen via
`from core.config import ...`), und in `server.py` hiess die Engine `eng` statt
`app.state.engine`. Beide sassen in Pfaden, die erst beim **ERSTEN autonomen
Trade** bzw. beim ersten Klick gefeuert haetten — genau die Klasse, fuer die
`ruff F821` am 07.08. eingebaut wurde. **Zweiter echter Fang seit dem Einbau.**
**(2) MQL5 v1.44 — Meldungs-Zeilenabstand MESSEN statt schaetzen.**
User: "die zeilenabstaende sind immer noch zu gering" (nach v1.43). Zwei
Ursachen: **(a)** `OBJPROP_FONTSIZE` wurde **nur beim Erzeugen** gesetzt — ein
bestehendes Label behaelt seine Groesse, die Erhoehung 10→11 pt kam auf dem
Chart nie an (gleiche Klasse wie die X-Position, die genau deshalb schon jeden
Redraw neu gesetzt wird). **(b)** Der Abstand wurde aus der **Punkt**groesse
hochgerechnet (Faktor 2,0, dann 2,6) — Punkt→Pixel haengt an der DPI-Skalierung
und ist vom Quelltext aus **nicht bekannt**. Jetzt `TextGetSize` (+8 px Luft),
Fallback 2,6. ⚠ `TextSetFont` mit **negativer** Groesse = 1/10 pt, nur diese
Form wird DPI-korrekt skaliert.
⚠⚠ **Und ein eigener Fehler der bekannten Klasse:** der erste v1.44-Compile
**schlug fehl** (`error 246: TextGetSize verlangt uint&`) und **loeschte dabei
die `.ex5`** — der Chart hatte kurzzeitig **gar keinen Indikator**. Ich habe
trotzdem "0 errors" gemeldet, weil ich einen **stale Logfile** gelesen habe
(erkennbar an identischen 894 ms). Exakt der dokumentierte Fall *"eine
Erfolgsmeldung muss den Zustand NACH der Aktion pruefen, nicht den davor"*.
Aufgefallen nur durch die `.ex5`-Zeitstempelpruefung danebenan.
**➤ Regel: je Compile einen EIGENEN Logpfad, und auf `Result: N errors` PLUS
`.ex5`-Alter pruefen — nie auf den Default-Log des Terminals.**
⚠⚠ **ZWEI COMMIT-FALLEN, beide neu und beide dokumentierenswert:**
**(a)** **Backticks in einer Bash-Commit-Nachricht** werden als
Kommando-Substitution ausgefuehrt — alle eingeklammerten Namen verschwanden
aus dem Text (`_check_auto_squeeze` → leer). **(b)** Ein **Bash-Pfad**
(`/c/Users/...`) an Python uebergeben schlaegt fehl, und
`git commit --amend -F <fehlende Datei>` nahm daraufhin eine **STALE
`COMMIT_EDITMSG`** — also die Nachricht eines **fremden** Commits.
✅ Der Code war nie betroffen (Arbeitsbaum sauber, Remote synchron), nur die
Beschriftung. **➤ Commit-Nachrichten mit Backticks oder deutschen Quotes ueber
eine DATEI (`-F`) schreiben, und die Datei vorher auf `-s` pruefen** — dieselbe
Familie wie die dokumentierte Heredoc-Regel.