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:
co-authored by
Claude Opus 5
parent
0a465f9258
commit
618f3a4bee
@@ -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").
|
(„⚠ die Welle (steuert die Order) schweigt").
|
||||||
Live gegengerechnet, beide Zeilen erscheinen wie beabsichtigt.
|
Live gegengerechnet, beide Zeilen erscheinen wie beabsichtigt.
|
||||||
⚠ Reine Anzeige — an Gewichten, Gates und Order-Logik ist nichts geändert.
|
⚠ 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
|
- **✅ 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
|
Schriftarten im Dashboard auf em einstellen, damit auf jedem Gerät oder je nach
|
||||||
Fenstergröße die Schriftgröße automatisch angepasst wird."
|
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.
|
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
|
⚠ Ticks/Echtzeit bewusst NICHT geloggt (~85k/Tag = 30M/Jahr, kein Bedarf — Strategien
|
||||||
sind M5+, Slippage aus echten Fills gemessen). ~370k Bars/Jahr = vernachlässigbar.
|
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.
|
||||||
|
|||||||
Reference in New Issue
Block a user