Série Binance API partie I - Trading au comptant avec Postman
Table des matières
Introduction
Prérequis
Création de l'environnement
Importation de la collection
Créer des requêtes
Débogage avec Postman
Conclusion
Série Binance API partie I - Trading au comptant avec Postman
Accueil
Articles
Série Binance API partie I - Trading au comptant avec Postman

Série Binance API partie I - Trading au comptant avec Postman

Avancé
Publié(e) Jul 13, 2020Mis à jour Aug 19, 2022
13m

Table des matières


Introduction

Comprendre et utiliser une API pour le trading de cryptomonnaies peut ouvrir un nouveau monde de possibilités lorsqu'il s'agit d'entrer et de sortir des positions. Avec quelques connaissances simples en matière de codage, vous pouvez vous connecter au backend d'un marché boursier pour automatiser vos stratégies de trading. En évitant le site Web, vous pouvez emprunter un chemin beaucoup plus rapide vers le moteur d'appariement pour les applications à haute performance.

L'objectif de cette série est de vous présenter l'API REST de Binance et de vous apprendre à interagir avec elle. En fin de compte, vous devez avoir confiance en votre capacité à rechercher des informations sur les marchés et votre position et à placer une grande variété d'ordres.

Dans cet article, nous allons utiliser Postman pour communiquer avec l'exchange. Ne vous inquiétez pas, nous ne risquerons pas de vrais fonds.


Prérequis

Clés testnet

Nous allons utiliser le testnet pour ce tutorial. Cela nous permettra d'utiliser des fonds sans valeur marchande. Ils fonctionnent exactement de la même manière que des monnaies et tokens réels, donc une fois que vous serez à l'aise avec l'API, vous pourrez commencer à l'utiliser pour trader des fonds réels.


  1. Commencez par vous diriger vers le testnet au comptant.

  2. Pour y accéder, vous devez vous connecter avec un compte GitHub. Créez-en un si vous n'en avez pas encore.

  3. Cliquez sur Se connecter et connectez-vous via GitHub.

  4. Sous clés API, vous serez informé que vous n'avez pas de clé enregistrée. Cliquez sur Générer clé HMAC_SHA256 pour créer une paire.

  5. Sur l'écran suivant, donnez un nom aux clés. Appelez-les comme vous le souhaitez et cliquez sur Générer.

  6. Deux clés vous sont générées : la clé API et la clé secrète. Il est important que vous les enregistriez maintenant. Si vous ne le faites pas, vous devrez recommencer le processus de création des clés. Nous vous recommandons de les stocker sur l'application de notes de votre machine pour pouvoir les copier-coller facilement plus tard.

Remarque : Il est intéressant de donner un nom à vos clés afin de plus facilement les gérer. Votre compte peut avoir plusieurs clés avec des autorisations différentes. Si vous exécutez plusieurs robots de trading, l'utilisation de clés distinctes avec des désignations précises facilite la gestion des autorisations ou la suppression de clés individuelles sans modifier tous vos bots.


Téléchargement et installation de Postman

Postman est une plateforme de collaboration API. C'est un point de départ parfait pour nous ; nous aurons accès à des collections de requêtes Binance que nous testerons sans avoir besoin d'écrire une seule ligne de code.

Le programme est disponible pour Mac, Windows et Linux. Accédez à la page Téléchargements et téléchargez le fichier .zip.

Une fois que c'est fait, localisez-le dans votre explorateur de fichiers et décompressez-le. Lancez l'application et c'est parti ! Notez que vous pouvez créer un compte pour vous connecter, mais ce n'est pas nécessaire. Si vous voulez sauter cette étape, il suffit de sélectionner l'option correspondante en bas de la fenêtre.


Création de l'environnement

À ce stade, vous devriez avoir une interface qui ressemble à ce qui suit.



Nous voulons d'abord créer notre environnement. Il s'agit simplement d'un moyen pour nous d'ajouter des variables à l'ensemble des demandes avec lesquelles nous allons travailler. Pour ce faire, nous devons d'abord récupérer certaines informations du référentiel Binance GitHub. Cliquez ici et téléchargez le fichier .zip.



Le téléchargement ne devrait pas prendre beaucoup de temps. Trouvez-le dans votre explorateur de fichiers et décompressez-le. Ensuite, nous pourrons retourner sur Postman.



