# Hiérarchie Intelligente Stop-Loss & Take-Profit

## 📋 Vue d'ensemble

Le système de trading utilise une **hiérarchie à deux niveaux** pour déterminer les seuils de Stop-Loss (SL) et Take-Profit (TP):

```
┌─────────────────────────────────────────────┐
│  PRIORITÉ 1: IA DYNAMIQUE                   │
│  • Calculs en temps réel pour chaque signal │
│  • Basés sur 100 candles (8h20 d'historique)│
│  • Adaptés à la volatilité du moment        │
│  • Exemple: SL=2.75%, TP=5.50%, R/R=2:1     │
└─────────────────────────────────────────────┘
              ↓ (si indisponible)
┌─────────────────────────────────────────────┐
│  PRIORITÉ 2: CONFIG FALLBACK (bot_settings) │
│  • Valeurs fixes dans config.py             │
│  • Utilisées si l'IA ne fournit pas de SL/TP│
│  • Modifiables via dashboard                │
│  • Valeurs actuelles: SL=2.5%, TP=1.5%      │
└─────────────────────────────────────────────┘
```

## 🎯 Objectifs

1. **Optimisation automatique**: L'IA calcule les meilleurs SL/TP pour chaque signal
2. **Fallback sécurisé**: Si l'IA échoue, utiliser des valeurs de config
3. **Flexibilité**: Possibilité d'ajuster manuellement les valeurs fallback
4. **Visibilité**: Interface claire montrant quelle source est utilisée

## 🔍 Comment ça fonctionne

### Scénario 1: IA disponible (87% des cas)
```
Signal ETH détecté
  ↓
IA analyse 100 candles
  ↓
Calcule SL=2.75%, TP=5.50%
  ↓
Position ouverte avec ces valeurs ✅
```

### Scénario 2: IA indisponible (13% des cas)
```
Signal BTC détecté
  ↓
IA ne fournit pas de SL/TP
  ↓
Utilise config fallback: SL=2.5%, TP=1.5%
  ↓
Position ouverte avec ces valeurs ⚙️
```

### Scénario 3: Hybride
```
Signal MATIC détecté
  ↓
IA fournit SL=3.2% mais pas de TP
  ↓
Utilise SL=3.2% (IA) + TP=1.5% (config)
  ↓
Position ouverte en mode hybride 🔀
```

## 📊 Statistiques d'utilisation (7 derniers jours)

Le système track automatiquement l'utilisation:
- **Total trades**: Nombre total de positions ouvertes
- **IA Dynamique**: Positions avec SL/TP fournis par l'IA
- **Config Fallback**: Positions utilisant uniquement la config
- **Hybride**: Positions avec mix IA + config

## ⚙️ Configuration dans le Dashboard

### Interface "Hiérarchie Intelligente SL/TP"

L'onglet **Config IA** du dashboard contient une nouvelle section:

#### Colonne gauche: IA Dynamique (Priorité 1)
- 🤖 **Exemple de signal récent** (valeurs réelles)
- 📊 **Statistiques d'utilisation** (% de trades avec IA)
- 💡 **Explication** du fonctionnement

#### Colonne droite: Config Fallback (Priorité 2)
- ⚙️ **Champs modifiables** pour SL et TP
- 📐 **Calcul automatique Risk/Reward**
- ⚠️ **Avertissements** si R/R < 1:1
- 💾 **Bouton sauvegarder**

## 🎨 Risk/Reward Indicator

Le ratio Risk/Reward (R/R) est calculé automatiquement:

```
R/R = Take-Profit / Stop-Loss
```

### Codes couleur:
- 🟢 **R/R ≥ 2:1** - Excellent (vert)
- 🔵 **R/R ≥ 1.5:1** - Bon (bleu)
- 🟡 **R/R ≥ 1:1** - Acceptable (orange)
- 🔴 **R/R < 1:1** - Risqué (rouge)

### Exemple:
```
SL = 2.5%
TP = 5.0%
R/R = 5.0 / 2.5 = 2.0:1 ✅ Excellent

SL = 2.5%
TP = 1.5%
R/R = 1.5 / 2.5 = 0.6:1 ❌ Risqué
```

## 🔧 API Endpoints

### GET /api/get-sltp-config
Récupère la configuration actuelle et les statistiques.

