Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
100cdae
Fix: Synchronisation automatique de l'onglet Variables en cours
claude Nov 11, 2025
e4a65b2
Fix: Corrections multiples Dashboard, Logs, Historique et Position
claude Nov 11, 2025
0ed44c7
Merge pull request #15 from chpeu/claude/switch-branch-011CV1vMmQctHe…
chpeu Nov 11, 2025
c3d1258
4
chpeu Nov 11, 2025
b72975c
5
chpeu Nov 11, 2025
0750ce6
6
chpeu Nov 11, 2025
a4448ad
4
chpeu Nov 11, 2025
eddd3e4
2
chpeu Nov 11, 2025
05dd83c
7
chpeu Nov 11, 2025
590e679
Merge pull request #16 from chpeu/cursor
chpeu Nov 11, 2025
c25ff80
Fix: Corrections bugs d'indentation et calcul des wins
claude Nov 11, 2025
f9bc49d
Merge: Résolution conflits + corrections bugs PnL/slippage
claude Nov 11, 2025
6536553
Fix: Slippage 0.00, completeConfig auto-update
claude Nov 11, 2025
3235b91
Update DOCUMENTATION_COMPLETE.md
chpeu Nov 11, 2025
55794e8
Fix: Compte à rebours plus visible en haut de la carte
claude Nov 11, 2025
2bbec3a
8
chpeu Nov 11, 2025
e5b4c49
1
chpeu Nov 11, 2025
bf218e2
1
chpeu Nov 11, 2025
9f3dc0b
7
chpeu Nov 12, 2025
6ba0334
Fix: 6 bugs corrigés (fees, race condition, floats, format durée)
claude Nov 12, 2025
b5c9da9
5
chpeu Nov 12, 2025
56206de
Merge branch 'claude/switch-branch-011CV1vMmQctHeVpbrjjsRZ4' of https…
chpeu Nov 12, 2025
a031975
1
chpeu Nov 12, 2025
c34395f
fix: Correction erreur syntaxe position_manager.py - ajout except man…
chpeu Nov 12, 2025
319cd58
feat: Phase 3 - PostgreSQL Datalogger optimisations et tests
chpeu Nov 12, 2025
1299bea
docs: Guide pour voir les logs PostgreSQL - requêtes SQL utiles
chpeu Nov 12, 2025
ff1d66a
fix: Correction schéma trades - utiliser timestamp_entry/timestamp_e…
chpeu Nov 12, 2025
e85a850
1
chpeu Nov 12, 2025
e962199
fix: Correction schéma opportunities et trades - colonnes correctes
chpeu Nov 12, 2025
aa7b241
fix: Correction finale schéma trades - supprimer colonnes JSONB inex…
chpeu Nov 12, 2025
86c2d37
feat: Schéma PostgreSQL complet - ajout colonnes JSONB market_contex…
chpeu Nov 12, 2025
60c9251
fix: Stocker entry_indicators, entry_conditions, entry_scalability et…
chpeu Nov 12, 2025
730c2f1
docs: Script migration pour ajouter colonnes JSONB a market_context
chpeu Nov 12, 2025
4c05f74
1
chpeu Nov 12, 2025
baccab4
feat: Ajout complet variables - indicateurs sortie, temporelles, EMA,…
chpeu Nov 12, 2025
e843d77
feat: Mise à jour code Python pour utiliser toutes les nouvelles col…
chpeu Nov 12, 2025
9f460d7
docs: Ajout récapitulatif schéma complet, script vérification et g…
chpeu Nov 12, 2025
bbea923
feat: Ajout colonnes early_invalidation détaillées dans trades (thr…
chpeu Nov 12, 2025
f053f9a
fix: Inclure toutes les variables de configuration (RISK_CONFIG, COND…
chpeu Nov 12, 2025
ddc9b1b
feat: Migration SQL complète pour toutes les modifications du schéma
chpeu Nov 12, 2025
7216837
docs: Ajout scripts et instructions pour appliquer la migration SQL
chpeu Nov 12, 2025
fbe0fa0
1
chpeu Nov 12, 2025
26fdd8b
feat: Ajout script de vérification complète et guide de vérification
chpeu Nov 12, 2025
2ba3c6e
feat: Ajout script batch pour lancer la vérification complète
chpeu Nov 12, 2025
d4921b4
docs: Récapitulatif complet de la journée 2025-11-12
chpeu Nov 12, 2025
9443d6b
fix: Correction erreurs logging trades - entry_conditions conversion …
chpeu Nov 12, 2025
288b9f9
fix: Ajout vérification nombre paramètres et conversion entry_condi…
chpeu Nov 12, 2025
89cc2a4
3
chpeu Nov 12, 2025
25d1478
fix: Ajout colonnes manquantes dans INSERT trades (break_even_trigger…
chpeu Nov 12, 2025
86555d7
fix: Ajout 3 placeholders manquants dans VALUES (111 au total)
chpeu Nov 12, 2025
a33c144
fix: Ajout 1 placeholder manquant (109 total)
chpeu Nov 12, 2025
327322c
fix: Ajout 2 placeholders manquants (111 total - correspond à 105 + …
chpeu Nov 12, 2025
7f02f95
fix: Ajout dernier placeholder manquant (111 total)
chpeu Nov 12, 2025
1aa9da3
5
chpeu Nov 12, 2025
974d49a
fix: Ajout debug pour identifier paramètres en trop
chpeu Nov 12, 2025
0b03f26
fix: Ajout debug pour identifier paramètres en trop (affichage premi…
chpeu Nov 12, 2025
6e28aa9
4
chpeu Nov 12, 2025
189bb05
fix: Correction déséquilibre paramètres - suppression doublon gros…
chpeu Nov 12, 2025
19744d6
4
chpeu Nov 12, 2025
df9b3a3
4
chpeu Nov 12, 2025
f42854c
1
chpeu Nov 12, 2025
10aa062
Update postgresql_datalogger.py
chpeu Nov 12, 2025
5cd771a
1
chpeu Nov 12, 2025
e7db46c
5
chpeu Nov 12, 2025
50eaff4
1
chpeu Nov 12, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 43 additions & 15 deletions .env.example
Original file line number Diff line number Diff line change
@@ -1,20 +1,48 @@
# API Authentication
# Générez une clé sécurisée avec: python -c "import secrets; print(secrets.token_urlsafe(32))"
# Format: key:name:role1:role2,...
# Exemple: abc123:admin:admin,def456:readonly:user
API_KEYS=your_api_key_here:admin:admin
# Ou utilisez une clé par défaut (moins sécurisé):
# DEFAULT_API_KEY=your_default_api_key_here

# Configuration Telegram
TELEGRAM_BOT_TOKEN=your_bot_token_here
TELEGRAM_CHAT_ID=your_chat_id_here

# Paper Trading
# 🔐 Configuration Telegram (Optionnel)
# Copiez ce fichier en .env et remplissez vos valeurs réelles
# ⚠️ NE COMMITEZ JAMAIS le fichier .env sur GitHub !

# Token du bot Telegram (obtenu via @BotFather)
TELEGRAM_BOT_TOKEN=votre_token_ici

# Chat ID Telegram (obtenu via @userinfobot ou @getidsbot)
# Pour les groupes/channels, utilisez un ID négatif (ex: -123456789)
TELEGRAM_CHAT_ID=votre_chat_id_ici

# Mode Paper Trading (true/false)
PAPER_TRADING_MODE=false

# Capital initial pour Paper Trading (USDT)
PAPER_TRADING_INITIAL_CAPITAL=1000.0

# Notification Types
# Types de notifications Telegram (true/false)
TELEGRAM_NOTIFY_POSITION_OPENED=true
TELEGRAM_NOTIFY_POSITION_CLOSED=true
# ... etc
TELEGRAM_NOTIFY_TP_ESCALIER=true
TELEGRAM_NOTIFY_EARLY_INVALIDATION=true
TELEGRAM_NOTIFY_ERROR=true
TELEGRAM_NOTIFY_RECONNECTION=true
TELEGRAM_NOTIFY_DAILY_SUMMARY=false
TELEGRAM_NOTIFY_RECOVERY_MODE=true
TELEGRAM_NOTIFY_SETUP_REJECTED=false

# Mode Debug (true/false)
DEBUG=false

# ============================================================================
# PostgreSQL Configuration (pour ML Datalogger)
# ============================================================================
# Activer le datalogger PostgreSQL (true/false)
POSTGRES_ENABLED=false

# Configuration PostgreSQL
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=trade_cursor_ml
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_password_here
POSTGRES_USE_SSL=false

# Pool de connexions
POSTGRES_MIN_CONN=1
POSTGRES_MAX_CONN=5
1 change: 1 addition & 0 deletions ANALYSE_MAIN_RESTORED.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,3 +209,4 @@ git checkout <commit-hash> -- main.py # Restaurer une version spécifique
**Conclusion :** Ajouter `main_restored.py` et patterns similaires au `.gitignore` pour éviter qu'ils soient versionnés accidentellement, tout en permettant de les garder localement si nécessaire.



206 changes: 206 additions & 0 deletions CHECKLIST_ML_OPTIMIZATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,206 @@
# ✅ Checklist : Optimisation ML Complète

## 📊 État Actuel

### ✅ CE QUI EST EN PLACE

#### 1. **Datalogger PostgreSQL** ✅
- ✅ Logging des scans (tous les indicateurs)
- ✅ Logging des opportunités
- ✅ Logging des trades (complet)
- ✅ Logging des erreurs
- ✅ Logging du contexte marché (périodique)
- ✅ Batch inserts (performance)
- ✅ Schéma complet avec toutes les tables

#### 2. **Schéma PostgreSQL** ✅
- ✅ `scan_logs` - Tous les indicateurs (1m, 5m)
- ✅ `opportunities` - Opportunités détectées
- ✅ `trades` - Trades exécutés avec résultats
- ✅ `market_context` - Contexte marché
- ✅ `scan_errors` - Erreurs
- ✅ `model_predictions` - Table pour prédictions ML
- ✅ `features_engineered` - Table pour features dérivées
- ✅ Index optimisés
- ✅ Foreign Keys

#### 3. **ML Optimizer Existant** ⚠️
- ✅ `optimization/ml_optimizer.py` existe
- ⚠️ Utilise SQLite (pas PostgreSQL)
- ✅ Utilise Optuna pour optimisation
- ✅ Walk-Forward Optimization
- ✅ Multi-objectifs (Sharpe + Winrate)

---

## ⚠️ CE QUI MANQUE POUR OPTIMISATION ML TOP

### 1. **Intégration ML Optimizer avec PostgreSQL** ❌

**Problème** : Le ML Optimizer actuel utilise SQLite, pas PostgreSQL.

**Solution nécessaire** :
- Modifier `ml_optimizer.py` pour lire depuis PostgreSQL
- Utiliser les données de `scan_logs`, `trades`, `opportunities`
- Créer des vues SQL pour faciliter l'extraction de features

### 2. **Feature Engineering Automatique** ❌

**Manque** :
- Calcul automatique des features dérivées
- Remplissage de la table `features_engineered`
- Features composites (momentum_score, trend_score, etc.)

**Solution nécessaire** :
- Script/processus pour calculer features depuis `scan_logs`
- Insérer dans `features_engineered`
- Exécution périodique ou en temps réel

### 3. **Modèle ML d'Entraînement** ❌

**Manque** :
- Script d'entraînement de modèles ML
- Utilisation de scikit-learn, XGBoost, ou autre
- Validation croisée
- Métriques de performance

**Solution nécessaire** :
- Script `train_ml_model.py`
- Extraction features depuis PostgreSQL
- Entraînement avec validation
- Sauvegarde du modèle

### 4. **Prédictions en Temps Réel** ❌

**Manque** :
- Utilisation du modèle pour prédire win/loss
- Insertion dans `model_predictions`
- Utilisation des prédictions pour filtrer les trades

**Solution nécessaire** :
- Charger modèle au démarrage
- Prédire lors de chaque scan/opportunité
- Logger prédictions dans `model_predictions`
- Optionnel : filtrer trades basé sur confiance

### 5. **Backtesting avec Données PostgreSQL** ⚠️

**État** : Backtesting existe mais utilise SQLite

**Solution nécessaire** :
- Adapter backtesting pour utiliser PostgreSQL
- Utiliser données historiques de `scan_logs` et `trades`
- Permettre backtesting sur périodes spécifiques

### 6. **A/B Testing de Stratégies** ❌

**Manque** :
- Système pour tester plusieurs configurations
- Comparaison de performances
- Tracking des résultats par configuration

**Solution nécessaire** :
- Utiliser `config_snapshots` pour tracker configs
- Comparer performances par config
- Dashboard pour visualiser résultats

### 7. **Monitoring et Métriques ML** ❌

**Manque** :
- Tracking de la précision des prédictions
- Métriques de performance du modèle
- Alertes si modèle dégrade

**Solution nécessaire** :
- Calculer `prediction_correct` dans `model_predictions`
- Dashboard métriques ML
- Alertes automatiques

### 8. **Hyperparameter Optimization** ⚠️

**État** : Optuna existe mais pas intégré avec PostgreSQL

**Solution nécessaire** :
- Utiliser données PostgreSQL pour Optuna
- Optimiser hyperparamètres du modèle ML
- Sauvegarder meilleurs hyperparamètres

---

## 🎯 PRIORITÉS POUR OPTIMISATION ML TOP

### Phase 1 : Intégration PostgreSQL (CRITIQUE) 🔴
1. ✅ Datalogger PostgreSQL - **FAIT**
2. ❌ Adapter ML Optimizer pour PostgreSQL
3. ❌ Adapter Backtesting pour PostgreSQL

### Phase 2 : Feature Engineering (IMPORTANT) 🟡
4. ❌ Script feature engineering automatique
5. ❌ Calcul features dérivées
6. ❌ Remplissage `features_engineered`

### Phase 3 : Modèle ML (IMPORTANT) 🟡
7. ❌ Script entraînement modèle
8. ❌ Validation et métriques
9. ❌ Sauvegarde/chargement modèle

### Phase 4 : Prédictions Temps Réel (OPTIONNEL) 🟢
10. ❌ Prédictions lors des scans
11. ❌ Logging dans `model_predictions`
12. ❌ Filtrage basé sur confiance

### Phase 5 : Monitoring (OPTIONNEL) 🟢
13. ❌ Dashboard métriques ML
14. ❌ Alertes performance
15. ❌ A/B testing

---

## 📝 RÉSUMÉ

### ✅ CE QUI FONCTIONNE
- Datalogger PostgreSQL complet
- Schéma optimisé pour ML
- Toutes les données sont loggées

### ❌ CE QUI MANQUE
- **Intégration ML Optimizer avec PostgreSQL** (CRITIQUE)
- **Feature Engineering automatique** (IMPORTANT)
- **Modèle ML d'entraînement** (IMPORTANT)
- **Prédictions en temps réel** (OPTIONNEL)
- **Monitoring ML** (OPTIONNEL)

---

## 🚀 PROCHAINES ÉTAPES RECOMMANDÉES

1. **Adapter ML Optimizer pour PostgreSQL** (1-2h)
- Modifier `ml_optimizer.py` pour lire depuis PostgreSQL
- Créer requêtes SQL pour extraire features

2. **Créer Feature Engineering Script** (2-3h)
- Script pour calculer features dérivées
- Remplir `features_engineered`

3. **Créer Script Entraînement ML** (3-4h)
- Extraire features depuis PostgreSQL
- Entraîner modèle (XGBoost/LightGBM)
- Validation et métriques

4. **Intégrer Prédictions** (2-3h)
- Charger modèle au démarrage
- Prédire lors des scans
- Logger dans `model_predictions`

**Temps total estimé : 8-12h pour optimisation ML complète**

---

## 💡 CONCLUSION

**Pour l'instant** : Vous avez une **excellente base de données** pour ML, mais il manque les **composants ML actifs** (entraînement, prédictions).

**Pour optimiser ML au top** : Il faut implémenter les phases 1-3 ci-dessus.

Souhaitez-vous que je commence par adapter le ML Optimizer pour PostgreSQL ?

100 changes: 100 additions & 0 deletions CONFIG_POSTGRES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
# 🔧 Configuration PostgreSQL - Guide Rapide

## ❌ Erreur Actuelle
```
connection to server at "localhost" (::1), port 5432 failed: fe_sendauth: no password supplied
```

## ✅ Solution

### 1. Vérifier que PostgreSQL est installé et démarré

**Windows :**
```powershell
# Vérifier si PostgreSQL est en cours d'exécution
Get-Service -Name postgresql*

# Si pas démarré, démarrer :
Start-Service postgresql-x64-XX # Remplacez XX par votre version
```

### 2. Configurer le mot de passe dans `.env`

Ouvrez votre fichier `.env` et ajoutez/modifiez :

```env
POSTGRES_ENABLED=true
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=trade_cursor_ml
POSTGRES_USER=postgres
POSTGRES_PASSWORD=votre_mot_de_passe_ici # ⚠️ IMPORTANT : Remplacez par votre mot de passe
POSTGRES_USE_SSL=false
```

### 3. Si vous ne connaissez pas le mot de passe PostgreSQL

**Option A : Réinitialiser le mot de passe (Windows)**

1. Ouvrez `pgAdmin` ou connectez-vous en ligne de commande
2. Ou modifiez le fichier `pg_hba.conf` pour autoriser les connexions sans mot de passe temporairement

**Option B : Créer un nouvel utilisateur**

```sql
-- Se connecter en tant que superutilisateur
psql -U postgres

-- Créer un nouvel utilisateur
CREATE USER trade_cursor WITH PASSWORD 'votre_nouveau_mot_de_passe';

-- Créer la base de données
CREATE DATABASE trade_cursor_ml OWNER trade_cursor;

-- Donner les permissions
GRANT ALL PRIVILEGES ON DATABASE trade_cursor_ml TO trade_cursor;
```

Puis dans `.env` :
```env
POSTGRES_USER=trade_cursor
POSTGRES_PASSWORD=votre_nouveau_mot_de_passe
```

### 4. Tester la connexion

```bash
psql -U postgres -d trade_cursor_ml -h localhost
# Ou avec le nouvel utilisateur :
psql -U trade_cursor -d trade_cursor_ml -h localhost
```

### 5. Créer le schéma

Une fois connecté, exécutez :
```bash
psql -U postgres -d trade_cursor_ml -f database/schema_postgresql_complete.sql
```

### 6. Redémarrer le serveur

```bash
python main.py
```

Vous devriez voir :
```
✅ PostgreSQL DataLogger initialisé: trade_cursor_ml@localhost:5432
```

---

## 🔍 Vérification

Après redémarrage, testez :
```sql
SELECT MAX(timestamp) as last_scan FROM scan_logs;
```

Si vous voyez un résultat (même NULL), la connexion fonctionne !

Loading