CryptoCluster
Plateforme distribuee de collecte et d'analyse de donnees crypto : RedisTimeSeries, InfluxDB, Dispy, CCXT. API FastAPI, web et mobile.
Technologies
Documentation du projet
CryptoCluster
Toute la documentation détaillée est maintenant dans docs/.
Consulte en priorité:
docs/README.md- vue d'ensemble, installation, démarrage, scripts utiles
docs/verificationredistimeseries.md- vérification RedisTimeSeries via redis-cli
Configuration actuelle
- Nœud de stockage :
node8.lan(RedisTimeSeries + InfluxDB)
- Nœud master :
node13.lan(scheduler Dispy)
- Workers :
node6.lanànode14.lan(9 workers pour collecte et calculs)
- Exchanges : Binance (1 seul pour commencer)
- Paires :
- Paires EUR : BTC, ETH, XRP, BNB, SOL, ADA, DOT, MATIC, LINK, AVAX
- Paires croisées : BTC/ETH, ETH/XRP, BTC/XRP, etc. (pour arbitrage triangulaire)
Installation rapide
Windows / PowerShell
conda create -n cryptocluster python=3.9 -y
conda activate cryptocluster
pip install -r requirements.txt
Configuration
node8.lannode8.lanconfig/storageconfig.pyFichiers de configuration
config/storageconfig.py: Configuration Redis et InfluxDB
config/exchangesconfig.py: Configuration des exchanges
inventory/nodes.yaml: Configuration des nœuds du cluster
Déploiement et démarrage
1. Découvrir les paires disponibles (recommandé)
Avant de lancer la collecte, découvre les paires disponibles sur l'exchange et les cycles d'arbitrage :
conda activate cryptocluster
python scripts/discoverpairs.py
Ce script va :
- Se connecter à Binance
- Lister toutes les paires disponibles
- Filtrer les paires désirées (PRIORITYSYMBOLS)
- Trouver les cycles d'arbitrage (EUR → BTC → ETH → XRP → EUR, etc.)
- Afficher les paires recommandées pour la collecte
2. Lancer le collector
1) Déployer le code sur les nœuds (ignore node10 si hors ligne)
conda activate cryptocluster
scripts\dispy\deployprojectcode.ps1 -Force
2) Lancer le collector (détecte automatiquement les paires disponibles)
python startcollector.py
Le collector va automatiquement :
- Détecter les paires disponibles sur l'exchange
- Filtrer les paires désirées
- Trouver les cycles d'arbitrage
- Répartir les paires sur les workers
- Lancer la collecte
Le script lance automatiquement :
- Collecte continue des tickers (toutes les secondes)
- Synchronisation RedisTimeSeries → InfluxDB (toutes les 60 secondes)
- Calcul des bougies
- Calcul des stratégies (RSI)
Appuyez sur Ctrl+C pour arrêter proprement.
Tests rapides Dispy
conda activate cryptocluster
Ping simple du scheduler
python scripts/tools/testdispysimple.py
Vérifier tous les nœuds
python scripts/tools/testalldispynodes.py
Vérifier connexion collector -> scheduler et assignations
python scripts/tools/testcollectorscheduler.py
Distribution de jobs sur plusieurs nœuds
python scripts/tools/testmultiplenodes.py --jobs 20
Test complet scheduler + workers
python scripts/tools/testschedulerworkers.py
Vérifier les imports côté workers
python scripts/tools/testimportworker.py
Méthodes alternatives
Pipeline complet manuel
from exchanges.distributedcollector import DistributedCollector
collector = DistributedCollector()
Pipeline automatique : collecte → sync → bougies → stratégies
collector.runfullpipeline(collectinterval=1, syncinterval=60)
Collecte seule
from exchanges.distributedcollector import DistributedCollector
with DistributedCollector() as collector:
# Collecte continue
collector.collect
tickerscontinuous(intervalseconds=1)
Exemples détaillés
Voir exchanges/exampledistributedusage.py pour plus d'exemples :
python exchanges/exampledistributedusage.py pipeline # Pipeline complet
python exchanges/exampledistributedusage.py collect # Collecte seule
python exchanges/exampledistributedusage.py sync # Sync seule
python exchanges/exampledistributedusage.py strategies # Calcul stratégies
Structure du projet
CryptoCluster/
├── config/ # Configuration centralisée
│ ├── storageconfig.py # Redis + InfluxDB
│ ├── exchangesconfig.py # Exchanges CCXT
│ └── dispyconfig.py # Dispy
├── exchanges/ # Code des exchanges
│ ├── distributedcollector.py # Orchestrateur principal
│ ├── dispystorageworkers.py # Workers collecte/stockage
│ ├── dispystrategyworkers.py # Workers stratégies
│ └── ...
├── inventory/ # Configuration des nœuds
│ ├── nodes.yaml # Fichier YAML
│ └── nodes.py # Utilitaires de chargement
└── docs/ # Documentation
Architecture des données
RedisTimeSeries
- Séries :
tick:{exchange}:{symbol}:price,tick:{exchange}:{symbol}:volume
- Rétention : 3 jours
InfluxDB
- Measurement
ticks: ticks individuels
- Measurement
candles: bougies OHLCV
- Rétention : 15 jours pour ticks, 90 jours pour bougies
Raccourcis utiles:
conda activate cryptocluster
python scripts/monitoring/monitorsystem.py
python scripts/monitoring/healthcheck.py
Scripts de diagnostic
scripts/monitoring/checkredis.py: Vérifie Redis et RedisTimeSeries
scripts/monitoring/checkinfluxdb.py: Vérifie InfluxDB
scripts/diagnosedispynodes.ps1: Diagnostic des nœuds Dispy
scripts/monitoring/monitorsystem.py: Vue d'ensemble du système
scripts/monitoring/healthcheck.py: Health checks rapides (retour de code, pour CI/cron)
Outils Dispy
scripts/dispy/deployprojectcode.ps1: Copier le code sous /opt/cryptocluster et mettre à jour PYTHONPATH
scripts/dispy/deploydispyworker.ps1: Déployer/mettre à jour le worker systemd sur les nœuds
scripts/dispy/updatedispyworkerips.ps1: Mettre à jour les IPs dans le service sur chaque nœud
scripts/dispy/diagnosedispynodes.ps1: Diagnostiquer les nœuds qui ne se connectent pas
scripts/dispy/dispyworker.py: Script Python exécuté sur les nœuds (service)
scripts/dispy/dispyworker.service: Unité systemd du worker
Astuce: un script unifié scripts/dispy/managedispy.ps1 est fourni pour déployer et redémarrer rapidement (voir section Scripts).
Outils SSH
scripts/ssh/setupsshkeys.ps1: Configurer l'authentification SSH par clés sur tous les nœuds
scripts/ssh/fixsshpermissions.ps1: Corriger les permissions.sshetauthorizedkeys
scripts/ssh/replacesshkeys.ps1: Remplacer complètementauthorizedkeyspar la clé locale
scripts/ssh/fixhomepermissions.ps1: Remettre/home/pien 755 et réparer les clés
scripts/ssh/configuresshfor_samba.ps1: MettreStrictModes nopour compatibilité Samba
Rappels utiles
- Windows 10 / PowerShell: évite les pipes ou chaînages
|et&&. Exécute les commandes une par une.
- Toujours activer l'environnement conda
cryptoclusteravant de lancer les scripts Python.
- Si un nœud est hors-ligne (ex:
node10.lan), laisse-le de côté, le cluster fonctionne avec les autres.
Prochaines étapes
Projets suggeres
ClipForge
Creation de shorts viraux en local (ingest, STT, TTS, montage, TikTok) - API NestJS, workers Python, dashboard Next.js
SpecialiseCryptoSpreadEdge
Trading crypto haute frequence avec IA - Docker Swarm, multi-plateformes, FastAPI Python
SpecialiseDataWhisper
Plateforme OSINT centralisée - collecte, analyse et visualisation de données multi-sources (FastAPI, React, Docker)
SpecialiseEcoDataHub
Plateforme multi-sources pour l'acces aux donnees economiques (Eurostat, INSEE, BdF, OCDE, Banque mondiale). API FastAPI...