Files
Trading-Bot/tests/test_visualizer.py
DaM f85c522f22 feat: finalize portfolio system and quantitative validation- Finalized MA_Crossover(30,100) and TrendFiltered_MA(30,100,ADX=15)
- Implemented portfolio engine with risk-based allocation (50/50)
- Added equity-based metrics for system-level evaluation
- Validated portfolio against standalone strategies
- Reduced max drawdown and volatility at system level
- Quantitative decision closed before paper trading phase
2026-02-02 14:38:05 +01:00

102 lines
2.7 KiB
Python

# 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()