Cliquez sur l'icône paramètres dans le coin supérieur droit (illustré ci-dessus). Vous serez accueilli par une popup Manage Environments.

  1. Sélectionnez Importer et accédez au dossier que vous venez d'extraire (binance-postman-api).

  2. Saisissez-le, puis ouvrez le dossier des environnements.

  3. Vous verrez maintenant deux fichiers (un pour mainnet et un pour testnet). Celui que nous recherchons est binance_com_spot_testnet_api.postman_environment.json. Assurez-vous d'utiliser le bon, car nos clés ne fonctionneront pas avec l'autre.



On y est presque. Cliquez sur API Binance Spot Testnet et vous verrez les variables ci-dessous. Modifiez les deux paramètres indiqués en rouge en collant les clés que vous avez enregistrées précédemment. Cliquez sur Mettre à jour et quittez la fenêtre contextuelle.



Sur cet écran, laissez les champs horodatage et signature vides. Ces deux valeurs seront créées automatiquement à chaque requête.

Il y a une dernière chose à faire. À droite de l'icône paramètres sur laquelle nous avons cliqué pour configurer l'environnement plus tôt, vous verrez un menu déroulant qui indique actuellement Aucun environnement. Cliquez dessus et sélectionnez Binance Spot Testnet API.


Importation de la collection

Nous allons maintenant importer la collection, il s'agit d'un vaste assortiment de requêtes qui font le gros du travail pour nous lorsque nous passons des ordres. Pour la charger dans notre environnement :

  1. Cliquez sur Importer dans le coin supérieur gauche.

  2. Dans la fenêtre contextuelle, sous l'onglet Fichier, sélectionnez Télécharger des fichiers.

  3. Nous recherchons à nouveau le dossier binance-postman-api. Trouvez-le et ouvrez-le.

  4. Cette fois, accédez au dossier collections.

  5. Il y a encore deux fichiers ici. L'un d'entre eux est destiné à l'API Futures. Mais nous souhaitons trader au comptant, donc vous devrez sélectionner le fichier binance_spot_api_v1.postman_collection.json.

  6. Vous devriez maintenant voir un écran de confirmation qui identifie l'importation comme étant au format Postman collection. Sélectionnez importer.

Sous l'onglet Collections à gauche de la fenêtre, vous remarquerez maintenant que nous avons un dossier contenant plus de 100 requêtes. Félicitations ! Tout est prêt. Dans la prochaine section, nous examinerons les types de requêtes que nous pouvons créer.


Créer des requêtes

Si vous développez les dossiers sous l'onglet Collections, vous verrez que nous avons un tas de requêtes différentes que nous pouvons créer et envoyer. Grâce au code couleur, vous pouvez noter qu'il existe trois types de méthodes que nous pouvons utiliser :


  • GET : La méthode GET est utilisée pour récupérer des éléments sur un serveur. Nous l'utiliserons pour interroger le solde de votre compte, les prix des actifs, etc.

  •  POST : Nous utiliserons généralement la méthode POST pour créer des informations sur un serveur. Cela est nécessaire pour effectuer des ordres, demander des retraits, etc.

  • DELETE : la méthode DELETE envoie au serveur une requête pour supprimer des informations. Celle-ci sera pratique pour annuler des ordres.


Rechercher la liste des symboles et les règles de trading

C'est le moment de créer notre première requête ! Nous allons obtenir les symboles que nous pouvons trader sur l'exchange et les règles de trading :

GET /exchangeInfo


Cette requête ne prend aucun paramètre supplémentaire. Vous pouvez la copier et la coller dans votre barre d'adresse, vous recevrez ensuite une réponse. Cependant, pour les requêtes où nous incluons plusieurs paramètres, Postman permet de les voir et de les modifier facilement.

Pour charger cette requête, sélectionnez Marché > Informations sur l'exchange. Un onglet comme celui-ci s'affichera :



Nous n'avons pas besoin de faire autre chose ici, alors continuez et appuyez sur Envoyer. Vous obtiendrez alors une réponse :



