Questo è un sistema di trading automatizzato completamente refactorizzato per criptovalute con architettura moderna e codice pulito.
- 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
- 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
- Crittografia: Credenziali API crittografate
- Modalità Simulazione: Testing sicuro senza rischi
- Validazione: Validazione completa dei parametri
- Logging: Sistema di logging avanzato
- 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)
- Database Fix: Risolto problema di connessione al database errato
- Da:
support.db(1156 operazioni) - A:
TradingSupport.db(1741 operazioni)
- Da:
- 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)
- Da:
- 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
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
- Python 3.8+
- pip (gestore pacchetti Python)
- Git
- Connessione internet
# 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# 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-
Configura il file
config/config.yaml:- Imposta le credenziali API
- Configura gli orari di trading
- Abilita/disabilita il trading reale
-
Per Raspberry Pi:
- Usa
run_trading.shper l'esecuzione - Configura cron job per l'automazione
- Monitora con
monitor.sh
- Usa
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)
python TradingLib/API_key.pySegui il setup interattivo per configurare:
- Binance API Key e Secret
- CoinMarketCap API Key
- Configurazione Email
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"]
}
}Il sistema supporta diverse modalità:
scheduled: Esecuzione schedulata continua (default)init: Solo inizializzazionedb_update: Aggiornamento databasesend_report: Invio reporttrading_test: Test di tradingdownload_db: Backup database
python TradingStrategy_Clean.pypython TradingStrategy_Clean.py db_update
python TradingStrategy_Clean.py send_report
python TradingStrategy_Clean.py trading_testPer default il sistema funziona in modalità simulazione. Per il trading reale:
- Configura le credenziali Binance reali
- Modifica la configurazione:
"mode": "live" - Imposta
"trading_enabled": true
Gestisce la configurazione centralizzata del sistema:
- Caricamento/salvataggio configurazioni
- Validazione parametri
- Gestione percorsi database
Gestisce le connessioni e operazioni database:
- Connection pooling
- Transazioni sicure
- Backup automatici
- Controlli di integrità
Core del sistema di trading:
- Analisi tecnica
- Gestione ordini
- Risk management
- Posizioni attive
Gestione report e notifiche:
- Generazione grafici
- Report HTML
- Invio email
- Metriche di performance
Funzioni di utilità:
- Validazione dati
- Gestione cache
- Utilities matematiche
- Gestione file
- Tutte le credenziali sono crittografate
- Supporto per variabili ambiente
- Rotazione chiavi automatica
- Modalità simulazione per testing
- Validazione parametri
- Limiti di posizione
- Stop loss automatici
Il sistema genera log dettagliati:
trading_system.log: Log principale- Rotazione automatica dei log
- Livelli di log configurabili
- Performance in tempo reale
- Statistiche di trading
- Analisi dei rischi
- Report giornalieri
Puoi aggiungere nuovi indicatori modificando TradingCore.py:
def _calculate_custom_indicator(self, data: pd.DataFrame) -> pd.Series:
# Implementa il tuo indicatore
return custom_indicatorPersonalizza le strategie in TechnicalAnalyzer:
def _custom_strategy(self, indicators: Dict[str, Any]) -> Optional[TradingSignal]:
# Implementa la tua strategia
return signalAggiungi nuovi canali di notifica in ReportManager:
def send_telegram_notification(self, message: str):
# Implementa notifiche Telegram
passSintomi: 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 sbagliatopython TradingStrategy_Clean.py --mode database_sanity_checkpython TradingLib/API_key.pyProblema: 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()
"- Verifica la configurazione degli orari
- Controlla i fusi orari
python system_health_check.pypython test_basic_functionality.pypython test_config.pyAbilita il debug mode nel file di configurazione:
{
"system": {
"debug_mode": true,
"log_level": "DEBUG"
}
}- Fork del repository
- Crea un branch per la feature
- Implementa le modifiche
- Aggiungi test
- Crea pull request
- Type hints obbligatori
- Documentazione per tutte le funzioni
- Test unitari per nuove funzionalità
- Codice conforme a PEP8
Questo progetto è rilasciato sotto licenza MIT. Vedi il file LICENSE per i dettagli.
- 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
Per supporto e domande:
- Crea un issue su GitHub
- Controlla la documentazione
- Verifica i log di sistema
Sviluppato con ❤️ per la comunità di trading