#!/usr/bin/env python3
"""Analyse TOUS les patterns utilisés dans l'historique des trades"""

import json
from collections import Counter

print("\n" + "="*70)
print("🔍 ANALYSE COMPLÈTE DES PATTERNS UTILISÉS")
print("="*70)

# Patterns attendus selon notre étude récente
PATTERNS_ATTENDUS = [
    'CREUX_REBOUND',
    'PULLBACK', 
    'TREND_CONTINUATION',
    'SQUEEZE_BREAKOUT',
    'HIGH_SCORE_OVERRIDE',
    'POSSIBLE_BLOCKED'
]

# 1. Analyser TOUS les trades de l'historique
print("\n📊 TOUS LES PATTERNS DANS L'HISTORIQUE:")
print("-" * 70)

try:
    with open('trade_history.json', 'r') as f:
        history = json.load(f)
    
    patterns_all = [t.get('pattern', 'UNKNOWN') for t in history]
    counter_all = Counter(patterns_all)
    total_all = len(patterns_all)
    
    print(f"\nTotal de {total_all} trades dans l'historique\n")
    
    # Séparer attendus et non attendus
    patterns_attendus_found = []
    patterns_inattendus_found = []
    
    for pattern, count in counter_all.most_common():
        pct = (count / total_all * 100) if total_all > 0 else 0
        if pattern in PATTERNS_ATTENDUS:
            status = "✅"
            patterns_attendus_found.append((pattern, count, pct))
        else:
            status = "⚠️"
            patterns_inattendus_found.append((pattern, count, pct))
        
        print(f"   {status} {pattern}: {count} trades ({pct:.1f}%)")
    
    # Résumé
    print(f"\n📋 RÉSUMÉ:")
    print(f"   ✅ Patterns attendus: {len(patterns_attendus_found)}")
    print(f"   ⚠️  Patterns non attendus: {len(patterns_inattendus_found)}")
    
    if patterns_inattendus_found:
        print(f"\n⚠️  PATTERNS NON ATTENDUS DÉTECTÉS:")
        print("-" * 70)
        for pattern, count, pct in patterns_inattendus_found:
            print(f"   • {pattern}: {count} trades ({pct:.1f}%)")
        
        # Analyser des exemples de trades avec patterns non attendus
        print(f"\n🔎 EXEMPLES DE TRADES AVEC PATTERNS NON ATTENDUS:")
        print("-" * 70)
        
        for pattern, _, _ in patterns_inattendus_found[:3]:  # Top 3
            examples = [t for t in history if t.get('pattern') == pattern][:2]  # 2 exemples
            if examples:
                print(f"\n   Pattern: {pattern}")
                for ex in examples:
                    symbol = ex.get('symbol', 'N/A')
                    entry = ex.get('entry_price', 0)
                    timestamp = ex.get('timestamp', 'N/A')[:19]
                    pnl = ex.get('pnl_pct', 0)
                    print(f"      • {symbol} @ {entry} - P&L: {pnl:.2f}% ({timestamp})")
    
    # Patterns attendus mais non trouvés
    patterns_attendus_manquants = [p for p in PATTERNS_ATTENDUS if p not in counter_all]
    if patterns_attendus_manquants:
        print(f"\n📝 PATTERNS ATTENDUS MAIS NON UTILISÉS:")
        print("-" * 70)
        for pattern in patterns_attendus_manquants:
            print(f"   • {pattern}")

except Exception as e:
    print(f"   ❌ Erreur: {e}")
    import traceback
    traceback.print_exc()

# 2. Analyser les positions actuelles
print("\n📍 POSITIONS ACTUELLES:")
print("-" * 70)

try:
    with open('positions.json', 'r') as f:
        positions = json.load(f)
    
    if isinstance(positions, dict):
        print(f"\nTotal: {len(positions)} positions ouvertes\n")
        
        for symbol, pos in positions.items():
            pattern = pos.get('pattern', 'UNKNOWN')
            entry = pos.get('entry_price', 0)
            status = "✅" if pattern in PATTERNS_ATTENDUS else "⚠️"
            print(f"   {status} {symbol}: {pattern} @ {entry}")
    
except Exception as e:
    print(f"   ❌ Erreur: {e}")

print("\n" + "="*70)
