Skip to content

Gianpy99/TradingAutomation

Repository files navigation

Sistema di Trading Automatizzato - Versione Pulita

Questo è un sistema di trading automatizzato completamente refactorizzato per criptovalute con architettura moderna e codice pulito.

Caratteristiche

🚀 Architettura Moderna

  • Design Pattern: Implementazione di Factory, Strategy e Observer pattern
  • Type Safety: Utilizzo completo di type hints Python
  • Dataclasses: Strutture dati moderne e immutabili
  • Enum: Gestione type-safe delle costanti
  • Error Handling: Gestione robusta degli errori con retry logic

📊 Funzionalità di Trading

  • Analisi Tecnica: Indicatori RSI, MACD, Bollinger Bands, SMA/EMA
  • Gestione Ordini: Supporto per ordini market e limit
  • Risk Management: Stop loss, take profit, position sizing
  • Backtesting: Sistema di simulazione integrato
  • Multi-timeframe: Supporto per multiple timeframe simultanee

🛡️ Sicurezza

  • Crittografia: Credenziali API crittografate
  • Modalità Simulazione: Testing sicuro senza rischi
  • Validazione: Validazione completa dei parametri
  • Logging: Sistema di logging avanzato

📈 Reporting

  • Grafici: Generazione automatica di grafici di performance
  • Email: Notifiche e report automatici via email
  • Metriche: Tracking completo delle performance
  • Database Corretto: Sistema ora utilizza database di produzione con 1741 operazioni
  • Trade Recenti: Mostra correttamente i trade più recenti (aprile/maggio 2024)

🔧 Correzioni Recenti (Luglio 2025)

  • Database Fix: Risolto problema di connessione al database errato
    • Da: support.db (1156 operazioni)
    • A: TradingSupport.db (1741 operazioni)
  • Query Fix: Corretta query per ottenere i trade più recenti
    • Da: ORDER BY SellDate DESC (mostrava trade del 2023)
    • A: ORDER BY ROWID DESC (mostra trade del 2024)
  • Report Accuracy: I report ora mostrano dati corretti di produzione
    • Portfolio totale corretto: ~1266 USDT
    • Trade recenti di aprile/maggio 2024
    • Statistiche accurate: 43.3% win rate su 1741 operazioni

Struttura del Progetto

TradingSystem_Clean/
├── TradingStrategy_Clean.py      # File principale del sistema
├── TradingLib/                   # Librerie core
│   ├── ConfigManager.py         # Gestione configurazione
│   ├── DatabaseManager.py       # Gestione database
│   ├── TradingCore.py           # Core del trading
│   ├── ReportManager.py         # Gestione report
│   ├── Utils.py                 # Utilities generali
│   ├── API_key.py               # Gestione credenziali API
│   └── TradingRun.sh            # Script di avvio per Raspberry Pi
├── run_trading.sh               # Script di avvio semplificato
├── setup_raspberry_pi.sh        # Setup automatico per Raspberry Pi
├── monitor.sh                   # Script di monitoraggio
├── cron_config.txt              # Configurazione cron job
├── config/
│   └── config.yaml              # File di configurazione
├── Requirements/                 # Dipendenze
│   └── requirements.txt         # Pacchetti Python richiesti
└── Report_Img/                  # Immagini dei report

🚀 Installazione e Configurazione

Requisiti di Sistema

  • Python 3.8+
  • pip (gestore pacchetti Python)
  • Git
  • Connessione internet

Installazione

Su Windows

# Clona il repository
git clone <repository-url>
cd TradingSystem_Clean

# Crea ambiente virtuale
python -m venv TA
TA\Scripts\activate

# Installa dipendenze
pip install -r requirements.txt

# Esegui il sistema
python TradingStrategy_Clean.py

Su Raspberry Pi / Linux

# Esegui lo script di setup automatico
chmod +x setup_raspberry_pi.sh
./setup_raspberry_pi.sh

