#!/usr/bin/env python3
"""
Test des signaux optimisés avec sentiment de marché
"""

import sys
import os
sys.path.append('.')

from simple_trading_system.pragmatic_signals import PragmaticSignalGenerator

def test_optimized_signals():
    """Test complet des optimisations"""
    print("🧪 TEST SIGNAUX OPTIMISÉS")
    print("=" * 50)

    try:
        # Créer le générateur
        generator = PragmaticSignalGenerator()
        print("✅ PragmaticSignalGenerator créé")

        # Test du sentiment de marché
        sentiment = generator.sentiment_analyzer.get_market_sentiment()
        print(f"📊 Sentiment de marché: {sentiment:.3f}")

        if sentiment < -0.3:
            print("🔴 Marché BEARISH détecté - Filtrage des LONG renforcé")
        elif sentiment > 0.3:
            print("🟢 Marché BULLISH détecté - Filtrage des SHORT renforcé")
        else:
            print("🟡 Marché NEUTRE - Pas de biais directionnel")

        # Générer des signaux
        print("\n🎯 GÉNÉRATION DE SIGNAUX...")
        signals = generator.generate_signals()
        print(f"✅ {len(signals)} signaux générés après filtrage")

        if signals:
            scores = [signal['quality_score'] for signal in signals]
            sides = [signal['side'] for signal in signals]

            long_count = sides.count('LONG')
            short_count = sides.count('SHORT')

            print(f"📈 LONG: {long_count} | SHORT: {short_count}")
            print(f"📊 Scores: min={min(scores):.2f}, max={max(scores):.2f}, moy={sum(scores)/len(scores):.2f}")

            # Afficher les signaux avec détails
            print("\n🎯 SIGNAUX DÉTAILLÉS:")
            for i, signal in enumerate(signals[:3]):  # Top 3
                reason = signal['reason']
                if '📈' in reason:
                    emoji = "🚀"
                elif '⚠' in reason:
                    emoji = "⚠️"
                else:
                    emoji = "📊"

                print(f"  {emoji} {signal['symbol']} {signal['side']} - Score: {signal['quality_score']:.2f}")
                print(f"     {signal['reason']}")

        else:
            print("⚠ Aucun signal généré - Filtres trop stricts ou marché défavorable")

        # Statistiques de filtrage
        print(f"\n📋 RÉSUMÉ:")
        print(f"   Sentiment: {sentiment:.3f} ({'BEARISH' if sentiment < -0.3 else 'BULLISH' if sentiment > 0.3 else 'NEUTRAL'})")
        print(f"   Signaux générés: {len(signals)}")
        if signals:
            print(f"   Ratio LONG/SHORT: {long_count}/{short_count}")
            print(f"   Qualité moyenne: {sum(scores)/len(scores):.2f}")

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

if __name__ == "__main__":
    test_optimized_signals()