# 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.backtest import BacktestEngine from src.backtest.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()