# Oppure installazione manuale:
python3 -m venv TA
source TA/bin/activate
pip install -r requirements.txt

Configurazione

  1. Configura il file config/config.yaml:

    • Imposta le credenziali API
    • Configura gli orari di trading
    • Abilita/disabilita il trading reale
  2. Per Raspberry Pi:

    • Usa run_trading.sh per l'esecuzione
    • Configura cron job per l'automazione
    • Monitora con monitor.sh

3. Configurazione Database ⚠️ IMPORTANTE

Il sistema deve utilizzare il database di produzione corretto:

Database Path (Corretto):

C:\Development\Database\TradingSupport.db

Verifiche Database:

  • ✅ Dovrebbe contenere 1741 operazioni (non 1156)
  • ✅ Dovrebbe avere trade recenti di aprile/maggio 2024
  • ✅ Dimensione file: ~10MB

Test Database:

# Verifica che il database sia corretto
python -c "
import sqlite3
conn = sqlite3.connect(r'C:\Development\Database\TradingSupport.db')
cursor = conn.cursor()
cursor.execute('SELECT COUNT(*) FROM TradingJournal')
count = cursor.fetchone()[0]
cursor.execute('SELECT MAX(SellDate) FROM TradingJournal ORDER BY ROWID DESC LIMIT 1')
latest = cursor.fetchone()[0]
print(f'Operazioni: {count}')
print(f'Trade più recente: {latest}')
conn.close()
"

Output atteso:

Operazioni: 1741
Trade più recente: 09/05/24-02:00 (o simile 2024)

4. Configurazione Credenziali

python TradingLib/API_key.py

Segui il setup interattivo per configurare:

  • Binance API Key e Secret
  • CoinMarketCap API Key
  • Configurazione Email

Configurazione

Configurazione Base

Il sistema utilizza un file trading_config.json per la configurazione:

{
  "trading": {
    "mode": "simulation",
    "percentage": 25.0,
    "whitelist": ["BTCUSDT", "ETHUSDT", "SOLUSDT"],
    "trading_enabled": true,
    "tp_percentage": 10.0,
    "sl_percentage": 10.0
  },
  "schedule": {
    "report_times": ["00:40", "07:10", "12:10", "19:10"],
    "trading_times_buy": ["00:05", "15:05", "30:05", "45:05"],
    "database_update_time": ["00:00:02"]
  }
}

Modalità di Esecuzione

Il sistema supporta diverse modalità:

  • scheduled: Esecuzione schedulata continua (default)
  • init: Solo inizializzazione
  • db_update: Aggiornamento database
  • send_report: Invio report
  • trading_test: Test di trading
  • download_db: Backup database

Utilizzo

Avvio Base

python TradingStrategy_Clean.py

Avvio con Modalità Specifica

python TradingStrategy_Clean.py db_update
python TradingStrategy_Clean.py send_report
python TradingStrategy_Clean.py trading_test

Modalità Simulazione

Per default il sistema funziona in modalità simulazione. Per il trading reale:

  1. Configura le credenziali Binance reali
  2. Modifica la configurazione: "mode": "live"
  3. Imposta "trading_enabled": true

Architettura

ConfigManager

Gestisce la configurazione centralizzata del sistema:

  • Caricamento/salvataggio configurazioni
  • Validazione parametri
  • Gestione percorsi database

DatabaseManager

Gestisce le connessioni e operazioni database:

  • Connection pooling
  • Transazioni sicure
  • Backup automatici
  • Controlli di integrità

TradingCore

Core del sistema di trading:

  • Analisi tecnica
  • Gestione ordini
  • Risk management
  • Posizioni attive

ReportManager

Gestione report e notifiche:

  • Generazione grafici
  • Report HTML
  • Invio email
  • Metriche di performance

Utils

Funzioni di utilità:

  • Validazione dati
  • Gestione cache
  • Utilities matematiche
  • Gestione file

