Projet personnel · Fév – Avr 2026

Bot de trading

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.

Python 3API RESTHMAC authEMA / RSIPandasBacktesting

Fonctionnement général

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é.

Modules techniques

Connexion API REST + auth HMAC

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 données OHLCV

Récupération des chandeliers (bougies) sur plusieurs timeframes. Chargement dans un DataFrame Pandas pour le calcul vectorisé des indicateurs.

Indicateurs techniques : EMA & RSI

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.

Gestion du risque

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é.

Backtesting

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é.

Ce que ce projet m'a appris

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.