diegobeyl/backtesting
2
1#!/bin/bash2 3# Backtesting App V2 - Setup Script para macOS/Linux4# Configura el entorno de desarrollo completo5 6# Configuración de colores para output7RED='\033[0;31m'8GREEN='\033[0;32m'9YELLOW='\033[1;33m'10BLUE='\033[0;34m'11NC='\033[0m' # No Color12 13PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"14 15echo ""16echo "=========================================="17echo " Backtesting App V2 - Setup"18echo "=========================================="19echo ""20 21# Detectar arquitectura (Apple Silicon vs Intel)22ARCH=$(uname -m)23if [ "$ARCH" = "arm64" ]; then24 echo -e "${BLUE}Detectado: Apple Silicon (M1/M2/M3)${NC}"25 APPLE_SILICON=true26else27 echo -e "${BLUE}Detectado: $ARCH${NC}"28 APPLE_SILICON=false29fi30echo ""31 32# Verificar versión de Python33echo "Verificando Python..."34if command -v python3 &> /dev/null; then35 PYTHON_VERSION=$(python3 --version | awk '{print $2}')36 echo -e "${GREEN}Python $PYTHON_VERSION encontrado${NC}"37else38 echo -e "${RED}ERROR: Python 3 no encontrado${NC}"39 echo ""40 echo "Por favor instala Python 3.11 o superior:"41 if [ "$APPLE_SILICON" = true ]; then42 echo " brew install python@3.11"43 else44 echo " Visita: https://www.python.org/downloads/"45 fi46 exit 147fi48echo ""49 50# Crear entorno virtual si no existe51if [ ! -d "venv" ]; then52 echo "Creando entorno virtual..."53 python3 -m venv venv54 echo -e "${GREEN}Entorno virtual creado${NC}"55else56 echo -e "${YELLOW}Entorno virtual ya existe${NC}"57fi58echo ""59 60# Activar entorno virtual61echo "Activando entorno virtual..."62source venv/bin/activate63echo ""64 65# Actualizar pip66echo "Actualizando pip..."67pip install --upgrade pip68echo ""69 70# Instalar dependencias71echo "Instalando dependencias..."72if [ "$APPLE_SILICON" = true ]; then73 echo -e "${YELLOW}Usando configuración optimizada para Apple Silicon${NC}"74 # Para Apple Silicon, algunas librerías necesitan flags especiales75 ARCHFLAGS="-arch arm64" pip install --no-cache-dir -r requirements.txt76else77 pip install -r requirements.txt78fi79echo ""80 81# Crear directorios necesarios82echo "Creando directorios..."83mkdir -p logs cache config84echo -e "${GREEN}Directorios creados${NC}"85echo ""86 87# Verificar/crear archivo .env88if [ ! -f ".env" ]; then89 echo "Creando archivo .env..."90 if [ -f ".env.example" ]; then91 cp .env.example .env92 echo -e "${GREEN}.env creado desde .env.example${NC}"93 else94 # Crear .env básico95 cat > .env << EOF96# API Configuration97DEBUG=True98ENVIRONMENT=development99LOG_LEVEL=INFO100API_HOST=0.0.0.0101API_PORT=8000102 103# Cache Configuration104ENABLE_CACHE=True105CACHE_EXPIRY_HOURS=24106 107# MetaTrader 5 Configuration (opcional)108# MT5_LOGIN=109# MT5_PASSWORD=110# MT5_SERVER=111EOF112 echo -e "${GREEN}.env creado con configuración por defecto${NC}"113 fi114else115 echo -e "${YELLOW}.env ya existe${NC}"116fi117echo ""118 119# Dar permisos de ejecución a los scripts120echo "Configurando permisos de scripts..."121chmod +x setup.sh start.sh stop.sh restart.sh 2>/dev/null122echo -e "${GREEN}Permisos configurados${NC}"123echo ""124 125echo ""126echo "=========================================="127echo " Setup Complete! ✓"128echo "=========================================="129echo ""130echo -e "${GREEN}La aplicación está lista para usar${NC}"131echo ""132echo "Para iniciar la aplicación:"133echo -e " ${BLUE}./start.sh${NC}"134echo ""135echo "Para detener la aplicación:"136echo -e " ${BLUE}./stop.sh${NC}"137echo ""138echo "Para reiniciar la aplicación:"139echo -e " ${BLUE}./restart.sh${NC}"140echo ""141echo "To start the application:"142echo ""143echo "1. FastAPI Backend:"144echo " python api/main.py"145echo ""146echo "2. Streamlit UI (in another terminal):"147echo " cd backtesting_app/backtesting_app"148echo " streamlit run app.py"149echo ""150echo "3. Or use Docker:"151echo " docker-compose up -d"152echo ""153echo "Endpoints:"154echo " - API: http://localhost:8000"155echo " - API Docs: http://localhost:8000/docs"156echo " - Health: http://localhost:8000/health"157echo " - Streamlit: http://localhost:8501"158echo ""159 