Sicurezza

Credenziali

  • Tutte le credenziali sono crittografate
  • Supporto per variabili ambiente
  • Rotazione chiavi automatica

Trading

  • Modalità simulazione per testing
  • Validazione parametri
  • Limiti di posizione
  • Stop loss automatici

Monitoraggio

Logging

Il sistema genera log dettagliati:

  • trading_system.log: Log principale
  • Rotazione automatica dei log
  • Livelli di log configurabili

Metriche

  • Performance in tempo reale
  • Statistiche di trading
  • Analisi dei rischi
  • Report giornalieri

Personalizzazione

Indicatori Tecnici

Puoi aggiungere nuovi indicatori modificando TradingCore.py:

def _calculate_custom_indicator(self, data: pd.DataFrame) -> pd.Series:
    # Implementa il tuo indicatore
    return custom_indicator

Strategie di Trading

Personalizza le strategie in TechnicalAnalyzer:

def _custom_strategy(self, indicators: Dict[str, Any]) -> Optional[TradingSignal]:
    # Implementa la tua strategia
    return signal

Notifiche

Aggiungi nuovi canali di notifica in ReportManager:

def send_telegram_notification(self, message: str):
    # Implementa notifiche Telegram
    pass

Troubleshooting

Problemi Comuni

1. Dati Report Errati ⚠️

Sintomi: Report mostra trade del 2023 invece del 2024, numeri di operazioni errati Soluzione: Verificare database corretto

# Testa database utilizzato dal sistema
python test_basic_functionality.py

# Output atteso: "1741 trade" nel log
# Se vedi "1156 trade" = database sbagliato

2. Errore connessione database

python TradingStrategy_Clean.py --mode database_sanity_check

3. Errore credenziali API

python TradingLib/API_key.py

4. Trade recenti non aggiornati

Problema: Query errata per trade recenti Verifica: I trade più recenti dovrebbero essere del 2024, non 2023

# Verifica trade recenti nel database
python -c "
import sqlite3
conn = sqlite3.connect(r'C:\Development\Database\TradingSupport.db')
cursor = conn.cursor()
cursor.execute('SELECT Symbol, SellDate, Profit FROM TradingJournal ORDER BY ROWID DESC LIMIT 5')
for trade in cursor.fetchall():
    print(trade)
conn.close()
"

5. Problemi di scheduling

  • Verifica la configurazione degli orari
  • Controlla i fusi orari

Testing & Validazione

Test Salute Sistema:

python system_health_check.py

Test Funzionalità Base:

python test_basic_functionality.py

Test Configurazione:

python test_config.py

Debug

Abilita il debug mode nel file di configurazione:

{
  "system": {
    "debug_mode": true,
    "log_level": "DEBUG"
  }
}

Contribuire

Sviluppo

  1. Fork del repository
  2. Crea un branch per la feature
  3. Implementa le modifiche
  4. Aggiungi test
  5. Crea pull request

Coding Standards

  • Type hints obbligatori
  • Documentazione per tutte le funzioni
  • Test unitari per nuove funzionalità
  • Codice conforme a PEP8

Licenza

Questo progetto è rilasciato sotto licenza MIT. Vedi il file LICENSE per i dettagli.

Disclaimer

⚠️ AVVERTENZA: Questo software è fornito "as is" senza garanzie di alcun tipo. Il trading di criptovalute comporta rischi significativi e puoi perdere tutti i tuoi investimenti. Usa questo software a tuo rischio e pericolo.

  • Testa sempre in modalità simulazione prima del trading reale
  • Non investire mai più di quanto puoi permetterti di perdere
  • Monitora costantemente le tue posizioni
  • Considera sempre le commissioni e gli spread

Supporto

Per supporto e domande:

  • Crea un issue su GitHub
  • Controlla la documentazione
  • Verifica i log di sistema

Sviluppato con ❤️ per la comunità di trading

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published