Dans la partie supérieure surlignée, vous verrez des informations importantes :

  • l'état de la réponse (200 signifie que nous avons réussi, 400-499 signifie que nous avons rencontré un problème)

  • le temps nécessaire pour recevoir la réponse (moins d'une seconde)

  • la taille de la réponse (~ 22 Ko).


Dans la deuxième case se trouve l'essentiel de la réponse. Elle a été mise en forme pour être plus lisible. Elle contient des informations sur l'exchange lui-même, ainsi que les paires que vous pouvez trader et leurs montants minimum/maximum.

Il semble y avoir beaucoup d'informations, mais le format permet de travailler très facilement avec un programme. Lorsque vous écrirez des scripts pour interagir avec ces données, vous pourrez facilement relever les propriétés spécifiques de certains éléments dans la réponse.


Vérifier le solde des comptes

Voyons quels sont les actifs que nous possédons et en quelle quantité :

GET /account

Celle-ci se trouve sous Trade > Informations de compte. Cliquez dessus, et vous verrez une mise en page similaire à la précédente. Vous noterez également que nous avons deux nouvelles variables : timestamp et signature. La signature est une mesure de sécurité. Comme nous demandons maintenant des informations sensibles, cela prouvera que nous sommes le titulaire du compte.

L'horodatage indique au serveur quand la demande a été envoyée. Comme les réseaux peuvent être peu fiables ou subir des interruptions, le serveur peut recevoir notre requête beaucoup plus tard que prévu. Si trop de temps s'est écoulé, il rejettera la requête. Vous pouvez préciser la durée de l'attente à l'aide du paramètre recvWindow , dont la valeur par défaut est de 5000 millisecondes.

Postman s'occupe de la génération de ces deux champs pour nous. Cliquez sur Envoyer, et vous recevrez une réponse. Sous les soldes, vous devriez voir six actifs : BNB, BTC, BUSD, ETH, LTC et TRX. Le solde sera réparti entre Libre et Verrouillé. Nous n'avons pas encore verrouillé d'actifs, vos actifs doivent donc tous être disponibles.

Félicitations pour votre nouvelle fortune (non existante) !


Obtenir le prix actuel d'un actif

Nous pouvons obtenir le prix actuel d'un actif de différentes manières. Le plus simple est peut-être la requête suivante :

GET /api/v3/ticker/24hr

Comme vous pouvez le deviner, cela nous donnera des informations sur les prix des actifs des dernières vingt-quatre heures. Vous la trouverez dans Marché > Statistiques liées aux variations du prix du ticker sur 24 hr. La paire affichée par défaut en tant que variable de symbole est BTCUSDT.

Vous pouvez l'envoyer immédiatement pour obtenir une ventilation des informations sur les prix. Vous pouvez également changer le symbole (en BNBBUSD, LTCUSDT, etc.), vous pouvez également décocher la variable pour obtenir des données pour 40 paires.

Nous avons également une requête plus simple (Marché > Ticker et prix du symbole) qui renvoie le prix actuel auquel un actif s'échange :

GET /api/v3/price

Comme avec la précédente, vous pouvez modifier la variable de symbole ou la supprimer complètement et obtenir le prix le plus récent pour tous les symboles.


Vérifier la profondeur actuelle du carnet d'ordres

La profondeur du carnet d'ordres (également appelée profondeur de marché, ou DOM) peut nous en dire beaucoup sur le marché. Nous allons faire une requête qui retournera des informations utiles :

GET api/v3/depth

Lorsque nous envoyons ceci avec les valeurs par défaut (Marché > Carnet d'ordres), nous recevons une réponse qui nous donne des informations sur l'offre et la demande de BTCUSDT. Le serveur de testnet ne fournira pas autant de données que le serveur réel. Vous trouverez ci-dessous une capture d'écran de ce que vous pouvez vous attendre à voir dans un environnement réel :



Dans la section en surbrillance ci-dessus, nous pouvons voir la première offre. Puisque nous regardons le carnet pour BTCUSDT, le nombre supérieur est le prix que quelqu'un est prêt à payer pour votre BTC. Vous trouverez ci-dessous le montant que les acheteurs sont prêts à payer. Cela nous dit, par conséquent, que cet ordre demande 0,999 BTC à un taux de 9704,65 USDT par BTC. Si nous continuions à faire défiler la page vers le bas, le prix de la demande diminuerait, représentant les acheteurs qui seraient prêts à payer moins cher.

L'offre la plus élevée sera naturellement la plus intéressante si vous cherchez à vendre au meilleur prix. Cela dit, si vous essayez par exemple de vendre au marché 3 BTC, vous ne pourrez vendre que 0,999 BTC à ce prix. Vous devrez accepter les offres suivantes (moins chères) jusqu'à ce que l'ensemble de votre ordre soit rempli.



Continuez à défiler, et vous verrez les demandes. Elles sont fonctionnellement similaires aux offres, sauf qu'elles représentent des ordres de vente de BTC en échange d'USDT.


Passer un ordre de test

Nous allons maintenant passer un ordre test.

POST api/v3/order/test

Même si nous n'utilisons que les fonds du Testnet, cette requête ne permettra pas de passer un ordre. Elle peut s'avérer utile pour tester les ordres avant de les envoyer réellement. Vous la trouverez sous Trader > Nouvel ordre de test (TRADE).



Vous pouvez voir que nous avons beaucoup plus de paramètres à configurer. Passons en revue ceux qui sont cochés :


  • symbole : nous avons déjà vu celui-ci. Il s'agit de la paire que vous souhaitez trader.

  • side : ici, vous indiquez si vous voulez ACHETER ou VENDRE. Avec la paire BTCUSDT, BUY indique que vous voulez acheter des BTC pour USDT, tandis que SELL permet de vendre des BTC pour USDT.

  • type : le type d'ordre que vous voulez envoyer. Valeurs possibles (détails ici) :

    • LIMIT

    • MARKET

    • STOP_LOSS

    • STOP_LOSS_LIMIT

    • TAKE_PROFIT

    • TAKE_PROFIT_LIMIT

    • LIMIT_MAKER

  • timeInForce: ce paramètre définit comment vous souhaitez que l'ordre s'exécute :

    • GTC (bon jusqu'à annulation) : peut-être la configuration la plus populaire, GTC s'assurera que votre ordre est valide jusqu'à ce qu'il soit traité ou jusqu'à ce que vous l'annuliez.

    • FOK (fill or kill) : FOK demande à l'exchange d'exécuter un ordre en une seule fois. Si l'exchange ne peut pas le faire, l'ordre est immédiatement annulé.

    • IOC (immédiat ou annulation) : la totalité ou une partie de l'ordre doit être exécutée immédiatement ou l'ordre sera annulé. Contrairement à l'ordre FOK, les ordres ne sont pas annulés s'ils peuvent être partiellement exécutés.

  • quantity : il s'agit tout simplement la quantité de l'actif que vous souhaitez acheter ou vendre.

  • price : le prix auquel vous voulez vendre. Pour la paire BTCUSDT, il est exprimé en USDT.

  • newClientOrderId : identifiant de l'ordre. Ce champ n'est pas obligatoire, mais vous pouvez le définir sur un identifiant qui facilitera les requêtes ultérieures. S'il vous ne le renseignez pas, il sera défini automatiquement par l'exchange.

OK ! Créons un ordre test maintenant. Nous allons utiliser les valeurs générées automatiquement : un ordre limite pour vendre 0,1 BTC pour USDT à 9000 $. Cliquez sur Envoyer. Si cela a abouti, nous recevrons simplement {} en réponse.

 

Passer un ordre réel

Il est temps de passer un faux ordre authentique.

POST /api/v3/order

Accédez à Trader > Nouvel ordre. Vous êtes maintenant familier avec les ordres de test, donc les paramètres ici ne seront pas nouveaux. Laissons toutes les valeurs telles quelles, mais puisque nous sommes haussiers, nous allons changer le prix de vente à 40 000 $. Modifiez la valeur du prix pour refléter ceci. Cliquez ensuite sur Envoyer.

Votre réponse renvoie un ensemble de détails sur l'ordre si la requête est correcte.


Vérifier le statut d'un ordre ouvert

Nous avons obtenu la confirmation que l'ordre a été passé dans la section précédente, mais que faire si nous voulons vérifier son statut à nouveau ? Nous avons plusieurs requêtes à notre disposition.

GET /api/v3/openOrders

Vous le trouverez dans Trader > Ordres actuellement ouverts (USER_DATA). BTCUSDT est sélectionné par défaut. Si vous cliquez sur Envoyer, vous recevrez tous vos ordres BTCUSDT ouverts (vous ne devriez voir que celui que nous avons défini précédemment). Vous pouvez choisir de ne pas spécifier de symbole, ce qui renverra tous vos ordres ouverts.

GET /api/v3/allOrders

Trader > Tous les ordres (USER_DATA) vous donne un aperçu de tous les ordres, pas seulement ceux qui sont ouverts. Ici, vous devez renseigner un symbole. orderId, startTime, endTime et limit sont des paramètres facultatifs qui peuvent vous aider à affiner votre recherche. Nous ne les utiliserons pas ici, alors désélectionnez-les. Appuyez sur Envoyer, et vous verrez la même réponse que précédemment. Si vous aviez des ordres fermés ou annulés, vous les verrez également ici.


Enfin, nous pouvons interroger des ordres spécifiques avec :

GET /api/v3/order

Pour cela, accédez à Trader > Interroger les ordres (USER_DATA). Vous devrez fournir l'identifiant de l'ordre ou l'identifiant origClientOrderId (la balise facultative « newClientOrderId » que vous pouvez ajouter aux ordres). Décochez orderId. Pour origClientOrderId, nous allons fournir la balise par défaut « my_order_id_1 ». Remplissez le champ et cliquez sur Envoyer pour obtenir la réponse.


Annuler un ordre

Après un certain temps, nous pouvons décider que le prix cible de 40 000 $ est un peu trop optimiste, c'est pourquoi nous voulons l'annuler. Dans ce cas, nous utiliserions :

DELETE /api/v3/order

Sous Trade > Annuler un ordre vous trouverez une requête qui nous permettra d'isoler les ordres pour les annuler. Décochez orderId et newClientOrderId et passez « my_order_id_1 » comme valeur pour origClientOrderId.

Lorsque vous envoyez cette demande, l'ordre est renvoyé. Si vous faites défiler la page jusqu'à « status », vous verrez qu'il est effectivement annulé. Pour confirmer cela, utilisez à nouveau le point de terminaison GET /api/v3/openOrders (vous donnant une liste vide) ou GET /api/v3/order avec l'identifiant origClientOrderId.


Passer un ordre qui s'exécute instantanément

Notre ordre précédent n'a pas été exécuté, car il s'agissait d'un ordre limite qui ne se déclencherait que lorsque le prix du BTC atteindrait 40 000 $. Avec un ordre au marché, nous ordonnons « d'acheter/vendre à n'importe quel prix auquel l'actif est actuellement en train de s'échanger ». L'odre va s'exécuter instantanément.

Pour cela, revenons à Trader > Nouvel ordre. Nous allons utiliser à titre de démonstration le type de réponse (newOrderRespType), qui est un paramètre que nous pouvons modifier en fonction de la réponse que nous voulons obtenir du serveur. Il y a trois options ici : ACK, RESULT, ou FULL. Vous pouvez voir des exemples de chaque réponse ici. Nous allons opter pour ACK, qui nous donnera un simple accusé de réception de l'ordre.

Vous pouvez voir ci-dessous que nous sommes sur le point de soumettre un ordre au marché pour vendre du BNB pour du BUSD au cours actuel du marché.



Notez que la réponse nous donne très peu d'informations :



Vous pouvez vérifier que l'ordre a été traité avec le point de terminaison /api/v3/allOrders.


Consulter vos trades

Examinons enfin le point de terminaison pour consulter vos trades :

GET /api/v3/myTrades

Elle se trouve sous Trader > Liste des trades du compte (USER_DATA). Elle vous permet de consulter chaque trade pour un symbole particulier. Si vous voulez voir tous vos trades pour le symbole par défaut (BTCUSDT), décochez simplement startTime, endTime et fromId. La réponse renvoie jusqu'à 500 trades. Il vous suffit d'ajuster limit si vous souhaitez en voir plus.


Débogage avec Postman

Dans Postman, il est possible de consulter la requête et la réponse HTTP brutes.



Ce menu ouvre la console Postman, qui affiche les détails de chaque requête.



Conclusion

Le but de ce guide était de vous présenter l'API Binance sans avoir à écrire une seule ligne de code. Si vous avez suivi, vous devriez maintenant être en mesure de demander et envoyer des informations.

Dans les prochaines versions de cette série, nous présenterons quelques concepts de codage de base qui nous permettront d'automatiser l'achat et la vente de cryptomonnaies et d'autres actifs numériques.

Vous avez des questions ? Rendez-vous sur le forum de la communauté des développeurs Binance, ou consultez la documentation.