# test_visualizer.py
"""
Script para probar las visualizaciones
"""
import os
import sys
from dotenv import load_dotenv
from pathlib import Path
from datetime import datetime, timedelta

# Añadir raíz del proyecto al path
sys.path.insert(0, str(Path(__file__).parent.parent))

from src.utils.logger import log
from src.data.storage import StorageManager
from src.strategies import MovingAverageCrossover
from src.core import BacktestEngine
from src.core.visualizers.visualizer import BacktestVisualizer

def setup_environment():
    """Carga variables de entorno"""
    env_path = Path(__file__).parent.parent / 'config' / 'secrets.env'
    load_dotenv(dotenv_path=env_path)

def test_visualizer():
    """
    Prueba las visualizaciones con un backtest
    """
    log.info("="*70)
    log.info("📊 TEST: VISUALIZACIONES")
    log.info("="*70)
    
    # Setup
    setup_environment()
    
    # Cargar datos
    storage = StorageManager(
        db_host=os.getenv('DB_HOST'),
        db_port=int(os.getenv('DB_PORT', 5432)),
        db_name=os.getenv('DB_NAME'),
        db_user=os.getenv('DB_USER'),
        db_password=os.getenv('DB_PASSWORD'),
    )
    
    log.info("\n📥 Cargando datos...")
    # end_date = datetime.now()
    # start_date = end_date - timedelta(days=60)
    
    data = storage.load_ohlcv(
        symbol='BTC/USDT',
        timeframe='1h',
        start_date=None,
        end_date=None,
        use_cache=False
    )
    
    log.success(f"✓ Datos cargados: {len(data)} velas")
    
    # Ejecutar backtest
    log.info("\n🧪 Ejecutando backtest...")
    strategy = MovingAverageCrossover(
        fast_period=15,
        slow_period=50,
        ma_type='sma',
        use_adx=True,
        adx_threshold=30
    )
    
    engine = BacktestEngine(
        strategy=strategy,
        initial_capital=10000,
        commission=0.001,
        position_size=0.95
    )
    
    results = engine.run(data)
    
    log.info(f"   Retorno: {results['total_return_pct']:.2f}%")
    log.info(f"   Trades: {results['total_trades']}")
    
    # Crear visualizador
    log.info("\n📊 Generando visualizaciones...")
    viz = BacktestVisualizer(results, data)
    
    # Generar todos los gráficos
    viz.generate_all_plots()
    
    log.info("\n💡 Los gráficos se guardaron en: backtest_results/visualizer")
    log.info("   Archivos generados:")
    log.info("   - equity_curve.png")
    log.info("   - drawdown.png")
    log.info("   - returns_distribution.png")
    log.info("   - trades_chart.png")
    log.info("   - dashboard.png")
    
    storage.close()
    
    log.success("\n✅ TEST COMPLETADO")
    log.info("\n👀 Abre la carpeta 'backtest_results/' para ver los gráficos")

if __name__ == "__main__":
    test_visualizer()