# 🔧 Troubleshooting - IchiGridEA

## Table des Matières

1. [Erreurs de Compilation](#erreurs-de-compilation)
2. [Erreurs d'Exécution](#erreurs-dexécution)
3. [Problèmes de Trading](#problèmes-de-trading)
4. [Problèmes de Dashboard](#problèmes-de-dashboard)
5. [Problèmes de Pipeline](#problèmes-de-pipeline)

---

## Erreurs de Compilation

### ❌ "Cannot open file Include/xxx.mqh"

**Cause**: Fichier manquant ou mauvais chemin.

**Solution**:
```
1. Vérifier que le fichier existe dans Include/
2. Vérifier le chemin dans le #include
3. Recompiler (F7)
```

### ❌ "Undeclared identifier"

**Cause**: Variable ou fonction non définie.

**Solution**:
```
1. Vérifier l'ordre des #include
2. Certains modules dépendent d'autres (voir DEPENDENCIES_GRAPH.json)
3. CommonDefinitions.mqh doit être inclus en premier
```

### ❌ "Function already defined"

**Cause**: Double inclusion d'un fichier.

**Solution**:
```
1. Vérifier les include guards (#ifndef)
2. Ne pas inclure le même fichier plusieurs fois
```

---

## Erreurs d'Exécution

### ❌ "Array out of range"

**Cause**: Tentative d'accès à un index invalide.

**Solution**:
```cpp
// Toujours vérifier la taille avant accès
if(ArraySize(buffer) > index)
    value = buffer[index];
```

### ❌ "Invalid handle"

**Cause**: Échec de création d'indicateur.

**Solution**:
```cpp
// Utiliser SafeHandleCheck
int handle = iATR(_Symbol, PERIOD_H1, 14);
if(!SafeHandleCheck(handle, "ATR"))
    return INIT_FAILED;
```

### ❌ "Trade context busy"

**Cause**: Autre opération de trading en cours.

**Solution**:
```cpp
// Attendre ou réessayer
while(IsTradeContextBusy())
    Sleep(100);
```

### ❌ "Not enough money"

**Cause**: Marge insuffisante.

**Solution**:
```
1. Réduire InpLotInitial
2. Augmenter le dépôt
3. Vérifier le levier
```

---

## Problèmes de Trading

### ⚠️ L'EA n'ouvre pas de positions

**Vérifications**:
1. `InpEnableLiveTrading = true`?
2. AutoTrading activé dans MT5? (bouton vert)
3. Trading autorisé pour l'EA? (Outils → Options → Expert Advisors)
4. Dans les heures de trading? (InpStartHour / InpEndHour)
5. Spread acceptable? (< InpMaxSpread)

**Debug**:
```
InpModeDebug = true
```
Puis vérifier le Journal pour les messages [DEBUG].

### ⚠️ Positions fermées trop tôt

**Causes possibles**:
- TP/SL trop serrés
- CloseManager trop agressif
- Protection déclenchée

**Solution**:
```
InpEnableCloseManager = false  // Tester sans
InpMaxDrawdownPercent = 30.0   // Augmenter
```

### ⚠️ Trop de positions ouvertes

**Solution**:
```
InpMaxGridLevels = 5          // Réduire
InpEnableGrid = false         // Désactiver la grille
```

---

## Problèmes de Dashboard

### ⚠️ Dashboard n'apparaît pas

**Solutions**:
1. `InpEnableDashboard = true`?
2. Chart assez grand?
3. Vérifier ChartID valide

### ⚠️ Dashboard mal positionné

**Solution**:
```
1. Redimensionner le chart
2. Recharger l'EA (click droit → Recharger)
```

### ⚠️ Valeurs non mises à jour

**Cause**: OnTick() pas appelé (marché fermé).

**Solution**: Attendre l'ouverture du marché ou tester en backtest.

---

## Problèmes de Pipeline

### ❌ "consistency_checker.py échoue"

**Solution**:
```bash
# Mettre à jour STATE.json
python pipeline/scripts/consistency_checker.py --report

# Corriger les incohérences signalées
```

### ❌ "hash_calculator.py - Module not found"

**Solution**:
```bash
pip install -r requirements.txt
```

### ❌ Git hooks ne fonctionnent pas

**Solution**:
```bash
# Réinstaller les hooks
./setup-hooks.sh

# Vérifier la configuration
git config core.hooksPath
```

### ❌ GitHub Actions échoue

**Vérifications**:
1. Tous les fichiers JSON valides?
2. Tous les fichiers requis présents?
3. Voir les logs dans GitHub Actions

---

## Codes d'Erreur MQL5 Courants

| Code | Description | Solution |
|------|-------------|----------|
| 4756 | Trade context busy | Attendre/réessayer |
| 10006 | Invalid price | Rafraîchir les prix |
| 10013 | Invalid stops | Ajuster SL/TP |
| 10014 | Invalid volume | Normaliser le lot |
| 10018 | Market closed | Attendre ouverture |
| 10019 | Not enough money | Réduire le lot |

---

## Diagnostic Complet

Exécuter le diagnostic intégré:

```cpp
// Dans le terminal ou ajouté au code
RunSafetyDiagnostic(_Symbol);
```

Ou utiliser le script de test:

```bash
# Depuis MetaEditor
# Scripts → tests/RunAllTests.mq5
```

---

## Logs et Debug

### Activer le mode debug

```
InpModeDebug = true
```

### Localisation des logs

- **MT5**: Terminal → Journal
- **Fichiers**: `MQL5/Files/IchiGridEA/Logs/`
- **Pipeline**: `pipeline/reports/`

### Analyser les logs

```bash
python pipeline/scripts/log_analyzer.py <fichier.log> --errors --stats
```

---

## Contact Support

Si le problème persiste:

1. **GitHub Issue**: Inclure les logs et la configuration
2. **Email**: support@sovralys.com
3. **Discord**: [Lien vers Discord]

**Informations à fournir**:
- Version de l'EA (voir STATE.json)
- Build MetaTrader 5
- Symbole et timeframe
- Paramètres utilisés
- Messages d'erreur complets
