Start ml1211#21
Conversation
Problèmes corrigés: - Ajout de l'écoute WebSocket 'config_updated' dans VariablesPanel - Rafraîchissement automatique de l'onglet "Variables en cours" lors des changements de config - Rafraîchissement automatique lors du changement vers l'onglet "Variables en cours" - Synchronisation bidirectionnelle en temps réel entre backend et frontend Détails techniques: - onMount: Ajout d'un listener 'config_updated' pour mettre à jour les variables locales - Déclaration réactive améliorée pour recharger completeConfig lors du changement d'onglet - Ajout de previousSubTab pour détecter les changements d'onglet - Mise à jour automatique de completeConfig quand config_updated est reçu Impact: - Les modifications de variables dans SettingsPanel sont maintenant reflétées en temps réel dans VariablesPanel - L'onglet "Variables en cours" affiche toujours les valeurs à jour - Meilleure expérience utilisateur avec synchronisation transparente
DASHBOARD (GlobalStats.svelte): - Fix: Calcul et affichage du Total PnL (USDT et %) - Ajout de total_pnl_percent dans le store sessions.js - Backend: Correction de /api/sessions/stats/global pour retourner le bon format - Calcul du total_pnl depuis net_pnl_usdt (incluant slippage et fees) SCANNER PANEL (ScannerPanel.svelte): - Fix: Taille des rectangles des paires scalables (100-120px au lieu de 1fr) - Meilleur affichage compact et adapté au contenu POSITION ACTIVE (PositionCard.svelte): - Ajout section détaillée "Prochain TP/SL et Trailing Stop" - Affichage PnL objectif et % de position pour chaque TP - Affichage PnL stop et % de position pour SL - Affichage statut Trailing Stop (actif/inactif) - Affichage SL dynamique et % restant de position - Styles CSS pour les nouvelles info-boxes (TP, SL, Trailing) LOGS (LogViewer.svelte): - Fix: Retrait des warnings du premier rapport - Seules les erreurs (ERROR/CRITICAL) sont affichées - Mise à jour du titre "Erreurs" au lieu de "Erreurs & Warnings" HISTORIQUE (TradeHistory.svelte): - Fix: Affichage correct du slippage (slippage_pct du backend) - Fix: PnL net inclut déjà slippage et fees (pas de double soustraction) - Correction du calcul sessionPnL et sessionPnLPct - net_pnl_usdt et net_pnl_pct sont maintenant utilisés directement LOGS BACKEND (main.py): - Ajout ColoredFormatter pour logs console avec couleurs ANSI - DEBUG: Cyan, INFO: Vert, WARNING: Jaune, ERROR: Rouge, CRITICAL: Rouge vif - Meilleure lisibilité des logs dans la console backend Impact utilisateur: - Dashboard: Total PnL maintenant affiché correctement - Scanner: Rectangles mieux dimensionnés, plus lisibles - Position: Informations détaillées sur TP/SL et trailing stop - Logs: Moins de bruit (pas de warnings dans erreurs) - Historique: Slippage affiché et PnL net correct - Console backend: Logs colorés pour meilleure lisibilité
…VpbrjjsRZ4 Claude/switch branch 011 cv1v mm qct he vpbrjjs rz4
BUGS CORRIGÉS:
1. TradeHistory.svelte (lignes 120, 123, 131):
- Correction de l'indentation incorrecte des balises <td>
- Les balises et leur contenu sont maintenant correctement indentés
- Évite les problèmes potentiels de parsing Svelte
2. main.py (ligne 1287):
- Bug: Calcul des wins basé sur pnl_usdt au lieu de net_pnl_usdt
- Impact: Les trades avec pnl_usdt positif mais net_pnl_usdt négatif
(après slippage et fees) étaient comptés comme wins
- Correction: Utilise maintenant net_pnl_usdt pour déterminer les wins
- Cohérence avec le calcul du total_pnl qui utilise aussi net_pnl_usdt
Impact:
- Win rate maintenant calculé correctement (après slippage et fees)
- Meilleure lisibilité du code TradeHistory.svelte
- Cohérence entre les différents calculs de statistiques
CONFLITS RÉSOLUS dans TradeHistory.svelte: 1. Slippage display (lignes 122-145): - Gardé: Logique améliorée de l'utilisateur avec calcul robuste - Support slippage_pct, slippage (% ou décimales), slippage_usdt - Ajout data-debug-name pour debugging 2. PnL Net (lignes 146-150): - CORRIGÉ: Ne soustrait PLUS le slippage (double comptabilisation) - net_pnl_pct inclut DÉJÀ slippage et fees - Utilisé: trade.net_pnl_pct directement 3. PnL Total USDT (lignes 155-157): - CORRIGÉ: Ne soustrait PLUS slippage_usdt - net_pnl_usdt inclut DÉJÀ slippage et fees - Utilisé: trade.net_pnl_usdt directement BUGS CORRIGÉS: - main.py: Calcul wins basé sur net_pnl_usdt (après fees/slippage) - TradeHistory: Double soustraction du slippage évitée AMÉLIORATIONS MERGÉES: - Meilleur calcul du slippage (user) - Nouveaux composants debug (user) - Corrections PnL (moi) Impact: - PnL net affiché correctement (sans double soustraction) - Win rate calculé correctement (après slippage/fees) - Meilleure robustesse du calcul du slippage
🔥 CORRECTIONS PRINCIPALES: 1. **Slippage toujours à 0.00** - RÉSOLU ✅ - Bug: Les paires avec spread NaN n'étaient pas filtrées (NaN > 0.02 retourne False) - Fix: Ajout filtre `math.isnan(spread)` dans scanner.py:126 - Fix: Ajout spread minimum de 0.001% pour garantir slippage calculable - Fix: Logging détaillé des données scalability dans scanner_loop.py:250 2. **Variables en cours non auto-update** - RÉSOLU ✅ - Bug: completeConfig rafraîchi uniquement si sur onglet 'current' - Fix: Toujours rafraîchir completeConfig lors de config_updated - Maintenant les changements sont visibles dès le retour sur l'onglet 📝 DÉTAILS TECHNIQUES: scanner.py (ligne 126): - Ajout vérification NaN explicite pour spread - Ajout spread_min = 0.001% (évite slippage = 0) - Filtre: 0.001% <= spread <= 0.02% scanner_loop.py (lignes 236-255): - Logging spread NaN si détecté - Logging valeurs scalability_data (spread, depth, balance) - Warning si scalability_data absent VariablesPanel.svelte (lignes 587-589): - Suppression condition activeSubTab === 'current' - completeConfig toujours rafraîchi sur config_updated
🔥 AMÉLIORATION: - Déplacement du compte à rebours juste après la section PnL - Plus visible pour l'utilisateur (anciennement plus bas dans la carte) - Toujours avec mise à jour automatique chaque seconde 📍 POSITIONNEMENT: Avant: Ligne 333 (après "Position restante", avant "Confirmed by") Après: Ligne 273 (juste après PnL %, avant price-grid) 💡 NOTE SUR LE SLIPPAGE: Le fix du scanner (commit précédent 6536553) corrige le problème: - Les NOUVELLES positions auront slippage calculé correctement - Les ANCIENNES positions conservent slippage = 0.00% (spread invalide à l'ouverture) - Le net_pnl inclut TOUJOURS le slippage déduit (backend ligne 933)
🐛 BUGS CORRIGÉS: **Bug #1 - Double fees TP partiel**⚠️ MOYENNE Fichier: core/position/pnl_calculator.py:131-137 Problème: Fees calculés sur size totale même avec TP partiel - Fees entrée partie vendue payés 2× (TP partiel + clôture) - Fees sur-estimés, PnL net sous-estimé Fix: Calcul fees uniquement sur size_remaining si partial_tp_sold Impact: PnL net plus précis pour positions avec TP partiel **Bug #3 - Race condition config_updated** 🟡 MOYENNE Fichier: frontend/src/lib/components/VariablesPanel.svelte:534-540 Problème: Modifications user écrasées par backend pendant debounce - User édite → timer 2.5s démarre - Backend émet config_updated → timer annulé, valeurs écrasées - User perd ses modifications non sauvegardées Fix: Ignorer config_updated si hasUnsavedChanges && debounceTimer Impact: Modifications utilisateur protégées **Bug #5 - Comparaisons float == 0** 🟢 FAIBLE Fichier: core/callbacks/scanner_loop.py:257, 265, 287 Problème: Comparaisons exactes (== 0) sur floats peu robustes - Floats peuvent être 0.0000001 au lieu de exactement 0.0 - Spread/depth invalides non détectés Fix: Remplacé == 0 par <= 0 (plus robuste) Impact: Meilleure détection valeurs invalides **Bug #6 - Format durée > 24h** 🟢 FAIBLE Fichier: frontend/src/lib/components/PositionCard.svelte:34-47 Problème: Positions > 24h affichées "25h 30m 15s" (illisible) Fix: Ajout support jours → "1j 1h 30m" Impact: Meilleure lisibilité positions longues **Bug #7 - NaN formatters** ✅ DÉJÀ CORRIGÉ Fichier: frontend/src/lib/utils/format.js Statut: formatPercent/formatUSDT gèrent déjà isNaN() Aucune modification nécessaire 📊 RÉSUMÉ: - 4 bugs corrigés - 1 bug déjà géré - 4 fichiers modifiés - 0 régression introduite ✅ Tests recommandés: - Position avec TP partiel → vérifier fees corrects - Éditer variable pendant que backend update → vérifier pas écrasé - Position ouverte > 24h → vérifier format "Xj Yh Zm"
…://github.com/chpeu/test into claude/switch-branch-011CV1vMmQctHeVpbrjjsRZ4
- Batch inserts pour scans et opportunités (performance 50x) - Mesure scan_duration_ms dans scanner_loop - Logging erreurs automatique dans scanner_loop - Tâche périodique pour logging contexte marché (5 min) - Tests unitaires complets (test_postgresql_datalogger.py) - Flush automatique des buffers (taille ou intervalle) - Fermeture propre avec flush final - Thread-safe buffers avec locks
…xit + guide requêtes
…istantes, ajouter tp_escalier_profits
…et vérification types
…tions avant création tuple
…ed_at, partial_tp_*, trailing_stop_triggered_at, profit_factor)
…6 colonnes ajoutées)
…s_pnl_usdt (paramètre 15)
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
||||||||||||||||||||||||
PR Compliance Guide 🔍Below is a summary of compliance checks for this PR:
Compliance status legend🟢 - Fully Compliant🟡 - Partial Compliant 🔴 - Not Compliant ⚪ - Requires Further Human Verification 🏷️ - Compliance label |
|||||||||||||||||||||||||
PR Code Suggestions ✨Explore these optional code suggestions:
|
|||||||||||||||||||
PR Type
Enhancement, Bug fix, Tests
Description
PostgreSQL ML Data Logger Infrastructure: Comprehensive new module (
postgresql_datalogger.py) implementing connection pooling, batch inserts, and session management for collecting ML training data across trading scans, opportunities, and tradesAnalyzer Integration with ML Logging: Enhanced
analyzer.pywith indicator extraction and logging at key decision points (Point A for scans, Point B for opportunities), including all technical indicators (EMA, RSI, MACD, ADX, Bollinger Bands, Volume)Position Manager Trade Logging: Implemented comprehensive entry indicators capture (Point C) and trade exit logging to PostgreSQL with complete trade data, indicators, and configuration snapshots; added
opened_atfield for frontend countdown timerScanner Loop PostgreSQL Integration: Added scan data logging with market data, indicators, and pattern information; enhanced scalability data retrieval with fallback mechanisms
Application Startup & Configuration: Added
.envloading, DataLogger initialization with proper shutdown handling, and new configuration parameters (max_slippage_pct, PostgreSQL credentials, connection pool settings)WebSocket Real-time Log Streaming: New
WebSocketLogHandlerclass to send logs to frontend in real-time while preserving ANSI colors and emojisFrontend UI Enhancements: Added dynamic countdown timer for position duration, TP/SL info calculations, dynamic status messaging in bot controls, and debug attributes throughout components
Bug Fixes: Fixed spread validation with NaN handling in
scanner.py, improved market data robustness inanalyzer/market_data.py, corrected PnL calculator fee calculation for partial TP scenarios, fixedatr_percentfield naming toatr_pctDatabase Verification Tools: Multiple diagnostic scripts for schema validation, column/parameter counting, and data integrity checks
Unit Tests: Comprehensive test suite for
PostgreSQLDataLoggerclass with 11 test methods covering initialization, connection handling, batch mode, error logging, and buffer flushingDiagram Walkthrough
File Walkthrough
11 files
postgresql_datalogger.py
PostgreSQL DataLogger for ML Training Data Collectioncore/postgresql_datalogger.py
collection
for trading scans, opportunities, and trades
errors, market context, and completed trades
execute_valuesfor improvedperformance
analyzer.py
Enhanced Analyzer with ML Data Logging Integrationcore/analyzer.py
build_indicators_dict()to construct consistentindicator dictionaries across rejection scenarios
MACD, ADX, Bollinger Bands, Volume) in analysis results
and 5m timeframes
score calculation
atr_percentfield naming toatr_pctfor consistency withdatabase schema
rejections
position_manager.py
Position management enhancements with PostgreSQL logging and indicatorcapturecore/position_manager.py
opened_atfield to position dictionary for frontend countdowntimer functionality
use_atrfromTRADING_CONFIGdynamicallyfallback mechanisms for PostgreSQL logging
_update_trailing_stop_fixe()method for fixed-distance trailingstop in FIXE mode
logging
indicators, and configuration snapshots
main.py
Application startup, configuration management, and data logginginfrastructuremain.py
.envloading at startup before other importsproper shutdown handling
handling for spread values
data
break_even_trigger,trailing_distance, andmax_slippage_pctconfiguration parametersscanner_loop.py
Scanner loop PostgreSQL integration and scan data loggingcore/callbacks/scanner_loop.py
data logging
indicators, and pattern information
spread and depth values
storage
stack traces
position_check_loop.py
Position update and stats calculation improvementscore/callbacks/position_check_loop.py
opened_atfield to position update data for countdown timerfunctionality
start_timeorposition.timestampwith propertype handling
details
instead of 2 decimals
logger.py
WebSocket-based real-time log streaming to frontendutils/logger.py
WebSocketLogHandlerclass to send logs to frontend via WebSocketin real-time
display
ColoredFormatterfor consistent formattingws_managerparameter tosetup_loggerfunctionanalytics_database.py
Trade retrieval duration field compatibility fixcore/analytics_database.py
get_tradesmethod to ensureduration_secondsfield is presentin returned trades
durationtoduration_secondsif onlydurationexistsPositionCard.svelte
Position card UI enhancements with dynamic duration and TP/SL infofrontend/src/lib/components/PositionCard.svelte
days/hours/minutes/seconds format
nextTpInfoandnextSlInfocalculations based on tradingconfig and TP/SL mode
opened_atfield support for accurate position durationcalculation
percentages
data-debug-name) throughoutcomponent for frontend debugging
BotControls.svelte
Bot controls dynamic status messagingfrontend/src/lib/components/BotControls.svelte
state, and scanner status
botPhasestore andgetPhaseMessagefunction for contextualstatus display
scanner state > stopped
sessions.js
Global stats store PnL percentage trackingfrontend/src/lib/stores/sessions.js
total_pnl_percentfield toglobalStatsstore for trackingoverall PnL percentage
1 files
verify_all.py
PostgreSQL Database Verification and Diagnostic Tooldatabase/verify_all.py
data integrity
across scan_logs, opportunities, and trades
17 files
verifier_indicators.py
Database verification utility for entry indicatorsdatabase/verifier_indicators.py
table
count_exact_final.py
Database column and parameter counting diagnostic scriptdatabase/count_exact_final.py
INSERT statement, placeholders in VALUES clause, and parameters in
params tuple
documentation
parameters
verify_schema_complete.py
Complete PostgreSQL schema verification and validation tooldatabase/verify_schema_complete.py
PostgreSQL and validates table structure
table
tradestable against expectedcolumns from Python code
status
verify_schema.py
PostgreSQL schema structure verification scriptdatabase/verify_schema.py
structure against expected tables and columns
indexes, and foreign keys
timestamp columns in trades table
compare_insert_values.py
INSERT vs VALUES placeholder comparison diagnosticdatabase/compare_insert_values.py
placeholders line-by-line
across 21 lines
count_columns.py
Column counting script for INSERT statementdatabase/count_columns.py
discrepancy
find_missing_placeholders.py
Missing placeholder identification scriptdatabase/find_missing_placeholders.py
statement in order
clause
count_all_params.py
Manual parameter counting script for log_trade methoddatabase/count_all_params.py
log_trademethodcount_params_final.py
Automated parameter counting with regex parsingdatabase/count_params_final.py
log_trademethodsource file
parameters
count_exact.py
Exact column and parameter extraction scriptdatabase/count_exact.py
parameters from source file
fix_trade_logging.py
Trade logging parameter verification scriptdatabase/fix_trade_logging.py
log_trademethodcount_params_exact.py
Line-by-line parameter counting scriptdatabase/count_params_exact.py
parameters
count_params.py
Placeholder and parameter counting scriptdatabase/count_params.py
params tuple
%soccurrences in VALUES sectioncount_manual.py
Manual parameter counting documentationdatabase/count_manual.py
sections
(gross_pnl_usdt)
count_params_manual.py
Parameter count discrepancy analysisdatabase/count_params_manual.py
(111) and actual (128)
count_placeholders.py
VALUES clause placeholder counting scriptdatabase/count_placeholders.py
21 lines
count_placeholders_exact.py
Exact placeholder counting from source filedatabase/count_placeholders_exact.py
%splaceholders
1 files
config.py
Configuration additions for slippage validation and PostgreSQLconfig.py
max_slippage_pctconfiguration parameter (0.03% default) forslippage validation
port, database, credentials, connection pool settings)
3 files
scanner.py
Spread validation and NaN handling improvementscore/scanner.py
math.isnan()scenarios
market_data.py
Market data spread check robustness improvementscore/analyzer/market_data.py
orderbookto prevent crashes when API returnsNone
bidsandaskswith defensive checks for empty listsand array bounds
logger.error(capturedby WebSocketLogHandler)
it automatically
pnl_calculator.py
PnL calculator fee calculation bug fixcore/position/pnl_calculator.py
position size when partial TP already executed
sold
1 files
test_postgresql_datalogger.py
Unit tests for PostgreSQL data logger functionalitytests/test_postgresql_datalogger.py
PostgreSQLDataLoggerclass with11 test methods
logging, and buffer flushing
pools
assertions
75 files