#!/usr/bin/env python3
"""
Vérifier le fonctionnement de la nouvelle stratégie qualité
"""

import sys
import time
import logging
from hyperliquid_client import HyperliquidClient

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)

def check_quality_strategy():
    """Vérifie la stratégie qualité en cours"""

    print("=" * 60)
    print("🎯 VÉRIFICATION STRATÉGIE ULTRA-QUALITÉ")
    print("=" * 60)

    try:
        client = HyperliquidClient()

        # 1. Vérifier qu'il n'y a plus de positions
        print("\n1. VÉRIFICATION: Aucune position active")
        account_state = client.get_account_state()
        if account_state and 'assetPositions' in account_state:
            positions = account_state['assetPositions']
            if len(positions) == 0:
                print("✅ CONFIRMÉ: 0 position active - Nettoyage réussi")
            else:
                print(f"⚠️  {len(positions)} position(s) encore active(s):")
                for pos in positions:
                    symbol = pos['position']['coin']
                    size = float(pos['position']['szi'])
                    side = "LONG" if size > 0 else "SHORT"
                    print(f"   - {symbol} {side} size={abs(size):.3f}")

        # 2. Afficher la configuration actuelle
        print("\n2. CONFIGURATION STRATÉGIE QUALITÉ:")
        try:
            from trading_config import (
                MAX_SIMULTANEOUS_POSITIONS, MIN_CONFIDENCE_THRESHOLD,
                MIN_POSITION_SIZE_USD, MAX_LEVERAGE, LEVERAGE_SAFETY_FACTOR,
                MIN_LEVERAGE_THRESHOLD, SHITCOIN_STRATEGY,
                MAX_MEDIUM_QUALITY_RATIO
            )

            print(f"   📊 Max positions simultanées: {MAX_SIMULTANEOUS_POSITIONS}")
            print(f"   🎯 Confiance minimum: {MIN_CONFIDENCE_THRESHOLD}%")
            print(f"   💰 Position minimum: ${MIN_POSITION_SIZE_USD}")
            print(f"   📈 Leverage maximum: {MAX_LEVERAGE}x")
            print(f"   ⚡ Leverage minimum: {MIN_LEVERAGE_THRESHOLD}x")
            print(f"   🔒 Facteur sécurité: {LEVERAGE_SAFETY_FACTOR}")
            print(f"   🗑️  Stratégie shitcoins: {SHITCOIN_STRATEGY}")
            print(f"   📉 Ratio qualité moyenne max: {MAX_MEDIUM_QUALITY_RATIO}")

        except ImportError as e:
            print(f"   ❌ Erreur import config: {e}")

        # 3. Vérifier les tokens de haute qualité
        print("\n3. TOKENS HAUTE QUALITÉ AUTORISÉS:")
        try:
            from trading_config import HIGH_QUALITY_CRYPTOS
            print(f"   ✅ {len(HIGH_QUALITY_CRYPTOS)} tokens haute qualité:")
            # Afficher les 15 premiers
            for i, token in enumerate(HIGH_QUALITY_CRYPTOS[:15]):
                print(f"   {token}", end="  ")
                if (i + 1) % 5 == 0:
                    print()
            if len(HIGH_QUALITY_CRYPTOS) > 15:
                print(f"\n   ... et {len(HIGH_QUALITY_CRYPTOS) - 15} autres")
            else:
                print()
        except ImportError:
            print("   ❌ Erreur import liste haute qualité")

        # 4. Test de classification dynamique
        print("\n4. TEST CLASSIFICATION DYNAMIQUE:")
        try:
            from dynamic_market_classifier import DynamicMarketClassifier
            classifier = DynamicMarketClassifier()

            # Tester quelques tokens populaires
            test_tokens = ['BTC', 'ETH', 'SOL', 'DOGE', 'SHIB', 'PEPE', 'ZORA', 'RANDOM']
            print("   Token | Qualité | Raison")
            print("   " + "-" * 30)

            for token in test_tokens:
                quality = classifier.classify_token(token)
                if quality == 'high':
                    status = "✅ HIGH"
                elif quality == 'medium':
                    status = "⚡ MEDIUM"
                else:
                    status = "🗑️ SHITCOIN"
                print(f"   {token:6} | {status}")

        except Exception as e:
            print(f"   ❌ Erreur test classification: {e}")

        # 5. Recommandations
        print("\n5. 🎯 STRATÉGIE ULTRA-QUALITÉ ACTIVÉE:")
        print("   ✅ Positions shitcoins fermées")
        print("   ✅ Configuration ultra-sélective")
        print("   ✅ Leverages minimum 8x")
        print("   ✅ Max 5 positions simultanées")
        print("   ✅ Shitcoins exclus totalement")
        print("   ✅ Classification dynamique stricte")

        print("\n📈 RÉSULTAT ATTENDU:")
        print("   🎯 Seulement les meilleurs tokens (BTC, ETH, SOL...)")
        print("   ⚡ Leverages agressifs (8x minimum)")
        print("   💎 Qualité > Quantité")
        print("   🚀 Performance optimisée")

    except Exception as e:
        logger.error(f"Erreur vérification: {e}")

if __name__ == "__main__":
    check_quality_strategy()