feat: P&L côte à côte (Ouvert|Réalisé) + filtres journal + suppression trades fermés

- Dashboard: P&L card séparé en deux colonnes (Ouvertes/Réalisées) pour Simulé et Portfolio
- Dashboard: closed trades P&L locked from pnl_realized, ne fluctue plus après fermeture
- Journal Ouvert: filtres ticker/stratégie + classe d'actif + direction (haussier/baissier)
- Journal Fermés: mêmes filtres + filtre P&L (gagnants/perdants) + bouton supprimer par ligne
- Journal Non loggés: filtres ticker + classe d'actif + raison de skip
- Backend: DELETE /api/journal/trades/{id} + delete_trade() dans database.py

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
OpenSquared
2026-06-20 11:00:31 +02:00
parent 39da3b8945
commit d4a016a535
5 changed files with 444 additions and 144 deletions

View File

@@ -1327,6 +1327,14 @@ def get_closed_trades(days: int = 180) -> List[Dict[str, Any]]:
return [dict(r) for r in rows]
def delete_trade(trade_id: int) -> bool:
conn = get_conn()
cur = conn.execute("DELETE FROM trade_entry_prices WHERE id = ?", (trade_id,))
conn.commit()
conn.close()
return cur.rowcount > 0
def get_skipped_trades(days: int = 30) -> List[Dict[str, Any]]:
conn = get_conn()
rows = conn.execute(