Breakout-Karte vorbereitet (inaktiv bis Neustart) + Bewertung der Margin-Idee
User-Idee: 40 % Margin manuell, 50 % fuer Breakout reservieren, neue Karte. Bewertung: (1) 40 % ist der groesste gemessene Hebel (MaxDD 82,8 %) und ein Schalter ohne Neustart. (2) Reserve ist technisch moeglich (Konto ist RETAIL_HEDGING), aber _check_auto_squeeze feuert 'nur FLAT' und engine.py hat 17 Einzel-Positions-Annahmen -- Kern-Umbau, kein Parameter. Zudem steht die Zuteilung gegen die Messung: autonom -4,71 EUR/Lot gegen Mensch +1,56 EUR/Lot. Live-Befund macht (1) dringlich: freie Margin -6,21 EUR, Margin-Level 99,3 %. Es gibt derzeit nichts zu reservieren. Gebaut (inaktiv): history.fetch_squeeze_since, engine._squeeze_b5_cached (120 s gecacht), Snapshot-Feld squeeze_b5, Karte #card-brk. Eigenes Fenster ab 01.08. -- squeeze_monitor.live rechnet ueber alle 42 Trades, B5 zaehlt 11. Die Karte zeigt beide Zahlen, weil der Monitor 'ontrack' aus der MECHANIK meldet, waehrend live Verhaeltnis 0,14 / PF 0,39 steht. Live aendert sich nichts: Karte ist hidden, renderBrk blendet sie aus solange squeeze_b5 fehlt. Aktiv nach dem naechsten Neustart (wartet auf den Trade). BEINAHE-SCHADEN: ein UnicodeEncodeError liess web/app.js mit 0 Bytes zurueck. node --check bestand trotzdem -- eine leere Datei ist gueltiges JS. Gefangen hat es erst der Groessenvergleich. Neue Regel: erst .tmp schreiben, Groesse pruefen, dann os.replace. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
3affe51030
commit
30cb77b795
@@ -855,6 +855,32 @@ class HistoryLogger:
|
||||
"pct": round(100.0 * (r["c"] or 0) / (r["n"] or 1), 1)}
|
||||
return out
|
||||
|
||||
def fetch_squeeze_since(self, ab: int) -> list:
|
||||
"""P&L aller geschlossenen SQUEEZE_*-Trades ab Epoch `ab` (2026-08-19).
|
||||
|
||||
⚠ Bewusst NUR `setup LIKE 'SQUEEZE%'` — die `setup`-Spalte taugt NICHT
|
||||
als allgemeine Bot/Mensch-Trennung: `engine._open` schreibt die
|
||||
Wellenlage auch bei MANUELLEN Trades mit (`WAVE`, n=124). Nur
|
||||
`SQUEEZE_*` ist autonom eroeffnet. Ein erster Auswertungsversuch am
|
||||
13.08. hat genau das verwechselt und dem Bot 152 Trades zugeschrieben.
|
||||
|
||||
⚠ NICHT je Lot normiert: die B5-Regel ist ausdruecklich auf
|
||||
OeGewinn/OeVerlust in EURO fixiert worden. Sie hier still auf eine
|
||||
andere Einheit umzustellen waere ein nachtraegliches Verschieben der
|
||||
Latte.
|
||||
|
||||
Fail-open (leere Liste) — `core/history.py` hat bewusst keinen Logger.
|
||||
"""
|
||||
try:
|
||||
with self._connect() as c:
|
||||
return [float(r[0]) for r in c.execute(
|
||||
"SELECT pnl FROM trades "
|
||||
" WHERE setup LIKE 'SQUEEZE%' AND exit_time IS NOT NULL "
|
||||
" AND pnl IS NOT NULL AND entry_time > ? "
|
||||
" ORDER BY entry_time", (int(ab),))]
|
||||
except Exception:
|
||||
return []
|
||||
|
||||
def alignment_stats(self, last_n: int = 0) -> dict:
|
||||
"""Ausrichtungs-Split: liefen die Trades MIT, GEGEN oder OHNE die Empfehlung?
|
||||
|
||||
|
||||
Reference in New Issue
Block a user