diff --git a/README.md b/README.md index fdbbcbb..ea89ee0 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,838 @@ -# Encelado +# ?? Encelado - TradingBot -Semplice e piccolo robot di trading automatizzato \ No newline at end of file +**Sistema automatizzato di trading su criptovalute con interfaccia web moderna** + +[](https://dotnet.microsoft.com/) +[](https://blazor.net/) +[](https://www.docker.com/) +[](LICENSE) + +> ?? **Robot di trading automatizzato** con strategie personalizzabili, analisi tecnica in tempo reale e interfaccia web intuitiva. + +--- + +## ?? Indice + +- [Panoramica](#-panoramica) +- [Caratteristiche](#-caratteristiche-principali) +- [Come Funziona](#-come-funziona) +- [Quick Start](#-quick-start) +- [Installazione](#-installazione) +- [Deployment](#-deployment) +- [Configurazione](#-configurazione) +- [Utilizzo](#-utilizzo) +- [Architettura](#-architettura) +- [Manutenzione](#-manutenzione) +- [Troubleshooting](#-troubleshooting) +- [Documentazione](#-documentazione-completa) +- [Roadmap](#-roadmap) +- [Licenza](#-licenza) + +--- + +## ?? Panoramica + +**Encelado TradingBot** è un'applicazione **Blazor Server** che implementa un sistema di trading automatizzato su criptovalute. Il bot analizza il mercato in tempo reale, applica strategie di trading configurabili e gestisce automaticamente l'esecuzione delle operazioni. + +### ?? Demo + +``` +http://localhost:8080 # Locale +http://[UNRAID-IP]:8080 # Produzione +``` + +### ? Highlights + +- ?? **Trading Automatico** - 15 asset supportati con strategie personalizzabili +- ?? **Dashboard Real-time** - Aggiornamenti live ogni 3 secondi +- ?? **Analisi Tecnica** - RSI, MACD, EMA integrate +- ?? **UI Moderna** - Dark theme, responsive, glassmorphism +- ?? **Docker Ready** - Deploy semplificato con containerizzazione +- ?? **Persistenza Dati** - Settings e configurazioni salvate +- ?? **Sicuro** - Modalità simulazione per testing + +--- + +## ?? Caratteristiche Principali + +### ?? Dashboard Completo +- **Portfolio Overview**: Valore totale, profitto, asset attivi +- **Top Performers**: Asset più redditizi +- **Attività Recente**: Ultime 8 operazioni +- **Aggiornamenti Real-time**: Via SignalR + +### ?? Gestione Strategie +- **6 Strategie Predefinite**: RSI+MACD, SMA, Scalping, Trend Following, Mean Reversion, Conservative +- **Parametri Configurabili**: Stop Loss, Take Profit, condizioni entry/exit +- **Backtesting Ready**: Template per test storici + +### ?? Asset Management +- **15 Criptovalute**: BTC, ETH, BNB, SOL, ADA, XRP, DOT, AVAX, MATIC, LINK, UNI, ATOM, LTC, ALGO, VET +- **Grid/List View**: Visualizzazioni multiple +- **Assegnazione Strategie**: Per singolo asset +- **Toggle On/Off**: Controllo granulare + +### ?? Analisi Tecnica +- **Indicatori**: RSI (14), MACD (12,26,9), EMA (12,26) +- **Grafici SVG**: Rendering performante client-side +- **Time Series**: Storico prezzi e variazioni + +### ?? Analisi Mercato +- **Grafici Interattivi**: Visualizzazione prezzi +- **Selector Asset**: Cambio asset dinamico +- **States Colorati**: Overbought/Oversold/Neutral + +### ?? Statistiche Dettagliate +- **Performance Portfolio**: Metriche aggregate +- **Breakdown per Asset**: ROI, win rate, trades +- **Best/Worst Performers**: Identificazione automatica +- **Drilldown**: Analisi approfondita singolo asset + +### ?? Impostazioni +- **Persistenza Automatica**: Salvataggio su file JSON +- **Configurazioni**: Intervallo aggiornamento, log level, auto-start +- **Notifiche**: Feedback visivo + +--- + +## ?? Come Funziona + +### ?? Architettura del Sistema + +``` +??????????????????????????????????????????????????????????? +? BLAZOR SERVER UI ? +? (Dashboard, Strategie, Trading, Market, Stats) ? +??????????????????????????????????????????????????????????? + ? SignalR Real-time + ? +??????????????????????????????????????????????????????????? +? TRADING BOT SERVICE (Core) ? +? - Gestione Asset ? +? - Esecuzione Strategie ? +? - Risk Management ? +? - Event System ? +??????????????????????????????????????????????????????????? + ? ? ? + ? ? ? +??????????? ???????????????? ???????????????????? +? Market ? ? Technical ? ? Settings ? +? Data ? ? Analysis ? ? Service ? +? Service ? ? Service ? ? ? +??????????? ???????????????? ???????????????????? + ? + ? +??????????????????????????????????????????????????????????? +? SIMULATED / REAL MARKET DATA ? +? (CoinGecko API / Simulazione) ? +??????????????????????????????????????????????????????????? +``` + +### ?? Ciclo di Trading + +1. **?? Acquisizione Dati** + - Market Data Service recupera prezzi ogni 3 secondi + - Aggiorna cache interna per tutti gli asset + +2. **?? Analisi Tecnica** + - Calcolo indicatori (RSI, MACD, EMA) + - Valutazione trend e momentum + - Identificazione pattern + +3. **?? Valutazione Strategia** + - Verifica condizioni BUY/SELL + - Controllo risk management + - Validazione budget disponibile + +4. **? Esecuzione Trade** + - Calcolo dimensione posizione + - Esecuzione ordine (simulato/reale) + - Aggiornamento portfolio + +5. **?? Logging & Notifica** + - Salvataggio operazione + - Aggiornamento statistiche + - Notifica UI via SignalR + +### ?? Strategia di Default: RSI + MACD + +```csharp +BUY quando: + - RSI < 40 (asset ipervenduto) + - MACD Histogram > 0 (momentum positivo) + - Budget disponibile >= MinTradeAmount + +SELL quando: + - RSI > 60 (asset ipercomprato) + - MACD Histogram < 0 (momentum negativo) + - Holdings > 0 + OPPURE + - Profitto >= Take Profit (10%) + - Perdita >= Stop Loss (5%) +``` + +### ?? Gestione Rischio + +``` +? Max Daily Trades: 50 per asset +? Max Position Size: $5000 per asset +? Min Trade Amount: $10 +? Trade Size: 30% del balance disponibile (max) +? Min Interval: 10 secondi tra trades +? Stop Loss: 5% configurabile +? Take Profit: 10% configurabile +``` + +--- + +## ?? Quick Start + +### Locale (Windows) + +```powershell +# Clone repository +git clone https://192.168.30.23/Alby96/Encelado +cd Encelado\TradingBot + +# Restore e Build +dotnet restore +dotnet build + +# Run +dotnet run + +# Accesso +# http://localhost:5001 +``` + +### Docker (Cross-platform) + +```bash +# Build +docker-compose build + +# Run +docker-compose up -d + +# Accesso +# http://localhost:8080 +``` + +### Unraid (Production) + +Vedi [Deployment su Unraid](#deployment-su-unraid) + +--- + +## ?? Installazione + +### Prerequisiti + +**Per Sviluppo Locale**: +- ? [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) +- ? Visual Studio 2022+ o VS Code +- ? Git + +**Per Docker**: +- ? [Docker Desktop](https://www.docker.com/products/docker-desktop) (Windows/Mac) +- ? Docker Engine (Linux) +- ? Docker Compose + +**Per Unraid**: +- ? Unraid 6.10+ +- ? Docker installato +- ? Portainer (opzionale ma consigliato) + +### Installazione Passo-Passo + +#### 1. Clone Repository + +```bash +git clone https://192.168.30.23/Alby96/Encelado +cd Encelado/TradingBot +``` + +#### 2. Restore Dipendenze + +```bash +dotnet restore +``` + +#### 3. Configurazione (Opzionale) + +Crea `appsettings.Development.json`: + +```json +{ + "Logging": { + "LogLevel": { + "Default": "Information" + } + }, + "TradingBot": { + "SimulationMode": true, + "UpdateIntervalSeconds": 3 + } +} +``` + +#### 4. Build + +```bash +dotnet build -c Release +``` + +#### 5. Run + +```bash +dotnet run +``` + +#### 6. Verifica + +Apri browser su: `https://localhost:5001` o `http://localhost:5000` + +--- + +## ?? Deployment + +### Deployment Locale + +```bash +# Development +dotnet run + +# Production build +dotnet publish -c Release -o ./publish +cd publish +dotnet TradingBot.dll +``` + +### Deployment Docker + +#### Build Immagine + +```bash +# Windows +.\build-docker.bat + +# Linux/Mac +chmod +x build-docker.sh +./build-docker.sh +``` + +#### Run Container + +```bash +docker-compose up -d +``` + +#### Verifica + +```bash +# Status +docker ps | grep tradingbot + +# Logs +docker logs tradingbot -f + +# Health +curl http://localhost:8080/health +``` + +### Deployment su Unraid + +#### Metodo 1: Portainer Stack (Consigliato) + +1. **Portainer** ? Stacks ? Add stack +2. **Name**: `tradingbot` +3. **Git Repository**: `https://192.168.30.23/Alby96/Encelado` +4. **Compose path**: `TradingBot/docker-compose.yml` +5. **Deploy** + +**Setup Webhook Auto-deploy**: +- Portainer ? Webhooks ? Create +- Gitea ? Settings ? Webhooks ? Add +- Ogni push ? Auto-deploy! + +#### Metodo 2: SSH Manuale + +```bash +# SSH su Unraid +ssh root@[UNRAID-IP] + +# Clone +cd /mnt/user/appdata +git clone https://192.168.30.23/Alby96/Encelado.git tradingbot +cd tradingbot/TradingBot + +# Deploy +docker-compose up -d +``` + +**Guida Completa**: [docs/deployment/UNRAID_DEPLOYMENT.md](TradingBot/docs/deployment/UNRAID_DEPLOYMENT.md) + +--- + +## ?? Configurazione + +### File Configurazione + +**Locale**: `%LocalAppData%/TradingBot/appsettings.json` +**Docker**: Volume `tradingbot-data` + +### Parametri Principali + +```json +{ + "SimulationMode": true, // true = simulazione, false = reale + "AutoStartBot": true, // Avvio automatico + "UpdateIntervalSeconds": 3, // Intervallo aggiornamento (2-10) + "DesktopNotifications": false, // Notifiche desktop + "ConfirmManualTrades": false, // Conferma trades manuali + "LogLevel": "Info", // Error, Warning, Info, Debug + "SidebarCollapsed": false // Stato sidebar UI +} +``` + +### Environment Variables (Docker) + +```bash +# .env file +TZ=Europe/Rome +ASPNETCORE_ENVIRONMENT=Production +TRADINGBOT__SimulationMode=true +TRADINGBOT__AutoStartBot=true +TRADINGBOT__UpdateIntervalSeconds=3 +``` + +### Configurazione Asset + +Modifica in UI: **Asset** ? Seleziona asset ? **Configura** + +O nel codice: `Services/TradingBotService.cs` ? `InitializeAssets()` + +--- + +## ?? Utilizzo + +### Navigazione UI + +#### ?? Dashboard +- Overview portfolio e performance +- Top 6 asset attivi +- Ultimi 8 trades + +#### ?? Strategie +- Visualizza strategie disponibili +- Strategia attiva: RSI + MACD Cross +- Template predefiniti + +#### ?? Asset +- **Grid View**: Card dettagliate +- **List View**: Tabella compatta +- **Assegna Strategie**: Dropdown per asset +- **Toggle**: Attiva/disattiva trading + +#### ?? Trading +- Grid tutti asset +- Toggle on/off +- Storico operazioni con filtri + +#### ?? Analisi Mercato +- Grafici interattivi +- Indicatori tecnici live +- Selector asset + +#### ?? Statistiche +- Metriche aggregate +- Performance per asset +- Best/Worst performers +- Drilldown dettagliato + +#### ?? Impostazioni +- Configurazioni globali +- Salvataggio automatico +- Reset a defaults + +### Operazioni Comuni + +#### Avviare/Fermare Bot + +``` +Top Bar ? Button "Avvia" / "Stop" +``` + +#### Cambiare Strategia per Asset + +``` +Asset ? Grid/List ? Dropdown "Strategia Assegnata" ? Seleziona +``` + +#### Attivare/Disattivare Asset + +``` +Asset ? Toggle switch per ogni asset +``` + +#### Monitorare Performance + +``` +Dashboard ? Vedi summary +Statistics ? Dettagli completi +``` + +--- + +## ??? Architettura + +### Stack Tecnologico + +``` +Frontend: Blazor Server (.NET 10) + SignalR (Real-time) + CSS Custom (Dark theme) + SVG Charts + +Backend: ASP.NET Core + Services (Singleton) + Event-driven architecture + +Data: In-memory (runtime) + JSON files (settings) + +Deploy: Docker + Docker Compose + Unraid compatible +``` + +### Componenti Principali + +``` +TradingBot/ +??? Components/ +? ??? Layout/ +? ? ??? MainLayout.razor # Sidebar + Layout +? ??? Pages/ +? ? ??? Dashboard.razor # Homepage +? ? ??? Strategies.razor # Strategie +? ? ??? Assets.razor # Asset management +? ? ??? Trading.razor # Trading view +? ? ??? Market.razor # Analisi mercato +? ? ??? Statistics.razor # Statistiche +? ? ??? Settings.razor # Impostazioni +? ??? Shared/ +? ??? AdvancedChart.razor # Grafico SVG +? ??? AssetSettings.razor # Config asset +? +??? Services/ +? ??? TradingBotService.cs # Core trading logic +? ??? SimulatedMarketDataService.cs # Dati simulati +? ??? SettingsService.cs # Persistenza settings +? ??? ITradingStrategy.cs # Strategy interface +? ??? SimpleMovingAverageStrategy.cs +? ??? TechnicalAnalysis.cs # Calcolo indicatori +? +??? Models/ +? ??? AssetConfiguration.cs # Config asset +? ??? AssetStatistics.cs # Statistiche +? ??? MarketPrice.cs # Dati mercato +? ??? Trade.cs # Operazione +? ??? TechnicalIndicators.cs # RSI, MACD, EMA +? ??? AppSettings.cs # Settings app +? +??? wwwroot/ + ??? app.css # Stili globali +``` + +### Pattern & Practices + +- ? **Singleton Services**: Per state management +- ? **Event-driven**: OnStatusChanged, OnPriceUpdated, OnTradeExecuted +- ? **Dependency Injection**: ASP.NET Core DI +- ? **Component Isolation**: Scoped CSS +- ? **Real-time Updates**: SignalR +- ? **Responsive Design**: Mobile-first + +--- + +## ?? Manutenzione + +### Backup + +#### Backup Automatico (Unraid) + +Script: `/root/scripts/backup-tradingbot.sh` + +```bash +#!/bin/bash +BACKUP_DIR="/mnt/user/backups/tradingbot" +DATE=$(date +%Y%m%d_%H%M%S) + +mkdir -p $BACKUP_DIR + +docker run --rm \ + -v tradingbot_tradingbot-data:/data \ + -v $BACKUP_DIR:/backup \ + alpine tar czf /backup/tradingbot-data-$DATE.tar.gz -C /data . + +# Mantieni 7 giorni +find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete +``` + +Crontab: +``` +0 3 * * * /root/scripts/backup-tradingbot.sh +``` + +#### Backup Manuale + +```bash +# Locale +cp -r %LocalAppData%/TradingBot backup/ + +# Docker +docker run --rm -v tradingbot_tradingbot-data:/data -v $(pwd):/backup alpine tar czf /backup/backup.tar.gz -C /data . +``` + +### Aggiornamenti + +#### Via Git (Locale) + +```bash +cd Encelado/TradingBot +git pull origin main +dotnet build +dotnet run +``` + +#### Via Docker + +```bash +git pull origin main +docker-compose build +docker-compose up -d +``` + +#### Via Unraid (SSH) + +```bash +cd /mnt/user/appdata/tradingbot/TradingBot +git pull +docker-compose up -d --build +``` + +#### Via Webhook (Automatico) + +Ogni push su Gitea ? Auto-deploy se webhook configurato! + +### Monitoring + +#### Health Check + +```bash +curl http://localhost:8080/health +``` + +Output atteso: `Healthy` + +#### Logs + +```bash +# Docker +docker logs tradingbot -f + +# Locale +# Vedi console di Visual Studio +``` + +#### Resource Usage + +```bash +docker stats tradingbot +``` + +### Pulizia + +```bash +# Stop container +docker-compose down + +# Remove volumes (ATTENZIONE: dati persi!) +docker-compose down -v + +# Clean images +docker system prune -a +``` + +--- + +## ?? Troubleshooting + +### Problemi Comuni + +#### Bot non si avvia + +**Sintomo**: Container esce immediatamente + +**Soluzione**: +```bash +docker logs tradingbot +# Verifica errori +# Controlla porta 8080 libera +``` + +#### Cache Browser + +**Sintomo**: UI non si aggiorna + +**Soluzione**: +``` +Ctrl + Shift + R (hard refresh) +O vedi: docs/troubleshooting/BROWSER_CACHE_GUIDE.md +``` + +#### Sidebar non collassa + +**Sintomo**: Toggle non funziona + +**Soluzione**: +``` +1. Hard refresh: Ctrl + Shift + R +2. Vedi: docs/troubleshooting/SIDEBAR_TOGGLE_DEBUG.md +3. Check console: F12 ? Console +``` + +#### Porta in uso + +**Sintomo**: `Address already in use` + +**Soluzione**: +```yaml +# docker-compose.yml +ports: + - "8081:8080" # Cambia porta esterna +``` + +#### Out of Memory + +**Sintomo**: Container crashato + +**Soluzione**: +```yaml +# docker-compose.yml +deploy: + resources: + limits: + memory: 2G # Aumenta da 1G +``` + +### Log Debug + +```bash +# Aumenta log level +# Settings ? Log Level ? Debug + +# O via environment +TRADINGBOT__LogLevel=Debug +``` + +### Support + +1. ?? Leggi [docs/troubleshooting/COMMON_ISSUES.md](TradingBot/docs/troubleshooting/COMMON_ISSUES.md) +2. ?? Cerca issue simili su Gitea +3. ?? Apri issue con: + - Descrizione problema + - Logs rilevanti + - Environment (OS, Docker version, etc.) + - Steps to reproduce + +--- + +## ?? Documentazione Completa + +Tutta la documentazione è organizzata in `TradingBot/docs/`: + +- ?? **[docs/README.md](TradingBot/docs/README.md)** - Indice completo +- ?? **[docs/installation/](TradingBot/docs/installation/)** - Guide installazione +- ??? **[docs/architecture/](TradingBot/docs/architecture/)** - Architettura sistema +- ?? **[docs/deployment/](TradingBot/docs/deployment/)** - Guide deployment +- ?? **[docs/configuration/](TradingBot/docs/configuration/)** - Configurazione +- ?? **[docs/trading/](TradingBot/docs/trading/)** - Strategie e indicatori +- ?? **[docs/development/](TradingBot/docs/development/)** - Workflow sviluppo +- ?? **[docs/troubleshooting/](TradingBot/docs/troubleshooting/)** - Risoluzione problemi +- ?? **[docs/verification/](TradingBot/docs/verification/)** - Testing e QA +- ?? **[docs/api/](TradingBot/docs/api/)** - API Reference + +--- + +## ??? Roadmap + +### v1.0 (Current) ? +- [x] Core trading engine +- [x] 15 asset supportati +- [x] Strategie base +- [x] UI completa +- [x] Docker deployment +- [x] Unraid support + +### v1.1 (Planned) +- [ ] Dati reali (CoinGecko API integration completa) +- [ ] Multi-strategy per asset +- [ ] Alert system con notifiche +- [ ] Export/Import configurazioni +- [ ] Paper trading mode + +### v1.2 (Future) +- [ ] Backtesting su dati storici +- [ ] Machine Learning per ottimizzazione +- [ ] Mobile app (MAUI) +- [ ] Multi-user support +- [ ] API REST pubblica + +### v2.0 (Vision) +- [ ] Exchange integration (Binance, Coinbase) +- [ ] Real money trading +- [ ] Advanced risk management +- [ ] Portfolio rebalancing +- [ ] Tax reporting + +--- + +## ?? Contributing + +Progetto privato. Contributi benvenuti previo contatto con il maintainer. + +Vedi: [docs/development/CONTRIBUTING.md](TradingBot/docs/development/CONTRIBUTING.md) + +--- + +## ?? Licenza + +Progetto privato - Tutti i diritti riservati +© 2024 Alberto - Encelado Project + +**DISCLAIMER**: Questa è un'applicazione di simulazione a scopo educativo. Non utilizzare con denaro reale senza test approfonditi e comprensione completa dei rischi del trading. + +--- + +## ?? Contatti + +- **Maintainer**: Alberto (Alby96) +- **Repository**: https://192.168.30.23/Alby96/Encelado +- **Gitea**: https://192.168.30.23 + +--- + +## ?? Ringraziamenti + +Grazie a: +- Microsoft per .NET e Blazor +- CoinGecko per API dati mercato +- Community open source per librerie e tools + +--- + +**Ultima modifica**: 2024-12-12 +**Versione**: 1.0.0 +**Status**: ? Production Ready \ No newline at end of file diff --git a/TradingBot/.env.example b/TradingBot/.env.example new file mode 100644 index 0000000..1a1b5d5 --- /dev/null +++ b/TradingBot/.env.example @@ -0,0 +1,107 @@ +# TradingBot - Environment Variables Example +# Copia questo file come .env e personalizza i valori + +# ============================================== +# DOCKER CONFIGURATION +# ============================================== + +# Timezone (importante per trading!) +TZ=Europe/Rome + +# ASP.NET Core Environment +ASPNETCORE_ENVIRONMENT=Production + +# Logging Level +# Options: Trace, Debug, Information, Warning, Error, Critical +Logging__LogLevel__Default=Information + +# ============================================== +# APPLICATION SETTINGS +# ============================================== + +# Modalità Simulazione (true = dati simulati, false = dati reali) +TRADINGBOT__SimulationMode=true + +# Auto-start bot all'avvio +TRADINGBOT__AutoStartBot=true + +# Intervallo aggiornamento dati (secondi) +# Min: 2, Max: 10, Consigliato: 3 +TRADINGBOT__UpdateIntervalSeconds=3 + +# Notifiche Desktop (true/false) +TRADINGBOT__DesktopNotifications=false + +# Conferma operazioni manuali (true/false) +TRADINGBOT__ConfirmManualTrades=false + +# Log Level applicazione +# Options: Error, Warning, Info, Debug +TRADINGBOT__LogLevel=Info + +# ============================================== +# DOCKER COMPOSE OVERRIDES +# ============================================== + +# Porta esterna (modifica se 8080 è già in uso) +EXTERNAL_PORT=8080 + +# Resource Limits +MEMORY_LIMIT=1G +MEMORY_RESERVATION=256M +CPU_LIMIT=2.0 +CPU_RESERVATION=0.5 + +# ============================================== +# REGISTRY (opzionale - per push immagini) +# ============================================== + +# Docker Registry URL (lascia vuoto se non usi registry privato) +DOCKER_REGISTRY= + +# Registry username +REGISTRY_USER= + +# Registry password (usa Docker secrets in produzione!) +REGISTRY_PASSWORD= + +# ============================================== +# BACKUP (opzionale) +# ============================================== + +# Directory backup su host +BACKUP_DIR=/mnt/user/backups/tradingbot + +# Retention giorni backup +BACKUP_RETENTION_DAYS=7 + +# ============================================== +# MONITORING (opzionale) +# ============================================== + +# Prometheus metrics endpoint (true/false) +ENABLE_METRICS=false + +# Health check interval (seconds) +HEALTHCHECK_INTERVAL=30 + +# ============================================== +# ADVANCED +# ============================================== + +# HTTPS Redirection (true/false) +# Disabilita se usi reverse proxy +ASPNETCORE_HTTPS_PORT= + +# Kestrel limits +KESTREL_LIMITS_MAXREQUESTBODYSIZE=10485760 + +# ============================================== +# NOTES +# ============================================== +# +# 1. Non committare questo file con credenziali reali! +# 2. Aggiungi .env al .gitignore +# 3. Usa Docker secrets per password in produzione +# 4. Restart container dopo modifiche: docker-compose restart +# diff --git a/TradingBot/.gitignore b/TradingBot/.gitignore new file mode 100644 index 0000000..5d4afed --- /dev/null +++ b/TradingBot/.gitignore @@ -0,0 +1,153 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio cache/options directory +.vs/ + +# Visual Studio Code +.vscode/ +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json +*.code-workspace + +# ReSharper +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JetBrains Rider +.idea/ +*.sln.iml + +# NuGet Packages +*.nupkg +*.snupkg +**/packages/* +!**/packages/build/ +*.nuget.props +*.nuget.targets +project.lock.json +project.fragment.lock.json +artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.tlog +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* +*.trx +*.coverage +*.coveragexml + +# Node (if used) +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# OS +.DS_Store +Thumbs.db +Desktop.ini + +# Application specific +appsettings.Development.json +appsettings.local.json +*.db +*.sqlite +*.sqlite3 + +# Docker +.env +.env.local +docker-compose.override.yml + +# Logs +logs/ +*.log + +# Temporary files +*.tmp +*.temp +*.bak +*.swp +*~ + +# Data directories +data/ +Data/ + +# Local settings +%LocalAppData%/ + +# Secrets (NEVER COMMIT!) +*.key +*.pem +secrets.json diff --git a/TradingBot/BROWSER_CACHE_GUIDE.md b/TradingBot/BROWSER_CACHE_GUIDE.md deleted file mode 100644 index 57be6c7..0000000 --- a/TradingBot/BROWSER_CACHE_GUIDE.md +++ /dev/null @@ -1,230 +0,0 @@ -# ?? ISTRUZIONI PER FORZARE IL REFRESH DEL BROWSER - -## ?? Il Problema -L'applicazione è stata completamente aggiornata con una nuova sidebar verticale moderna, ma il browser potrebbe mostrare ancora la versione vecchia a causa della **cache**. - -## ? Build Status -- ? **Compilazione riuscita** -- ? **0 errori** -- ? **0 warning** -- ? **Tutti i CSS aggiornati** -- ? **Bootstrap Icons caricato** - ---- - -## ?? METODO 1: Hard Refresh (CONSIGLIATO) - -### Windows - Chrome/Edge -``` -1. Apri DevTools: F12 -2. Click DESTRO sul pulsante Refresh (?) -3. Seleziona "Svuota cache e ricaricamento forzato" -``` - -**OPPURE** -``` -Premi: Ctrl + Shift + R -``` - -### Windows - Firefox -``` -Premi: Ctrl + Shift + R -``` - -### Windows - Tutti i Browser -``` -Premi: Ctrl + F5 -``` - ---- - -## ?? METODO 2: Cancella Cache Manualmente - -### Chrome/Edge -``` -1. Premi Ctrl + Shift + Delete -2. Seleziona "Immagini e file memorizzati nella cache" -3. Intervallo: "Tutto" -4. Click "Cancella dati" -5. Ricarica la pagina (F5) -``` - -### Firefox -``` -1. Premi Ctrl + Shift + Delete -2. Seleziona "Cache" -3. Click "Cancella adesso" -4. Ricarica la pagina (F5) -``` - ---- - -## ?? METODO 3: Modalità Incognito (TEST VELOCE) - -### Chrome/Edge -``` -Premi: Ctrl + Shift + N -``` - -### Firefox -``` -Premi: Ctrl + Shift + P -``` - -Poi naviga su `https://localhost:[PORT]` nella finestra incognito. - ---- - -## ??? METODO 4: Disabilita Cache (Durante Sviluppo) - -### Per Tutti i Browser -``` -1. Apri DevTools: F12 -2. Vai su tab "Network" -3. Spunta "Disable cache" -4. MANTIENI DevTools APERTO -5. Ricarica (F5) -``` - -Questo è perfetto durante lo sviluppo! - ---- - -## ?? METODO 5: Restart Server + Clean Build - -Se proprio non funziona, fai un clean restart: - -```powershell -# Stop server -Ctrl + C - -# Clean -dotnet clean - -# Remove bin/obj -Remove-Item -Recurse -Force bin,obj - -# Restore -dotnet restore - -# Rebuild -dotnet build - -# Run -dotnet run -``` - -Poi fai Hard Refresh nel browser. - ---- - -## ?? COSA DOVRESTI VEDERE - -Dopo il refresh corretto, dovresti vedere: - -``` -?????????????????????????????????????? -? Sidebar Verticale Sinistra ? -? ? -? [??] TradingBot [?] ? ? Brand + Toggle -? ? ATTIVO ? -? ?????????????????????????????????? ? -? ?? Dashboard ? ? Menu Items -? ?? Strategie ? Verticali -? ?? Asset ? -? ?? Trading ? -? ?? Analisi Mercato ? -? ?? Statistiche ? -? ?? Impostazioni ? -? ?????????????????????????????????? ? -? Portfolio $15,000 ? ? Summary -? Profitto $0.00 ? -?????????????????????????????????????? -``` - -**NON** dovresti vedere più i link testuali sotto il logo! - ---- - -## ?? TROUBLESHOOTING - -### Problema: "Vedo ancora i link sotto il logo" -**Soluzione**: Cache non pulita correttamente -``` -1. Chiudi TUTTE le tab del browser -2. Chiudi il browser completamente -3. Riapri e vai direttamente a localhost -4. Premi Ctrl + Shift + R -``` - -### Problema: "Le icone non si vedono" -**Soluzione**: Bootstrap Icons non caricato -``` -1. Apri DevTools (F12) -2. Tab Console -3. Cerca errori di caricamento CSS -4. Se vedi errori, il server potrebbe non essere avviato correttamente -``` - -### Problema: "Tutto bianco/rotto" -**Soluzione**: CSS non caricato -``` -1. DevTools ? Network tab -2. Ricarica (F5) -3. Verifica che app.css e MainLayout.razor.css siano caricati (200 OK) -4. Se vedi 404, restart del server -``` - ---- - -## ? CHECKLIST FINALE - -Prima di contattare per supporto, verifica: - -- [ ] Ho fatto Hard Refresh (Ctrl + Shift + R)? -- [ ] Ho provato in modalità Incognito? -- [ ] Ho pulito la cache manualmente? -- [ ] Il server è in esecuzione correttamente? -- [ ] Ho fatto `dotnet clean` e `dotnet build`? -- [ ] Ho verificato la Console (F12) per errori? -- [ ] Ho provato con un browser diverso? - ---- - -## ?? FUNZIONA? - -Se dopo questi passaggi vedi la sidebar moderna verticale: -- ? Tutto è corretto! -- ? Puoi iniziare a usare l'applicazione -- ? Il problema era solo la cache - -Se NON funziona ancora: -- ?? Apri DevTools (F12) -- ?? Fai uno screenshot della Console -- ?? Condividi gli errori che vedi - ---- - -## ?? NOTE TECNICHE - -### File CSS Modificati -1. `wwwroot/app.css` - Stili globali con priorità -2. `Components/Layout/MainLayout.razor.css` - Stili scoped con ::deep - -### Modifiche Applicate -- ? Bootstrap Icons CDN aggiunto -- ? Namespace globali in _Imports.razor -- ? CSS con !important per override -- ? ::deep selectors per scoped CSS -- ? Layout completamente riscritto - -### Port di Default -L'applicazione di solito gira su: -- `https://localhost:5001` (HTTPS) -- `http://localhost:5000` (HTTP) - -Verifica nel terminal quale porta sta usando! - ---- - -**Buon trading! ??** diff --git a/TradingBot/DOCKER_QUICKSTART.md b/TradingBot/DOCKER_QUICKSTART.md deleted file mode 100644 index ed29e6f..0000000 --- a/TradingBot/DOCKER_QUICKSTART.md +++ /dev/null @@ -1,141 +0,0 @@ -# ?? QUICK START - Docker Deployment - -## Per Sviluppo Locale - -### Windows -```powershell -# Build -.\build-docker.bat - -# Run -docker-compose up -d - -# Logs -docker-compose logs -f - -# Stop -docker-compose down -``` - -### Linux/Mac -```sh -# Build -chmod +x build-docker.sh -./build-docker.sh - -# Run -docker-compose up -d - -# Logs -docker-compose logs -f - -# Stop -docker-compose down -``` - -### Accesso -``` -http://localhost:8080 -``` - ---- - -## Per Unraid (via Portainer) - -### 1. Setup Git Repository -```sh -git add . -git commit -m "Docker ready" -git push origin main -``` - -### 2. Deploy su Portainer -1. Stacks ? Add stack -2. Name: `tradingbot` -3. Git Repository: `https://192.168.30.23/Alby96/Encelado` -4. Compose path: `TradingBot/docker-compose.yml` -5. Deploy - -### 3. Accesso -``` -http://[UNRAID-IP]:8080 -``` - ---- - -## Per Unraid (via SSH) - -```sh -# SSH -ssh root@[UNRAID-IP] - -# Clone -cd /mnt/user/appdata -git clone https://192.168.30.23/Alby96/Encelado.git tradingbot -cd tradingbot/TradingBot - -# Deploy -docker-compose up -d - -# Check -docker ps | grep tradingbot -``` - ---- - -## Comandi Utili - -```sh -# Status -docker ps - -# Logs -docker logs tradingbot -f - -# Restart -docker restart tradingbot - -# Update -git pull && docker-compose up -d --build - -# Remove -docker-compose down -v -``` - ---- - -## Environment Variables (opzionali) - -Crea file `.env`: -```env -TZ=Europe/Rome -ASPNETCORE_ENVIRONMENT=Production -TRADINGBOT_AUTOSTART=true -``` - ---- - -## Troubleshooting - -### Container non parte -```sh -docker logs tradingbot -``` - -### Porta già usata -```sh -# Cambia porta in docker-compose.yml -ports: - - "8081:8080" -``` - -### Rebuild da zero -```sh -docker-compose down -v -docker-compose build --no-cache -docker-compose up -d -``` - ---- - -Documentazione completa: [UNRAID_DEPLOYMENT.md](UNRAID_DEPLOYMENT.md) diff --git a/TradingBot/FINAL_VERIFICATION.md b/TradingBot/FINAL_VERIFICATION.md deleted file mode 100644 index b11b827..0000000 --- a/TradingBot/FINAL_VERIFICATION.md +++ /dev/null @@ -1,386 +0,0 @@ -# ? VERIFICA FINALE - TradingBot Application - -## ?? CHECKLIST COMPLETA - -### ?? Layout & Design -- [x] Sidebar verticale moderna implementata -- [x] Brand section con logo gradient -- [x] Status badge animato (? ATTIVO) -- [x] Menu items con icone Bootstrap -- [x] Active state highlighting -- [x] Collapsible sidebar (280px ? 80px) -- [x] Portfolio summary nel footer -- [x] Top bar con bot control -- [x] Responsive design (mobile-ready) - -### ?? File Modificati -- [x] `Components/Layout/MainLayout.razor` - Layout completo riscritto -- [x] `Components/Layout/MainLayout.razor.css` - CSS moderno con ::deep -- [x] `wwwroot/app.css` - Stili globali prioritari -- [x] `Components/App.razor` - Bootstrap Icons CDN -- [x] `Components/_Imports.razor` - Namespace globali - -### ?? Pagine Verificate -- [x] Dashboard - Razor syntax corretta -- [x] Strategies - Asset count dinamico (15/15) -- [x] Assets - Nuova pagina completa -- [x] Trading - Funzionante -- [x] Market - Query parameters supportati -- [x] Statistics - Dettagli completi -- [x] Settings - Persistenza attiva - -### ?? Services -- [x] TradingBotService - 15 asset abilitati -- [x] SettingsService - Persistenza JSON -- [x] SimulatedMarketDataService - Tutti asset disponibili -- [x] SimpleMovingAverageStrategy - RSI + MACD - -### ?? Features Implementate - -#### Sidebar -``` -? Logo gradient 3.5rem -? Brand text con accent -? Status indicator animato -? 7 menu items verticali -? Icone 1.375rem -? Hover effects -? Active state con border -? Portfolio summary live -? Toggle collapse button -``` - -#### Navigation -``` -? Dashboard (/) -? Strategie (/strategies) -? Asset (/assets) - NUOVA -? Trading (/trading) -? Analisi Mercato (/market) -? Statistiche (/statistics) -? Impostazioni (/settings) -``` - -#### Assets Page -``` -? Grid view / List view -? 15 asset visibili -? Strategy assignment dropdown -? Toggle on/off per asset -? Filtri: Tutti/Attivi/Inattivi -? Real-time metrics -? Navigate to chart -``` - -### ?? Design System - -#### Colors -```css -Primary: #6366f1 (Indigo) -Secondary: #8b5cf6 (Purple) -Success: #10b981 (Green) -Danger: #ef4444 (Red) -Warning: #f59e0b (Amber) -Background: #0a0e27 (Dark Blue) -Sidebar: #1a1f3a ? #0f1629 (Gradient) -``` - -#### Typography -``` -Headers: System Font Stack -Monospace: Courier New (numeri) -Weights: 600 (semi-bold), 700 (bold) -Sizes: 0.75rem - 1.75rem -``` - -#### Spacing -``` -Unit: 0.25rem (4px) -Padding: 1rem - 2rem -Gaps: 0.5rem - 1.5rem -Radius: 0.5rem - 1rem -``` - -### ?? Real-time Updates -- [x] Prezzi aggiornati ogni 3 secondi -- [x] Portfolio stats live -- [x] Trade notifications -- [x] Indicators recalculated -- [x] SignalR connection active - -### ?? Persistenza -- [x] Settings salvati in JSON -- [x] Sidebar state ricordato -- [x] Auto-start bot configurabile -- [x] File path: %LocalAppData%/TradingBot/appsettings.json - -### ?? Simulazione -- [x] 15 asset simultanei -- [x] Dati di mercato realistici -- [x] Variazioni % simulate -- [x] Trading automatico attivo -- [x] Risk management implementato - -### ??? Architettura - -#### Frontend -``` -Blazor Server (.NET 10) -??? SignalR per real-time -??? Scoped CSS per component isolation -??? Global CSS per layout -??? Bootstrap Icons via CDN -``` - -#### Backend -``` -Services -??? TradingBotService (singleton) -??? SimulatedMarketDataService (singleton) -??? SettingsService (singleton) -??? SimpleMovingAverageStrategy (singleton) -``` - -#### Models -``` -Core -??? AssetConfiguration -??? AssetStatistics -??? MarketPrice -??? Trade -??? TechnicalIndicators -??? PortfolioStatistics -??? AppSettings -``` - -### ?? Build Status -``` -Compilazione: ? RIUSCITA -Errori: ? 0 -Warning: ? 0 -Target: ? .NET 10 -``` - -### ?? Documentazione -- [x] README.md aggiornato -- [x] BROWSER_CACHE_GUIDE.md creato -- [x] FINAL_VERIFICATION.md (questo file) -- [x] Inline code comments - -### ?? Sicurezza -- [x] Input validation -- [x] Readonly settings per sim mode -- [x] Safe decimal calculations -- [x] Error boundaries - -### ? Accessibilità -- [x] Semantic HTML -- [x] ARIA labels via title attributes -- [x] Keyboard navigation support -- [x] Focus states visible - -### ?? Responsive -``` -Desktop: > 1024px ? Full layout -Tablet: 768-1024px ? Sidebar 260px -Mobile: < 768px ? Offscreen sidebar -Small: < 480px ? Compact padding -``` - -### ? Performance -- [x] CSS transitions GPU-accelerated -- [x] Component rendering optimized -- [x] Minimal re-renders (StateHasChanged strategico) -- [x] Lazy evaluation dove possibile - -### ?? Testing Checklist - -#### Manual Testing -- [ ] Avvia applicazione -- [ ] Verifica sidebar appare correttamente -- [ ] Click su ogni menu item -- [ ] Verifica navigazione funziona -- [ ] Toggle sidebar collapse/expand -- [ ] Verifica portfolio stats si aggiornano -- [ ] Click "Stop" bot -- [ ] Click "Avvia" bot -- [ ] Vai su Assets page -- [ ] Cambia view (Grid ? List) -- [ ] Assegna strategia ad un asset -- [ ] Toggle asset on/off -- [ ] Vai su Settings -- [ ] Cambia impostazioni -- [ ] Verifica salvataggio automatico -- [ ] Resize finestra (responsive test) -- [ ] Test su mobile (DevTools) - -#### Browser Compatibility -- [ ] Chrome (latest) -- [ ] Edge (latest) -- [ ] Firefox (latest) -- [ ] Safari (se disponibile) - -#### Cache Testing -- [ ] Hard refresh (Ctrl+Shift+R) -- [ ] Incognito mode -- [ ] After server restart -- [ ] After clean build - -### ?? Metrics - -#### Code Stats -``` -Razor Files: ~15 pages -CSS Files: ~15 scoped + 1 global -C# Services: ~8 services -Models: ~12 models -Total Lines: ~5000+ LOC -``` - -#### Features Count -``` -Pages: 7 main pages -Components: ~5 shared components -Services: 8 business services -Asset Support: 15 cryptocurrencies -Strategies: 6 templates -Indicators: 3 technical (RSI, MACD, EMA) -``` - -### ?? Success Criteria - -#### Visual -? Sidebar verticale moderna visibile -? Icone Bootstrap caricate -? Gradients applicati -? Animazioni fluide -? Colors coerenti -? Typography corretta - -#### Functional -? Navigazione funzionante -? Bot start/stop -? Real-time updates -? Settings persistono -? Assets management -? Strategy assignment - -#### Technical -? Build successful -? 0 compilation errors -? CSS correttamente applicato -? Services registered -? SignalR connected - -### ?? Deployment Ready - -#### Pre-deployment -- [x] Build in Release mode -- [x] Verify all assets -- [x] Test all routes -- [x] Check console for errors -- [x] Validate responsive design - -#### Production Checklist -- [ ] Remove debug code -- [ ] Optimize images -- [ ] Minify CSS/JS -- [ ] Enable HTTPS -- [ ] Configure CORS -- [ ] Set production URLs -- [ ] Configure logging -- [ ] Setup monitoring - -### ?? Support - -#### Se Qualcosa Non Funziona - -1. **Verifica Build** - ```sh - dotnet build - ``` - -2. **Pulisci Cache** - ```sh - dotnet clean - Remove-Item bin,obj -Recurse -Force - dotnet restore - dotnet build - ``` - -3. **Hard Refresh Browser** - ``` - Ctrl + Shift + R - ``` - -4. **Check Console** - ``` - F12 ? Console tab - Cerca errori rossi - ``` - -5. **Verifica Network** - ``` - F12 ? Network tab - Reload ? Verifica CSS caricati (200 OK) - ``` - -### ?? Screenshots Attesi - -#### Desktop - Expanded -``` -[Logo 3.5rem] TradingBot [?] - ? ATTIVO -???????????????????????????????? -?? Dashboard -?? Strategie -?? Asset -?? Trading -?? Analisi Mercato -?? Statistiche -?? Impostazioni -???????????????????????????????? -Portfolio $15,000 -Profitto $0.00 -``` - -#### Desktop - Collapsed -``` -[Logo] - [?] - - ?? - ?? - ?? - ?? - ?? - ?? - ?? -``` - -#### Mobile -``` -[?] TradingBot [Stop] - -Main Content Here... -``` - -### ? CONCLUSIONE - -L'applicazione è: -- ? **Completamente funzionale** -- ? **Build successful** -- ? **Design moderno implementato** -- ? **Tutti i 15 asset attivi** -- ? **Persistenza settings funzionante** -- ? **Responsive su tutti i device** -- ? **Real-time updates attivi** -- ? **Documentazione completa** - -**?? PRONTO PER L'USO!** - ---- - -**Data verifica**: 2025-12-12 -**Versione**: 1.0.0 -**Status**: ? PRODUCTION READY diff --git a/TradingBot/GIT_WORKFLOW.md b/TradingBot/GIT_WORKFLOW.md deleted file mode 100644 index f3ce446..0000000 --- a/TradingBot/GIT_WORKFLOW.md +++ /dev/null @@ -1,410 +0,0 @@ -# ?? WORKFLOW: Sviluppo ? Gitea ? Unraid - -## Flusso di Lavoro Completo - -``` -PC Sviluppo ? Git Commit ? Gitea Push ? Unraid Pull ? Docker Deploy -``` - ---- - -## ?? STEP BY STEP - -### 1. Sviluppo Locale (PC) - -```sh -# Lavora sul codice -code . - -# Test locale -dotnet run -# Oppure -docker-compose up - -# Verifica funzionamento -http://localhost:8080 -``` - -### 2. Commit e Push su Gitea - -```sh -# Status modifiche -git status - -# Stage files -git add . - -# Commit -git commit -m "Feature: Descrizione modifiche" - -# Push su Gitea -git push origin main -``` - -### 3. Deploy su Unraid - -#### Opzione A: Automatico (Portainer Webhook) - -**Setup iniziale** (una volta): -``` -1. Portainer ? Stacks ? tradingbot ? Webhooks -2. Create webhook -3. Copy URL - -4. Gitea ? Settings ? Webhooks ? Add Webhook -5. Paste URL -6. Trigger: Push events -7. Save -``` - -**Uso**: Ogni push su Gitea ? Auto-deploy su Unraid! - -#### Opzione B: Manuale (SSH) - -```sh -# SSH su Unraid -ssh root@[UNRAID-IP] - -# Vai nella directory -cd /mnt/user/appdata/tradingbot/TradingBot - -# Pull modifiche -git pull origin main - -# Rebuild e restart -docker-compose down -docker-compose build -docker-compose up -d -``` - -#### Opzione C: Script Automatico - -Crea `/root/scripts/deploy-tradingbot.sh`: - -```sh -#!/bin/bash -cd /mnt/user/appdata/tradingbot/TradingBot - -echo "?? Pulling latest changes..." -git pull origin main - -if [ $? -eq 0 ]; then - echo "?? Rebuilding container..." - docker-compose down - docker-compose build - docker-compose up -d - echo "? Deployment completed!" -else - echo "? Git pull failed!" - exit 1 -fi -``` - -Usa: -```sh -chmod +x /root/scripts/deploy-tradingbot.sh -/root/scripts/deploy-tradingbot.sh -``` - ---- - -## ?? WORKFLOW GIORNALIERO - -### Mattina - Modifiche - -```sh -# PC -git pull origin main # Sync -code . # Sviluppa -dotnet run # Test -``` - -### Pomeriggio - Deploy - -```sh -# PC -git add . -git commit -m "Daily improvements" -git push origin main - -# Unraid (se non auto-deploy) -ssh root@unraid -/root/scripts/deploy-tradingbot.sh -``` - -### Sera - Monitoring - -```sh -# Check logs -docker logs tradingbot -f - -# Check stats -docker stats tradingbot - -# Backup (opzionale) -/root/scripts/backup-tradingbot.sh -``` - ---- - -## ?? BRANCHING STRATEGY - -### Main Branch (Production) -```sh -# Solo codice stabile e testato -git checkout main -git pull origin main -``` - -### Development Branch -```sh -# Crea branch per nuove feature -git checkout -b feature/nome-feature - -# Sviluppa e testa -# ... - -# Merge in main quando pronto -git checkout main -git merge feature/nome-feature -git push origin main -``` - -### Hotfix -```sh -# Per fix urgenti -git checkout -b hotfix/descrizione -# Fix -git checkout main -git merge hotfix/descrizione -git push origin main -``` - ---- - -## ?? RELEASE VERSIONING - -### Tagging -```sh -# Tag versione -git tag -a v1.0.0 -m "Release v1.0.0" -git push origin v1.0.0 - -# Build con tag -docker build -t tradingbot:v1.0.0 . -docker tag tradingbot:v1.0.0 tradingbot:latest -``` - -### Rollback -```sh -# Lista tags -git tag -l - -# Checkout versione precedente -git checkout v0.9.0 - -# Deploy versione specifica -docker-compose down -docker-compose build -docker-compose up -d -``` - ---- - -## ?? BEST PRACTICES - -### 1. Non Committare Secrets -```sh -# .gitignore già configurato per: -appsettings.Development.json -*.env -*.key -``` - -### 2. Test Prima di Push -```sh -# Sempre test locale prima -dotnet build -dotnet test # Se hai tests -docker-compose up # Test container -``` - -### 3. Commit Messages Descrittivi -```sh -# ? Buoni -git commit -m "Fix: Sidebar toggle button not working" -git commit -m "Feature: Add Docker support" -git commit -m "Docs: Update deployment guide" - -# ? Cattivi -git commit -m "fix" -git commit -m "update" -git commit -m "changes" -``` - -### 4. Pull Prima di Push -```sh -# Sempre sync prima -git pull origin main -# Risolvi conflitti se presenti -git push origin main -``` - ---- - -## ?? TROUBLESHOOTING - -### Conflitto Git -```sh -# Pull con conflitti -git pull origin main - -# Risolvi manualmente i file in conflitto -# Cerca <<<<<<< HEAD - -# Dopo risolto -git add . -git commit -m "Resolve merge conflicts" -git push origin main -``` - -### Push Rifiutato -```sh -# Se remote è avanti -git pull --rebase origin main -git push origin main -``` - -### Reset Completo (ATTENZIONE!) -```sh -# Solo in caso di emergenza -git fetch origin -git reset --hard origin/main -``` - ---- - -## ?? MONITORING WORKFLOW - -### Check Health -```sh -# Local -curl http://localhost:8080/health - -# Unraid -curl http://[UNRAID-IP]:8080/health -``` - -### View Logs -```sh -# Real-time -docker logs -f tradingbot - -# Last 100 lines -docker logs --tail 100 tradingbot - -# Since timestamp -docker logs --since 2024-12-12T10:00:00 tradingbot -``` - -### Resource Usage -```sh -# Stats -docker stats tradingbot - -# Processes -docker top tradingbot -``` - ---- - -## ?? CHECKLIST COMPLETO - -### Pre-Development -- [ ] Git repository synced (`git pull`) -- [ ] Branch corretto (`git branch`) -- [ ] Dependencies updated (`dotnet restore`) - -### Development -- [ ] Codice scritto e testato -- [ ] Build successful (`dotnet build`) -- [ ] Test locale OK (`dotnet run`) -- [ ] Docker test OK (`docker-compose up`) - -### Pre-Commit -- [ ] Codice formattato -- [ ] No secrets committati -- [ ] .gitignore aggiornato -- [ ] README aggiornato se necessario - -### Commit & Push -- [ ] `git status` verificato -- [ ] Commit message descrittivo -- [ ] Push successful -- [ ] Verifica su Gitea web UI - -### Deployment -- [ ] Pull su Unraid OK -- [ ] Docker build successful -- [ ] Container running -- [ ] Health check passing -- [ ] WebUI accessibile - -### Post-Deployment -- [ ] Logs verificati -- [ ] Nessun errore critico -- [ ] Funzionalità testate -- [ ] Performance OK - ---- - -## ?? MAINTENANCE - -### Giornaliero -- Check logs per errori -- Verifica health endpoint -- Monitor resource usage - -### Settimanale -- Git pull updates -- Review commits -- Check disk space - -### Mensile -- Full backup -- Review performance metrics -- Update dependencies -- Security audit - ---- - -## ?? COMANDI RAPIDI - -```sh -# Development -git status -git add . -git commit -m "message" -git push origin main - -# Local Test -dotnet run -docker-compose up -d - -# Unraid Deploy -ssh root@unraid "/root/scripts/deploy-tradingbot.sh" - -# Check Status -docker ps | grep tradingbot -docker logs tradingbot --tail 50 - -# Restart -docker restart tradingbot - -# Update -git pull && docker-compose up -d --build -``` - ---- - -**?? Workflow pronto! Sviluppo ? Gitea ? Unraid automatizzato!** diff --git a/TradingBot/README.md b/TradingBot/README.md deleted file mode 100644 index 1e527a0..0000000 --- a/TradingBot/README.md +++ /dev/null @@ -1,345 +0,0 @@ -# ?? TradingBot - Automated Crypto Trading Simulator - -Un'applicazione Blazor Server avanzata per simulare e testare strategie di trading automatizzato su criptovalute. - -## ?? Caratteristiche Principali - -### ?? Dashboard -- **Panoramica Portfolio**: Visualizzazione completa del valore totale e performance -- **Metriche Chiave**: Profitto totale, operazioni eseguite, asset attivi -- **Asset Attivi**: Grid dei top 6 asset con performance in tempo reale -- **Attività Recente**: Storico delle ultime 8 operazioni - -### ?? Strategie -- **Gestione Strategie**: Crea, modifica ed elimina strategie di trading -- **Template Predefiniti**: - - Scalping Veloce - - Trend Following - - Mean Reversion - - Conservative -- **Strategia Attiva**: RSI + MACD Cross (personalizzabile) -- **Parametri Configurabili**: Stop Loss, Take Profit, condizioni BUY/SELL - -### ?? Asset (NUOVO!) -- **Vista Completa Asset**: Tutti i 15 asset disponibili -- **Due Modalità di Visualizzazione**: - - **Grid View**: Card dettagliate con metriche - - **List View**: Tabella compatta per overview rapido -- **Assegnazione Strategie**: Dropdown per ogni asset -- **Toggle On/Off**: Attiva/disattiva trading per asset -- **Filtri**: Tutti / Solo Attivi / Solo Inattivi -- **Metriche Real-time**: Prezzo, variazione 24h, holdings, profitto -- **Azioni Rapide**: Configura e Visualizza Grafico - -### ?? Trading -- **15 Asset Simulati**: BTC, ETH, BNB, SOL, ADA, XRP, DOT, AVAX, MATIC, LINK, UNI, ATOM, LTC, ALGO, VET -- **Gestione Asset**: Toggle on/off per ogni asset -- **Monitoraggio Real-time**: Prezzi, holdings, profitti aggiornati ogni 3 secondi -- **Tabella Operazioni**: Storico completo con filtri e ricerca - -### ?? Analisi Mercato -- **Grafici Interattivi**: Visualizzazione prezzi con SVG rendering -- **Indicatori Tecnici**: - - RSI (14) con stati Overbought/Oversold/Neutral - - MACD con signal e histogram - - EMA (12, 26) -- **Selector Asset**: Cambia asset per analisi dettagliate - -### ?? Statistiche -- **Overview Portfolio**: Metriche aggregate di tutti gli asset -- **Breakdown per Asset**: Tabella dettagliata con ROI, win rate, trades -- **Best/Worst Performers**: Identificazione automatica -- **Analisi Dettagliata**: Drilldown su singolo asset con: - - Performance trading completa - - Analisi profitti/perdite - - Operazioni recenti - -### ?? Impostazioni -- **Persistenza Automatica**: Tutte le modifiche salvate su file -- **Configurazioni**: - - Modalità simulazione - - Notifiche desktop - - Auto-start bot - - Conferma operazioni manuali - - Intervallo aggiornamento (2-10 secondi) - - Log level -- **Notifiche Visive**: Feedback immediato sui salvataggi - -## ??? Architettura - -### Frontend -- **Blazor Server (.NET 10)**: Rendering server-side con SignalR -- **Sidebar Collapsible**: Navigazione verticale espandibile/minimizzabile -- **Responsive Design**: Ottimizzato per desktop, tablet e mobile -- **Dark Theme**: Design moderno con palette Indigo/Purple - -### Backend Services -- **TradingBotService**: Core logic per trading automatizzato -- **SimulatedMarketDataService**: Generazione dati di mercato realistici -- **SettingsService**: Persistenza configurazioni su file JSON -- **SimpleMovingAverageStrategy**: Strategia di trading con RSI e MACD - -### Models -- **AssetConfiguration**: Configurazione per singolo asset -- **AssetStatistics**: Metriche e performance tracking -- **MarketPrice**: Dati di mercato in tempo reale -- **TechnicalIndicators**: RSI, MACD, EMA -- **AppSettings**: Configurazioni globali applicazione - -## ?? Quick Start - -### Prerequisiti -- .NET 10 SDK -- Visual Studio 2022+ o VS Code - -### Installazione Locale -```bash -# Clone repository -git clone https://192.168.30.23/Alby96/Encelado -cd TradingBot - -# Restore packages -dotnet restore - -# Run application -dotnet run -``` - -### ?? Deployment Docker - -#### Development -```sh -# Build -docker-compose build - -# Run -docker-compose up -d - -# Access -http://localhost:8080 -``` - -#### Production (Unraid) -Vedi documentazione completa: -- ?? [UNRAID_DEPLOYMENT.md](UNRAID_DEPLOYMENT.md) - Guida completa Unraid + Gitea -- ?? [DOCKER_QUICKSTART.md](DOCKER_QUICKSTART.md) - Quick start rapido - -### Uso -1. L'applicazione si avvia automaticamente in modalità simulazione -2. Tutti i 15 asset sono attivi di default -3. Il bot inizia il trading automaticamente (configurabile in Impostazioni) -4. Usa la sidebar per navigare tra le sezioni - -## ?? Struttura Progetto - -``` -TradingBot/ -??? Components/ -? ??? Layout/ -? ? ??? MainLayout.razor # Layout principale con sidebar -? ? ??? MainLayout.razor.css -? ??? Pages/ -? ? ??? Dashboard.razor # Homepage overview -? ? ??? Strategies.razor # Gestione strategie -? ? ??? Trading.razor # Trading view -? ? ??? Market.razor # Analisi mercato -? ? ??? Statistics.razor # Statistiche dettagliate -? ? ??? Settings.razor # Configurazioni -? ? ??? Assets.razor # Gestione asset (NUOVA PAGINA) -? ??? Shared/ -? ??? AdvancedChart.razor # Componente grafico SVG -? ??? AssetSettings.razor # Config singolo asset -??? Models/ -? ??? AssetConfiguration.cs -? ??? AssetStatistics.cs -? ??? AppSettings.cs -? ??? MarketPrice.cs -? ??? TechnicalIndicators.cs -? ??? ... -??? Services/ -? ??? TradingBotService.cs # Core trading logic -? ??? SimulatedMarketDataService.cs # Simulazione mercato -? ??? SettingsService.cs # Persistenza settings -? ??? ITradingStrategy.cs # Interface strategia -? ??? SimpleMovingAverageStrategy.cs -? ??? TechnicalAnalysis.cs # Calcolo indicatori -??? wwwroot/ -? ??? app.css # Stili globali -??? Program.cs # Entry point + DI - -``` - -## ?? **STRUTTURA FINALE APPLICAZIONE** - -### **7 Sezioni Principali** - -1. **?? Dashboard** (`/`) - - Overview portfolio completo - - 4 summary cards con metriche - - Top 6 asset attivi - - Ultimi 8 trades - -2. **?? Strategie** (`/strategies`) - - Gestione strategie di trading - - Strategia attiva: RSI + MACD Cross - - Template predefiniti - - Performance tracking - -3. **?? Asset** (`/assets`) **? NUOVA PAGINA!** - - Vista completa tutti i 15 asset - - Grid view / List view - - Assegnazione strategia per asset - - Toggle attivazione - - Filtri e ricerca - - Metriche real-time - -4. **?? Trading** (`/trading` - - Tutti 15 asset in grid - - Toggle on/off per ogni asset - - Metriche real-time - - Tabella operazioni complete - -5. **?? Analisi Mercato** (`/market`) - - Grafici interattivi SVG - - Indicatori tecnici (RSI, MACD, EMA) - - Selector asset - - Dati aggiornati ogni 3 secondi - -6. **?? Statistiche** (`/statistics`) - - Overview portfolio dettagliato - - Breakdown per asset - - Best/Worst performers - - Analisi P&L completa - - Drilldown su singolo asset - -7. **?? Impostazioni** (`/settings`) - - Tutte le configurazioni globali - - Salvataggio automatico - - Notifiche di conferma - - Reset a defaults - - -## ?? Design System - -### Colori -- **Primary**: `#6366f1` (Indigo) -- **Secondary**: `#8b5cf6` (Purple) -- **Success**: `#10b981` (Green) -- **Danger**: `#ef4444` (Red) -- **Warning**: `#f59e0b` (Amber) -- **Background**: `#0a0e27` (Dark Blue) - -### Typography -- **Headers**: System Font Stack -- **Monospace**: Courier New (per valori numerici) - -## ?? Configurazione - -Le impostazioni vengono salvate automaticamente in: -``` -%LocalAppData%/TradingBot/appsettings.json -``` - -### Esempio appsettings.json -```json -{ - "SimulationMode": true, - "DesktopNotifications": false, - "AutoStartBot": true, - "ConfirmManualTrades": false, - "UpdateIntervalSeconds": 3, - "LogLevel": "Info", - "SidebarCollapsed": false -} -``` - -## ?? Indicatori Tecnici Implementati - -### RSI (Relative Strength Index) -- **Periodo**: 14 -- **Overbought**: > 70 -- **Oversold**: < 30 -- **Neutro**: 30-70 - -### MACD (Moving Average Convergence Divergence) -- **Fast EMA**: 12 periodi -- **Slow EMA**: 26 periodi -- **Signal**: 9 periodi -- **Histogram**: MACD - Signal - -### EMA (Exponential Moving Average) -- **EMA 12**: Media breve termine -- **EMA 26**: Media lungo termine - -## ?? Strategia di Trading - -### Condizioni BUY -- RSI < 40 (asset ipervenduto) -- MACD Histogram > 0 (momentum positivo) -- Budget disponibile >= MinTradeAmount - -### Condizioni SELL -- RSI > 60 (asset ipercomprato) -- MACD Histogram < 0 (momentum negativo) -- Holdings > 0 -- **Oppure**: - - Profitto >= Take Profit (10%) - - Perdita >= Stop Loss (5%) - -### Risk Management -- **Max Daily Trades**: 50 per asset -- **Max Position Size**: $5000 per asset -- **Min Trade Amount**: $10 -- **Trade Size**: 30% del balance disponibile (max) -- **Min Interval**: 10 secondi tra trades - -## ?? Aggiornamenti Real-time - -- **Prezzi**: Ogni 3 secondi (configurabile) -- **Indicatori**: Calcolati ad ogni aggiornamento prezzo -- **Stats Portfolio**: Aggiornate ad ogni trade -- **UI**: SignalR per aggiornamenti istantanei - -## ?? Responsive Breakpoints - -- **Desktop**: > 1024px (full features) -- **Tablet**: 768px - 1024px (layout adattato) -- **Mobile**: < 768px (sidebar collapsible automatico) - -## ?? Debug & Logging - -I log vengono stampati nella console del browser e nel terminal di Visual Studio. - -Livelli disponibili: -- **Error**: Solo errori critici -- **Warning**: Warning e errori -- **Info**: Informazioni generali (default) -- **Debug**: Dettagli completi per debugging - -## ?? Note Importanti - -1. **Modalità Simulazione**: Sempre attiva, dati non reali -2. **Dati Persistenti**: Solo impostazioni, non trades storici -3. **Reset Dati**: Riavvio applicazione = reset portfolio -4. **Performance**: Ottimizzata per 15 asset simultanei - -## ?? Future Enhancements - -- [ ] Backtesting su dati storici -- [ ] Multi-strategy support -- [ ] Export/import configurazioni -- [ ] Alert system con notifiche -- [ ] Paper trading con dati reali -- [ ] Machine learning per ottimizzazione strategie - -## ????? Sviluppatore - -**Alberto** - Encelado Project - -## ?? Licenza - -Progetto privato - Tutti i diritti riservati - ---- - -**Note**: Questa è un'applicazione di simulazione a scopo educativo. Non utilizzare con denaro reale senza test approfonditi e comprensione completa dei rischi del trading. diff --git a/TradingBot/SIDEBAR_TOGGLE_DEBUG.md b/TradingBot/SIDEBAR_TOGGLE_DEBUG.md deleted file mode 100644 index c81b84c..0000000 --- a/TradingBot/SIDEBAR_TOGGLE_DEBUG.md +++ /dev/null @@ -1,271 +0,0 @@ -# ?? DEBUG - Sidebar Collapse Toggle - -## Problema Riportato -Il pulsante per ridurre la sidebar a sole icone non funziona. - -## Modifiche Applicate - -### 1. **MainLayout.razor** - Migliorato Toggle -```csharp -private void ToggleSidebar() -{ - sidebarCollapsed = !sidebarCollapsed; - SettingsService.UpdateSetting(nameof(AppSettings.SidebarCollapsed), sidebarCollapsed); - StateHasChanged(); // ? AGGIUNTO: Force immediate UI update - Console.WriteLine($"Sidebar toggled: collapsed={sidebarCollapsed}"); // ? AGGIUNTO: Debug log -} -``` - -**Cosa fa**: -- ? Forza il re-render immediato con `StateHasChanged()` -- ? Log nella console per debug -- ? Salva lo stato nelle impostazioni - -### 2. **MainLayout.razor.css** - CSS Collapsed State -```css -::deep .trading-bot-layout.collapsed .sidebar-brand { - padding: 1.5rem 0.75rem !important; - justify-content: center !important; -} - -::deep .trading-bot-layout.collapsed .brand-logo { - width: 3rem !important; - height: 3rem !important; -} -``` - -**Cosa fa**: -- ? Riduce padding quando collapsed -- ? Centra il logo -- ? Riduce dimensione logo - -## Come Testare - -### 1. **Riavvia l'Applicazione** -```sh -# Stop server -Ctrl + C - -# Clean build -dotnet clean -dotnet build - -# Run -dotnet run -``` - -### 2. **Forza Cache Refresh** -``` -Ctrl + Shift + R (o Ctrl + F5) -``` - -### 3. **Test del Button** -1. Apri l'applicazione -2. Click sul pulsante `[?]` in alto a destra nella sidebar -3. Verifica che: - - La sidebar si riduca a ~80px - - Rimangano solo le icone - - Il logo si ridimensioni - - L'area contenuto si espanda - -### 4. **Verifica Console** -Apri DevTools (F12) ? Console - -Dovresti vedere: -``` -Sidebar toggled: collapsed=true (quando minimizzi) -Sidebar toggled: collapsed=false (quando espandi) -``` - -## Comportamento Atteso - -### Expanded (280px) -``` -???????????????????????????? -? [??] TradingBot [?] ? ? Button qui -? ? ATTIVO ? -???????????????????????????? -? ?? Dashboard ? -? ?? Strategie ? -? ?? Asset ? -? ... ? -???????????????????????????? -``` - -### Collapsed (80px) -``` -??????? -? [??]? ? Logo centrato -? ? -??????? -? ?? ? ? Solo icone -? ?? ? centrate -? ?? ? -? ... ? -??????? -``` - -## Debug Checklist - -Se il button ancora non funziona: - -- [ ] Build riuscito senza errori? -- [ ] Cache browser pulita (Ctrl+Shift+R)? -- [ ] Console mostra i log "Sidebar toggled"? -- [ ] Ispeziona elemento: classe "collapsed" viene applicata al container? -- [ ] CSS caricato correttamente (verifica in Network tab)? - -## Verifica con DevTools - -### 1. Ispeziona il Container -``` -F12 ? Elements tab -Cerca: