Specialise

CryptoCluster

2026 loupix57 Actif
CryptoCluster

Plateforme distribuee de collecte et d'analyse de donnees crypto : RedisTimeSeries, InfluxDB, Dispy, CCXT. API FastAPI, web et mobile.

Technologies

PythonFastAPIRedisInfluxDB

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 USDT : BTC, ETH, BNB, SOL, XRP, ADA, DOT, MATIC, LINK, AVAX, UNI, LTC, ATOM

- 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

  • RedisTimeSeries : doit être installé et démarré sur node8.lan
  • InfluxDB 1.8 : doit être installé et démarré sur node8.lan
  • Variables d'environnement : optionnel, voir config/storageconfig.py
  • Fichiers 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.collecttickerscontinuous(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 .ssh et authorizedkeys
    • scripts/ssh/replacesshkeys.ps1 : Remplacer complètement authorizedkeys par la clé locale
    • scripts/ssh/fixhomepermissions.ps1 : Remettre /home/pi en 755 et réparer les clés
    • scripts/ssh/configuresshfor_samba.ps1 : Mettre StrictModes no pour 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 cryptocluster avant 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

  • Ajouter plus d'exchanges (Coinbase, Kraken, etc.)
  • Ajouter plus de cryptos
  • Configurer les agrégations continues dans InfluxDB
  • Développer plus de stratégies de trading
  • Code source

    Projet open source hébergé sur GitHub.

    • 0 étoiles
    • 0 forks
    • Python
    Voir le dépôt GitHub

    Projets suggeres