Feste Einsatz-Margin (UI-Feld) + lokale Sprachausgabe via Piper
EINSATZ-FELD (User-Wunsch): Laufzeitwert MANUAL_MARGIN in core/config.py (set/get_manual_margin, Muster wie set_margin_buffer). 0 = automatisch wie bisher (margin_buffer_pct % der freien Margin), > 0 = Position wird auf genau diesen Margin-Einsatz gerechnet. - calc_lots setzt es um und DECKELT auf freie Margin x Buffer; ein zu hoher Wunschwert wird begrenzt und geloggt statt an den Broker durchgereicht. Reicht der Betrag nicht fuers Mindestlot -> 0.0 + Warnung, Trade sauber abgelehnt. - Vorrang vor dem Risiko-Modus in trader._send_locked: eine ausdrueckliche Groessenvorgabe schlaegt die Rechenregel. - Wirkt auf ALLE neuen Positionen, auch die autonomen. - UI-Feld "Einsatz" in der ORDER-Leiste (nicht in der Trade-Leiste: die ist nur bei offener Position sichtbar, der Einsatz muss vorher einstellbar sein), bernstein umrandet solange gesetzt. Enter blurrt nur, change sendet einmal. - POST /api/manualmargin, Snapshot manual_margin, neustart-fest ueber runtime_state.json. Ende-zu-Ende getestet (250 -> Snapshot -> 0 -> persistiert). - Lot-Logik isoliert geprueft: 200 EUR -> 0,58 Lots; 5000 EUR -> gedeckelt. SPRACHAUSGABE: Piper lokal (tools/speak.py). Windows-TTS funktioniert zwar, aber es ist KEINE deutsche Stimme installiert - weder SAPI5 noch OneCore (nur David/Zira/Mark, en-US); deutscher Text kaeme mit englischer Aussprache. Add-WindowsCapability scheitert ohne Adminrechte. Piper gewaehlt: laeuft lokal (passt zum Rest - WireGuard-only, Secrets in der ini, keine Cloud), kostet nichts, aus PowerShell/Python aufrufbar. Stimme thorsten-medium (de_DE), Real-Time-Faktor 0,08 (4,3 s Audio in 0,36 s). Das ZIP entpackt eine Ebene tiefer als erwartet (tools/piper/piper/piper.exe) - speak.py SUCHT Binary und Modell statt Pfade fest zu verdrahten. Der erste Entwurf scheiterte daran; der Fail-safe meldete die Pfade sauber statt stumm zu bleiben. Drei Modi getestet (Argument, Pipe, --wav). tools/piper/ ist gitignored (Binaries + 60-MB-Modell), speak.py versioniert. v=136. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
33b6b8f629
commit
6af4c868bc
@@ -2503,7 +2503,7 @@ dort bereits nachvalidiert, ØR +0,305.) **Eine** Oberfläche:
|
||||
Signal → **Hinweis-Dialog „trotzdem eröffnen?"** (überschreibbar). CLOSE bei
|
||||
**negativem** P&L → Sicherheitsabfrage; im Plus/Breakeven direkt. Sonst keine
|
||||
Token-Dialoge (`require_token=false`). Audio braucht 1× Nutzer-Tap.
|
||||
- Asset-Version aktuell **v=135** (in `web/index.html` hochzählen, siehe Workflows).
|
||||
- Asset-Version aktuell **v=136** (in `web/index.html` hochzählen, siehe Workflows).
|
||||
Schriftgrößen 2026-07-24 global **+4px** (2× je +2px auf User-Wunsch; Body-Basis
|
||||
14→18px). ⚠ Betrifft in `style.css` sowohl `font-size:Npx` (71×) ALS AUCH die
|
||||
`font:<weight> Npx/…`-**Shorthand** (3×: `.ms-chip`/`.ms-bos-lbl`/`.sqm-badge` —
|
||||
@@ -3027,6 +3027,45 @@ PF>1 in BEIDEN Hälften, Nachbarparameter müssen mithalten).
|
||||
Begründung gegen wöchentliche Läufe (Mehrfachvergleich, ~47 Fehlalarme/Jahr)
|
||||
steht unverändert. Anlass war hier die *einmalige* Signaländerung.
|
||||
|
||||
## Feste Einsatz-Margin + lokale Sprachausgabe (2026-08-04)
|
||||
|
||||
**Einsatz-Feld** (User-Wunsch „Feld, mit dem ich meine eingesetzte Margin selber
|
||||
eingeben kann"): `[trading]`-unabhängiger Laufzeitwert `MANUAL_MARGIN` in
|
||||
`core/config.py` (`set/get_manual_margin`, Muster wie `set_margin_buffer`).
|
||||
**0 = automatisch** (bisheriges Verhalten: `margin_buffer_pct` % der freien Margin),
|
||||
**> 0 = die Position wird auf genau diesen Margin-Einsatz gerechnet.**
|
||||
· `calc_lots` setzt es um und **deckelt auf die freie Margin × Buffer** — ein zu
|
||||
hoher Wunschwert wird begrenzt und geloggt, nicht an den Broker durchgereicht
|
||||
(sonst Reject mit kryptischem retcode statt sauberer Meldung). Reicht der Betrag
|
||||
nicht fürs Mindestlot → 0.0 + Warnung, der Trade wird sauber abgelehnt.
|
||||
· **Vorrang vor dem Risiko-Modus** (`trader._send_locked`): eine ausdrückliche
|
||||
Größenvorgabe schlägt die Rechenregel. Bei `risk_pct=0` (live) ohnehin der Fall.
|
||||
· ⚠ **Wirkt auf ALLE neuen Positionen — auch die autonomen** (Squeeze/Signal).
|
||||
· UI: Feld **„Einsatz"** in der **Order-Leiste** (`#margin-input`, v=136), bernstein
|
||||
umrandet solange gesetzt. ⚠ **Bewusst NICHT in der Trade-Leiste** — die ist nur bei
|
||||
OFFENER Position sichtbar, der Einsatz muss aber VOR dem Öffnen einstellbar sein.
|
||||
Enter blurrt nur, `change` sendet einmal (gleicher Fix wie beim Mindestgewinn).
|
||||
· `POST /api/manualmargin {value}` · Snapshot `manual_margin` · neustart-fest über
|
||||
`runtime_state.json`. Ende-zu-Ende getestet (250 → Snapshot → 0 → persistiert).
|
||||
|
||||
**Sprachausgabe: Piper, lokal** (`tools/speak.py`, `tools/piper/`). Anlass: die
|
||||
Windows-Sprachausgabe funktioniert zwar, aber auf diesem Rechner ist **keine
|
||||
deutsche Stimme installiert** — weder SAPI5 noch OneCore (nur David/Zira/Mark,
|
||||
alle en-US). Deutscher Text käme mit englischer Aussprache. `Add-WindowsCapability`
|
||||
scheitert ohne Adminrechte (elevated Fenster nötig).
|
||||
Piper gewählt, weil es **lokal** läuft (passt zum Rest: WireGuard-only, Secrets in
|
||||
der ini, keine Cloud-Abhängigkeit), **nichts kostet** (nach der 200-$/Monat-Absage
|
||||
bei X relevant) und aus PowerShell/Python aufrufbar ist. Stimme *thorsten-medium*
|
||||
(de_DE), Real-Time-Faktor **0,08** — 4,3 s Audio in 0,36 s.
|
||||
⚠ **Das ZIP entpackt eine Ebene tiefer als erwartet** (`tools/piper/piper/piper.exe`)
|
||||
— `speak.py` **sucht** die Binärdatei und das Modell deshalb, statt Pfade fest zu
|
||||
verdrahten. Der erste Entwurf scheiterte genau daran; der Fail-safe hat die Pfade
|
||||
sauber gemeldet statt stumm zu bleiben.
|
||||
Aufruf: `python tools/speak.py "Text"` · Pipe · `--wav datei` (nur erzeugen).
|
||||
Rückgabe 1 bei fehlendem Piper → ein Aufrufer im Bot läuft weiter, statt abzustürzen.
|
||||
⚠ `tools/piper/` ist **gitignored** (Binaries + 60-MB-Modell gehören nicht ins Repo);
|
||||
`speak.py` selbst ist versioniert.
|
||||
|
||||
## Modul „Manuelle Trades" + voller Entscheidungskontext (Stufe 1, 2026-08-04)
|
||||
|
||||
**User-Frage:** „Kann der Bot aus meinen manuellen Trades lernen — evtl. ein neues
|
||||
|
||||
Reference in New Issue
Block a user