**Réponse:**
```json
{
  "success": true,
  "config": {
    "stop_loss": 2.5,
    "take_profit": 1.5,
    "risk_reward_ratio": 0.6
  },
  "stats": {
    "total": 45,
    "ia_dynamic": 39,
    "config_fallback": 4,
    "hybrid": 2
  }
}
```

### POST /api/update-sltp-config
Met à jour les valeurs de config fallback.

**Payload:**
```json
{
  "stop_loss": 2.5,
  "take_profit": 5.0
}
```

**Validation:**
- `stop_loss`: 0.5% - 10%
- `take_profit`: 0.5% - 20%
- Avertissement si R/R < 1:1

## 📝 Code Implementation

### trading_bot.py (lines 2080-2100)
```python
# Hiérarchie SL/TP
stop_loss_percent = signal_data.get('dynamic_stop_loss')
take_profit_percent = signal_data.get('dynamic_take_profit')

if stop_loss_percent is None:
    stop_loss_percent = STOP_LOSS_PERCENT  # Config fallback
    
if take_profit_percent is None:
    take_profit_percent = TAKE_PROFIT_PERCENT  # Config fallback
```

### api/routes.py
- `handle_get_sltp_config()`: Récupère config + stats
- `handle_update_sltp_config()`: Met à jour bot_settings.json
- `_calculate_sltp_usage_stats()`: Calcule stats depuis trade_logs

### dashboard.html
- **UI Section**: Lines 4925-5170 (après Analyse Historique)
- **JavaScript**: Lines 15763-15905 (fonctions SL/TP)
- **Event Listeners**: Lines 16475-16480 (input handlers)

## 🧪 Tests

Exécuter le script de test:
```bash
python test_sltp_hierarchy.py
```

**Tests effectués:**
1. ✅ Récupération config actuelle
2. ✅ Mise à jour avec valeurs valides
3. ✅ Validation des erreurs (limites)
4. ✅ Restauration valeurs par défaut

## 📈 Recommandations

### Pour un bon Risk/Reward:
1. **Minimum acceptable**: TP ≥ SL (ratio 1:1)
2. **Bon ratio**: TP ≥ 1.5× SL (ratio 1.5:1)
3. **Excellent ratio**: TP ≥ 2× SL (ratio 2:1)

### Exemples de configurations:
```
Configuration actuelle (RISQUÉE):
SL = 2.5%
TP = 1.5%
R/R = 0.6:1 ❌

Configuration recommandée:
SL = 2.5%
TP = 5.0%
R/R = 2.0:1 ✅
```

## 🔄 Workflow complet

```mermaid
graph TD
    A[Signal détecté] --> B{IA disponible?}
    B -->|Oui| C[IA calcule SL/TP dynamiques]
    B -->|Non| D[Utilise config fallback]
    C --> E{SL fourni?}
    E -->|Oui| F[Utilise SL IA]
    E -->|Non| G[Utilise SL config]
    C --> H{TP fourni?}
    H -->|Oui| I[Utilise TP IA]
    H -->|Non| J[Utilise TP config]
    F --> K[Ouvrir position]
    G --> K
    I --> K
    J --> K
    D --> K
    K --> L[Logger source SL/TP]
    L --> M[Calcul stats]
```

## 📚 Fichiers modifiés

1. **dashboard.html**
   - Nouvelle section UI "Hiérarchie Intelligente SL/TP"
   - Fonctions JavaScript pour gestion et affichage
   - Event listeners pour inputs en temps réel

2. **api/routes.py**
   - `handle_get_sltp_config()`: Endpoint GET
   - `handle_update_sltp_config()`: Endpoint POST
   - `_calculate_sltp_usage_stats()`: Calcul statistiques

3. **dashboard_api_server.py**
   - Routes GET `/api/get-sltp-config`
   - Route POST `/api/update-sltp-config`

4. **test_sltp_hierarchy.py** (NEW)
   - Tests automatisés de l'API
   - Validation des erreurs
   - Tests de bout en bout

## 🎯 Résultat final

### Avant:
- ❌ SL/TP fixes (2.5% / 1.5%)
- ❌ R/R mauvais (0.6:1)
- ❌ Pas de visibilité sur l'usage IA
- ❌ Modification uniquement via fichier config.py

### Après:
- ✅ SL/TP dynamiques par l'IA (87% des cas)
- ✅ Fallback sécurisé si IA indisponible
- ✅ Interface claire avec stats d'utilisation
- ✅ Modification manuelle via dashboard
- ✅ Avertissements R/R en temps réel
- ✅ Exemples concrets de la hiérarchie
