Outils de trading

Gestion des limites de débit de l'API Binance : que signifie le "weight" ?

2026-04-23 · 14 min de lecture

Les limitations de débit (rate limits) sont l'obstacle majeur des stratégies quantitatives. Cet article explique les concepts de weight et d'ordres, et comment gérer les ralentissements.

Les limitations de débit (Rate Limits) sont le piège le plus courant pour les stratégies de trading algorithmique. Commencez par créer votre clé API sur le site officiel de Binance. Pour le suivi, utilisez l' application officielle de Binance (pour iOS, voir le tutoriel d'installation iOS).

Deux systèmes de limitation

L'API de Binance impose des limites selon deux dimensions indépendantes :

1. Le Weight (Poids)

Chaque point de terminaison (endpoint) possède une valeur de "weight". La somme totale des weights par minute ne doit pas dépasser une certaine limite.

Niveau de compte Weight par minute
Standard 1 200
VIP 1 2 400
VIP 2 3 600
... Augmente avec le rang

2. Le Nombre d'ordres (Order Count)

C'est une restriction supplémentaire spécifique aux ordres d'achat et de vente :

Fenêtre de temps Nombre d'ordres
10 secondes 100
1 jour 200 000

Le dépassement de l'une ou l'autre de ces limites entraîne un bannissement temporaire.

Valeurs de Weight par interface

Quelques exemples courants :

Interface Weight
Instantané de marché 1
Carnet d'ordres (5 niveaux) 1
Carnet d'ordres (100 niveaux) 5
Carnet d'ordres (1 000 niveaux) 50
Klines (Bougies) 1
Passer un ordre 1
Annuler un ordre 1
Informations du compte 10

Récupérer un carnet d'ordres profond (1 000 niveaux) coûte 50 de weight. Vous ne pouvez donc le faire que 24 fois par minute maximum.

En-têtes de réponse (Headers)

Chaque réponse de l'API contient des informations cruciales dans ses en-têtes :

  • X-MBX-USED-WEIGHT-1M : Weight utilisé pour la minute en cours.
  • X-MBX-ORDER-COUNT-10S : Nombre d'ordres passés lors des 10 dernières secondes.

Surveillez ces valeurs dans votre code pour ralentir avant d'atteindre la limite.

Conséquences du dépassement

  • Erreur 429 : Limitation temporaire. Vous devez attendre quelques secondes ou minutes.
  • Erreur 418 : Violation répétée. Entraîne un bannissement plus long, voire permanent de l'IP.

Après une erreur 418, l'accès peut être bloqué pendant 24 heures ou plusieurs jours. Ne tentez jamais de forcer le passage.

Stratégie de repli (Backoff)

import time

while True:
    try:
        result = api_call()
        weight_used = int(headers.get('X-MBX-USED-WEIGHT-1M', 0))
        if weight_used > 1000:
            time.sleep(10)  # Ralentissement préventif
        return result
    except RateLimitError:
        time.sleep(60)  # Attente d'une minute complète

Astuces pour réduire la consommation de Weight

1. Limiter la profondeur des carnets

Si 5 niveaux de prix vous suffisent, ne demandez pas 1 000 niveaux. Le coût en weight est 50 fois moindre.

2. Privilégier le WebSocket

Les prix, les carnets d'ordres et les Klines peuvent être reçus en temps réel via WebSocket. Le flux WebSocket ne consomme aucun weight.

3. Utiliser les ordres groupés

L'interface /api/v3/batchOrders permet de passer 5 ordres en un seul appel, ce qui est bien plus "économe" en ressources que 5 appels individuels.

4. Mise en cache (Caching)

Ne rafraîchissez pas les données qui ne changent pas chaque seconde. Gardez-les en cache quelques instants.

L'avantage majeur du WebSocket

Donnée Coût REST (Weight) Coût WebSocket
Prix 1 par appel Push en continu, 0 weight
Carnet d'ordres 1 à 50 par appel Push en continu
Klines 1 par appel Push en continu

Une architecture de trading efficace utilise :

  • WebSocket pour le flux de données en temps réel (consommation nulle).
  • REST uniquement pour les actions ponctuelles (ordres, annulations).

Distribution sur plusieurs comptes

L'utilisation de plusieurs comptes (et donc plusieurs clés API) permet de répartir naturellement la consommation de weight.

Stratégie recommandée :

  • Clé du compte principal : Passage d'ordres uniquement.
  • Clés de sous-comptes : Consultation des données de marché. Cela multiplie virtuellement vos limites de weight.

Avantages VIP

Monter en grade VIP offre des bénéfices concrets pour l'API :

  • Augmentation du plafond de weight par minute.
  • Seuils d'ordres plus élevés pour certains terminaux.
  • C'est parfois plus rentable que les économies sur les frais de transaction.

Dès le niveau VIP 1, les limites peuvent être doublées.

Code de surveillance (Monitoring)

class RateMonitor:
    def __init__(self):
        self.last_weight = 0
        self.alert_threshold = 1000
    
    def update(self, headers):
        used = int(headers.get('X-MBX-USED-WEIGHT-1M', 0))
        if used > self.alert_threshold:
            print(f"ALERTE : {used} / 1200 utilisé")
        self.last_weight = used

Erreurs courantes

1. Tout faire via REST

Passer des ordres tout en vérifiant les positions et les Klines via REST chaque seconde fera exploser votre weight instantanément. Utilisez les flux WebSocket.

2. Ignorer les exceptions

Ne pas prévoir de sleep après une erreur 429 conduit inévitablement à une erreur 418 (bannissement IP).

3. Utiliser plusieurs clés sur la même IP

Même si les clés sont différentes, une limite globale par IP s'applique également. Plusieurs clés sur une même IP peuvent voir leurs consommations agrégées.

4. Ne pas consulter les en-têtes

C'est comme conduire sans regarder le compteur de vitesse : on ne s'aperçoit de l'excès qu'une fois la sanction tombée.

Tests avant la mise en production

  1. Utilisez le Testnet pour vos tests à haute fréquence et vérifiez si vous déclenchez des erreurs 429.
  2. Mettez en place des alertes de monitoring. Dès que le weight approche de la limite, le système doit ralentir ou s'arrêter automatiquement.

Questions Fréquemment Posées

Combien de temps dure un blocage 429 ? Généralement de quelques secondes à quelques minutes. Ne tentez aucune requête durant cette période.

Combien de temps dure un blocage 418 ? De 1 heure à 24 heures, et jusqu'à 7 jours dans les cas extrêmes.

Peut-on contester un bannissement ? Vous pouvez contacter le support, mais c'est rarement efficace. Il faut simplement attendre la fin du délai.

Le weight est-il partagé entre les différents types d'interfaces ? Oui. Toutes les requêtes REST s'additionnent pour atteindre la limite des 1 200 points par minute.

La limite d'ordres est-elle par IP ou par compte ? Par compte. Changer d'IP ne permet pas de contourner cette limite.

Lectures complémentaires

La limitation de débit n'est pas un obstacle si vous la gérez correctement. Surveillez votre consommation de weight et vous ne serez jamais banni.