Automatisierten Handel über das Dashboard starten und pausieren
Neuer Abschnitt "Automatisierter Handel" im Dashboard mit Zustandsanzeige und Start/Pause-Knopf, dazu GET und POST /control/trading. Funktioniert in beiden Modi, simuliert wie echt. Pausiert unterbindet ausschließlich neue Einstiege - Marktdaten, Signalauswertung, Labeling und Training laufen weiter, damit der Datenstrom ins Modell nie abreißt. Auf identischen Daten: aktiv 99 Beobachtungen bei 9 Trades, pausiert 90 Beobachtungen bei 0 Trades - der Unterschied sind genau die Trade-Labels, die ohne Handel nicht entstehen. - Offene Positionen bleiben unter Stop- und Ziel-Überwachung. Ein pausierter Bot lässt niemanden ungeschützt im Markt stehen. - Neu: trading.autostart (Standard true, bisheriges Verhalten) und trading.require_confirmation_for_live. Nebenbei behoben - Bei aktiver Notbremse (Tagesverlust, Drawdown) wurden bisher gar keine Signale mehr ausgewertet. Der Bot hörte damit ausgerechnet in der interessantesten Phase auf zu lernen. Jetzt läuft die Auswertung durch, nur der Kauf unterbleibt. - describe_config meldete "Steuerung möglich", während sie eine Zeile später abgeschaltet wurde. Übersicht und Schutzlogik teilen sich jetzt dieselbe Prüffunktion (control_effective / control_is_unsafe). Absicherung für Echtgeld - Starten im Live-Modus verlangt die Bestätigung START_LIVE_TRADING im Body (HTTP 428 ohne sie); das Dashboard fragt sie per Dialog ab. Pausieren geht immer ohne Bestätigung - anhalten muss schnell gehen. - Live-Modus mit offenem Port und ohne control_token wird nicht bedient: Die Steuerung wird beim Start abgeschaltet, der Bot läuft normal weiter. Sonst könnte jeder im Netz echten Handel starten. Bewusst nicht enthalten: ein Umschalter zwischen Paper und Live zur Laufzeit. Der bräuchte einen neuen Broker, andere Zugangsdaten und eine neue Kapitalbasis - und würde bedeuten, dass ein Web-Klick aus einer Simulation echten Handel macht. 174 Tests (21 neue), ruff sauber. Im gebauten Container geprüft: 401 ohne Token, 200 mit, idempotentes Pausieren, 400 bei kaputtem Payload, und im Live-Start mit ungültigen Dummy-Schlüsseln greift die Abschaltung der Steuerung.
This commit is contained in:
@@ -349,9 +349,46 @@ Slack als auch Discord.
|
||||
|
||||
---
|
||||
|
||||
## Training aus dem Dashboard anstoßen
|
||||
## Handel und Training aus dem Dashboard steuern
|
||||
|
||||
Im Abschnitt **Training** des Dashboards stehen zwei Bedienelemente:
|
||||
### Automatisierter Handel
|
||||
|
||||
Der Abschnitt **Automatisierter Handel** zeigt den Zustand und schaltet ihn um — in beiden
|
||||
Modi, simuliert wie echt. Standardmäßig startet der Bot handelnd (`trading.autostart: true`);
|
||||
mit `autostart: false` sammelt er zunächst nur Daten und wartet auf die Freigabe.
|
||||
|
||||
Pausiert bedeutet **nur: keine neuen Einstiege**. Alles andere läuft weiter:
|
||||
|
||||
| Auch pausiert | Pausiert ausgesetzt |
|
||||
|---|---|
|
||||
| Marktdaten werden abgerufen | Neue Positionen eröffnen |
|
||||
| Signale werden ausgewertet und gelabelt | |
|
||||
| Das Modell trainiert weiter | |
|
||||
| Offene Positionen bleiben unter Stop-/Ziel-Überwachung | |
|
||||
|
||||
Der Bot lernt also durchgehend weiter, auch wenn er nicht handelt. Auf identischen Daten:
|
||||
|
||||
```
|
||||
Handel aktiv Trades=9 Beobachtungen=99 Shadow=90 Trade-Labels=9 nur-gelernte Signale=0
|
||||
Handel pausiert Trades=0 Beobachtungen=90 Shadow=90 Trade-Labels=0 nur-gelernte Signale=9
|
||||
```
|
||||
|
||||
Der Unterschied sind genau die neun Trade-Labels, die ohne Handel nicht entstehen können —
|
||||
die Shadow-Labels aus dem Marktgeschehen laufen unverändert weiter.
|
||||
|
||||
> **Live-Modus.** Das Starten verlangt zusätzlich die Bestätigung `START_LIVE_TRADING`
|
||||
> (das Dashboard fragt sie ab, per HTTP als `"confirm"` im Body). **Pausieren** geht immer
|
||||
> ohne Bestätigung — im Zweifel muss man schnell anhalten können. Abschalten lässt sich die
|
||||
> Rückfrage mit `trading.require_confirmation_for_live: false`.
|
||||
>
|
||||
> Die Kombination *Live-Modus + Port nicht nur lokal + kein `control_token`* wird **nicht
|
||||
> bedient**: Der Bot schaltet die Steuerung dann beim Start ab und sagt das im Log. Sonst
|
||||
> könnte jeder im Netz echten Handel starten. Mit Token oder auf `127.0.0.1` steht sie
|
||||
> wieder zur Verfügung.
|
||||
|
||||
### Training
|
||||
|
||||
Im Abschnitt **Training** stehen zwei Bedienelemente:
|
||||
|
||||
**Historisch nachtrainieren.** Anzahl Kerzen wählen (500 – 50 000 je Symbol), Knopf drücken.
|
||||
Der Bot lädt die Historie, läuft sie mit derselben Logik wie ein Backtest durch — **ohne zu
|
||||
@@ -377,6 +414,8 @@ curl -X POST localhost:8080/control/train/history -H 'Content-Type: application/
|
||||
|
||||
| Endpunkt | Methode | Wirkung |
|
||||
|--------------------------------|---------|--------------------------------------------|
|
||||
| `/control/trading` | GET | Zustand des automatisierten Handels |
|
||||
| `/control/trading` | POST | `{"enabled": true}` — Handel starten/pausieren (live zusätzlich `"confirm"`) |
|
||||
| `/control/training` | GET | Zustand des letzten/laufenden Trainings |
|
||||
| `/control/train/history` | POST | `{"bars": 5000}` — Nachtraining anstoßen |
|
||||
| `/control/train/live` | POST | `{"enabled": false}` — Lernen ein/aus |
|
||||
|
||||
Reference in New Issue
Block a user