Bot Python de trading crypto automatisé — connexion à une API REST (Binance/KuCoin), indicateurs techniques EMA/RSI, gestion stop-loss/take-profit, backtesting sur données historiques et logs de performance détaillés.
Le bot se connecte à l'API REST de Binance ou KuCoin via authentification HMAC (clé API + secret). Il récupère les données de marché OHLCV (Open, High, Low, Close, Volume) en temps réel sur la paire configurée, puis calcule les indicateurs techniques pour détecter les signaux d'entrée et de sortie.
Tout fonctionne en simulation — les ordres ne sont pas passés en réel, mais loggués avec les prix simulés, le P&L calculé et le winrate cumulé. L'objectif était de comprendre la structure d'une API financière, l'authentification sécurisée et le traitement de données de marché.
Requêtes signées HMAC-SHA256 : chaque appel inclut un timestamp et une signature calculée à partir du secret. Gestion des erreurs HTTP (rate limit, token expiré) avec retry automatique.
Récupération des chandeliers (bougies) sur plusieurs timeframes. Chargement dans un DataFrame Pandas pour le calcul vectorisé des indicateurs.
EMA 9 et EMA 21 calculées via ewm() Pandas. RSI (14 périodes) : ratio des gains/pertes moyens. Le signal de croisement EMA 9/21 + confirmation RSI < 30 ou > 70 déclenche une entrée ou une sortie de position.
Stop-loss fixe en pourcentage du prix d'entrée. Take-profit calculé selon le ratio risque/récompense configuré (ex: 1:2). Si le prix atteint l'un des deux niveaux, la position est fermée et le résultat loggué.
Simulation de la stratégie sur données historiques : application rétroactive des signaux sur les chandeliers passés. Calcul du P&L total, du winrate, du drawdown maximum et du ratio de Sharpe simplifié.
Les APIs REST financières ont des contraintes spécifiques que les APIs web classiques n'ont pas : rate limits stricts, timestamps de synchronisation NTP obligatoires, signatures cryptographiques sur chaque requête. Un décalage de quelques secondes sur l'horloge locale fait échouer toutes les requêtes.
Pandas pour la finance — les calculs vectorisés (rolling(), ewm(), shift()) permettent d'appliquer des indicateurs sur des milliers de lignes sans boucles. Beaucoup plus rapide et lisible qu'un calcul ligne par ligne.
Le backtesting ne garantit rien — une stratégie qui performe bien sur données historiques peut échouer en live à cause du slippage, des frais, ou d'un changement de régime de marché. Le bot l'a confirmé en testant les deux.