Conţinut
Introducere
Cerințe preliminare
Testați cheile de rețea
Descărcați și instalați Postman
Crearea unui mediu
Importați o colecție
Executarea cererilor
Gânduri finale
Introducere
Înțelegerea și utilizarea API-ului de tranzacționare cu criptomonede poate deschide o lume de posibilități atunci când vine vorba de intrarea și ieșirea din poziții. Cu niște cunoștințe de bază de programare, vă puteți conecta la backend-ul bursei pentru a vă automatiza strategiile de tranzacționare. Ocolind site-ul web, puteți ajunge mult mai rapid la motorul de potrivire pentru aplicații de înaltă performanță.
Scopul acestei serii este de a vă prezenta API-ul REST Binance și de a vă învăța cum să interacționați cu acesta. În cele din urmă, ar trebui să fii încrezător în capacitatea ta de a interoga piețele și pozițiile și de a plasa o serie de tipuri diferite de ordine.
În acest articol, vom folosi Postman pentru a comunica cu schimbul. Nu vă faceți griji - nu vom pune bani reali în pericol.
Cerințe preliminare
Testați cheile de rețea
Vom folosi un testnet în scopurile noastre. Acest lucru ne va oferi niște fonduri care nu au valoare reală pentru a experimenta. Ele funcționează exact ca monede și jetoane reale, așa că odată ce te obișnuiești cu API-ul, poți începe să îl folosești pentru a tranzacționa bani reali.
Începeți prin a accesa rețeaua de testare la fața locului.
Trebuie să fiți conectat cu un cont GitHub pentru a obține acces. Creează-l dacă nu ai făcut-o deja.
Faceți clic pe „Autentificare” și conectați-vă cu GitHub.
În secțiunea „Chei API”, veți vedea că nu aveți chei înregistrate. Faceți clic pe Generare HMAC_SHA256 Key pentru a genera o pereche.
Pe ecranul următor, dați cheilor o etichetă. Numiți-le cum doriți și faceți clic pe „Generează”.
Vi se vor prezenta două chei: cheia API și cheia secretă. Este important să le scrieți acum. Dacă nu, va trebui să începeți din nou procesul de generare a cheilor. Vă recomandăm să le salvați într-o aplicație de luare de note de pe computer pentru a le copia mai târziu.
Notă: etichetarea cheilor este ceva ce ar trebui să faceți atunci când utilizați un schimb live pentru a gestiona diferite chei. Contul dvs. poate avea mai multe chei cu permisiuni diferite. Dacă utilizați mai mulți roboți de tranzacționare, utilizarea cheilor individuale cu etichete descriptive facilitează gestionarea permisiunilor sau eliminarea cheilor individuale fără a modifica toți roboții.
Descărcați și instalați Postman
Postman este o platformă pentru colaborarea API. Acesta este un punct de plecare perfect pentru noi – vom avea acces la colecțiile de interogări Binance pentru a le testa fără a scrie o singură linie de cod.
Programul este disponibil pentru Mac, Windows și Linux. Accesați pagina Descărcări și descărcați fișierul .zip.
După aceea, găsiți-l în explorator și instalați-l. Deschideți aplicația pentru a începe. Vă rugăm să rețineți că vă puteți crea un cont pentru a vă conecta, dar acest lucru nu este necesar. Dacă doriți să săriți peste acest pas, trebuie doar să selectați opțiunea corespunzătoare din partea de jos a ferestrei.
Crearea unui mediu
În acest moment, ar trebui să aveți o interfață similară cu următoarea.

În primul rând, trebuie să creați un mediu. Este doar o modalitate de a adăuga variabile la setul de interogări cu care vom lucra. Pentru a face acest lucru, mai întâi trebuie să obținem câteva informații din depozitul Binance GitHub. Accesați aici și descărcați fișierul .zip.

Descărcarea nu va dura mult. Găsiți-l în exploratorul de fișiere și dezarhivați-l. Apoi, ne putem întoarce la Postman.

Faceți clic pe pictograma roată din colțul din dreapta sus (așa cum se arată mai sus). Veți vedea o fereastră pop-up „Gestionați mediile”.
Selectați „Importați” și navigați la folderul nou dezarhivat (binance-postman-api).
Apoi intrați în folderul de mediu.
Acum veți vedea două fișiere (unul pentru rețeaua principală, unul pentru rețeaua de testare). Căutăm binance_com_spot_testnet_api.postman_environment.json. Asigurați-vă că o alegeți pe cea corectă, deoarece cheile noastre nu funcționează cu altele.

Aproape gata. Faceți clic pe „Binance Spot Testnet API” și veți vedea variabilele de mai jos. Editați cei doi parametri evidențiați cu roșu inserând cheile pe care le-ați salvat mai devreme. Faceți clic pe „Actualizare” și ieșiți din fereastra pop-up.

Pe acest ecran, lăsați câmpurile „marca temporală” și „semnătură” necompletate. Aceste două valori vor fi generate automat la fiecare solicitare.
Mai este ceva de făcut. În dreapta pictogramei roată pe care am făcut clic pentru a seta mediul mai devreme, veți vedea un meniu drop-down care spune în prezent „Fără mediu”. Faceți clic pe el și selectați „Binance Spot Testnet API”.
Importați o colecție
Acum vom importa o colecție care este un set mare de interogări care fac munca grea pentru noi. Pentru a-l încărca în mediul nostru, urmați acești pași:
Faceți clic pe „Importați” în colțul din stânga sus.
În fereastra pop-up, în fila „Fișier”, selectați „Încărcați fișiere”.
Căutăm din nou folderul binance-postman-api. Găsiți și deschideți-l.
De data aceasta, tastați „colecții” în subdirector.
Iată din nou două fișiere. Unul pentru lucrul cu API-ul futures. Dar lucrăm cu spot, așa că trebuie să selectați fișierul binance_spot_api_v1.postman_collection.json.
Ar trebui să vedeți acum un ecran de confirmare care identifică importul ca format de colecție Postman. Selectați „Import”.
În fila Colecții din partea stângă a ferestrei veți observa acum că avem un folder cu peste 100 de solicitări. Felicitări! Totul este bine. În secțiunea următoare, vom analiza ce solicitări putem trimite.
Executarea cererilor
Dacă extindeți folderele din fila Colecții, veți vedea că avem o mulțime de interogări diferite pe care le putem face. Din codificarea culorilor, puteți vedea că putem folosi trei tipuri de metode:
GET: Metoda „GET” este folosită pentru a prelua date de pe server. Îl vom folosi pentru a afla informații despre soldul contului dvs., prețurile activelor etc.
POST: De obicei folosim metoda „POST” pentru a crea informații pe server. Acest lucru este necesar pentru lucruri precum plasarea comenzilor, solicitarea de retrageri etc.
DELETE: Metoda „DELETE” este o solicitare către server de a șterge informații. Va fi util pentru anularea comenzilor.
Căutați o listă de simboluri și reguli de tranzacționare
E timpul pentru prima noastră întrebare! Vom obține simbolurile care pot fi tranzacționate pe bursă și regulile de tranzacționare:
GET /exchangeInfo
Această solicitare nu necesită parametri suplimentari - o puteți copia și lipi în bara de adrese și veți primi un răspuns. Postman facilitează vizualizarea și modificarea interogărilor în care includem mai mulți parametri.
Pentru a descărca această solicitare, selectați Market > Exchange Information. Va apărea următoarea filă:

Nu trebuie să facem nimic altceva aici, așa că faceți clic pe „Trimite”. Vei primi raspunsul:

În secțiunea evidențiată de sus, veți vedea informații importante:
starea răspunsului (200 înseamnă că cererea a reușit, 400-499 înseamnă că avem o problemă)
timpul necesar pentru a primi un răspuns (mai puțin de o secundă)
dimensiunea răspunsului (~22KB).
Al doilea câmp conține partea principală a răspunsului. Este frumos imprimat pentru a-l face puțin mai ușor pentru ochi. Conține informații despre schimbul în sine, precum și despre perechile pe care le puteți tranzacționa și sumele minime/maxime ale acestora.
Se pare că există o mulțime de informații, dar formatul facilitează lucrul cu ea în mod programatic. Când scrieți scripturi de interacțiune, puteți selecta cu ușurință anumite proprietăți ale anumitor elemente din răspuns.
Verificarea soldului contului
Să verificăm ce active avem și câte:
GET /contAceastă solicitare poate fi găsită în „Comerț” > „Informații despre cont”. Faceți clic pe el și veți vedea un aspect similar cu cel precedent. Cu toate acestea, veți observa și că avem două variabile noi: „stamp” și „semnătură”. Semnătura este o măsură de securitate. Deoarece acum solicităm informații confidențiale, acest lucru va dovedi că suntem proprietarul contului.
Marca temporală spune serverului când a fost trimisă cererea. Deoarece rețelele pot fi nesigure sau defectuoase, serverul poate primi solicitarea noastră mult mai târziu decât se aștepta. Dacă a trecut prea mult timp, aceasta va respinge cererea. Puteți specifica cât timp doriți să așteptați folosind parametrul „recvWindow”, care este implicit la 5.000 de milisecunde.
Poștașul se ocupă de crearea ambelor domenii pentru noi. Faceți clic pe „Trimite” și veți primi un răspuns. Sub Solduri, ar trebui să vedeți șase active - BNB, BTC, BUSD, ETH, LTC și TRX. Soldul va fi împărțit în liber și blocat. Nu am blocat nimic încă, așa că toate activele dvs. ar trebui să fie gratuite.
Felicitări pentru noua ta avere (inexistentă)!
Cum să aflați prețul actual al unui simbol
Putem obține prețul actual al unui activ în diferite moduri. Poate cel mai simplu este cu o astfel de solicitare:
GET /api/v3/ticker/24hrDupă cum probabil ați ghicit, acest lucru ne va oferi informații despre prețurile activelor din ultimele 24 de ore. Găsiți-l în „Piață” > „Statistici de modificare a prețului Ticker 24 de ore”. Perechea implicită pe care o vedem ca variabilă simbol este BTCUSDT.
Îl puteți trimite chiar acum pentru a vedea o defalcare a informațiilor despre prețuri. De asemenea, puteți schimba simbolul (în BNBBUSD, LTCUSDT etc.) sau puteți debifa variabila pentru a returna date pentru 40 de perechi.
Avem, de asemenea, un apel mai simplu („Piață” > „Symbol Price Ticker”) care returnează prețul curent la care activul se tranzacționează:
GET /api/v3/priceCa și înainte, puteți modifica variabila simbol sau o puteți elimina complet și puteți obține cel mai recent preț pentru toate simbolurile.
Verificarea profunzimii actuale a registrului de comenzi
Profunzimea registrului de comenzi (numită și adâncimea pieței sau DOM) ne poate spune multe despre piață. Vom efectua un apel pentru a returna informații utile:
GET api/v3/depthCând îl trimitem cu valorile implicite ("Piață" > "Carnet de comenzi"), primim un răspuns care ne spune oferta și cerem BTCUSDT. Serverul testnet nu va scoate la fel de multe date ca cel real, așa că mai jos este o captură de ecran a ceea ce v-ați aștepta să vedeți într-un mediu real:

În secțiunea evidențiată mai sus, vedem prima problemă. Deoarece ne uităm la registrul pentru BTCUSDT, numărul de sus este prețul pe care cineva este dispus să-l plătească pentru BTC-ul tău. Mai jos este suma pe care sunt dispuși să o cumpere. Deci, acest lucru sugerează că această comandă cere 0,999 BTC la o rată de 9.704,65 USDT per BTC. Dacă ar fi să continuăm derularea în jos, am vedea prețul ofertei scăzând - ceea ce înseamnă că cumpărătorul va fi plătit mai puțin.
Cea mai bună ofertă va fi desigur cea mai atractivă dacă vrei să faci profit. Cu toate acestea, dacă încercați să vindeți pe piață, să spunem 3 BTC, veți putea vinde doar 0,999 BTC la cel mai bun preț. Va trebui să acceptați alte oferte (mai ieftine) până când comanda dvs. este complet completată.

Continuați să derulați și veți vedea întrebarea. Din punct de vedere funcțional, ele sunt similare cu ofertele, cu excepția faptului că sunt ordine de vânzare BTC pentru USDT.
Plasarea unei comenzi de testare
Acum vom plasa o comandă de testare.
POST api/v3/order/testChiar dacă folosim doar fonduri testnet, această solicitare nu va avea ca rezultat plasarea unei comenzi. Acest lucru poate fi util pentru testarea comenzilor înainte de a le trimite. Găsiți-l în „Trade” > „Test New Order (TRADE)”.

După cum puteți vedea, avem și mai mulți parametri implicați. Să trecem prin cele marcate:
simbol - am mai văzut asta. Aceasta este perechea pe care doriți să o tranzacționați.
lateral – aici indicați dacă doriți să cumpărați sau să vindeți. Pentru perechea BTCUSDT, BUY indică faptul că doriți să cumpărați BTC pentru USDT, în timp ce SELL va vinde BTC pentru USDT.
tip – tipul de comandă pe care doriți să o trimiteți. Valori posibile (detalii aici):
LIMITĂ
PIAŢĂ
STOP_LOSS
STOP_LOSS_LIMIT
TAKE_PROFIT
TAKE_PROFIT_LIMIT
LIMIT_MAKER
timeInForce – acest parametru exprimă modul în care doriți să fie executată comanda:
GTC (Good Until Canceled) este poate cea mai populară setare. GTC garantează că comanda dumneavoastră este valabilă până când este executată sau până când o anulați.
FOK (Execute sau Cancel) – FOK instruiește schimbul să execute imediat ordinul. Dacă schimbul nu poate face acest lucru, comanda va fi anulată imediat.
IOC (Execute Immediately sau Cancel) – Comanda trebuie executată în întregime sau parțial imediat sau va fi anulată. Spre deosebire de FOK, ordinele nu sunt anulate dacă pot fi executate parțial.
cantitatea este pur și simplu valoarea activului pe care doriți să îl cumpărați sau să îl vindeți.
preț – prețul la care doriți să vindeți. Pentru perechea BTCUSDT, aceasta este exprimată în USDT.
newClientOrderId – identificatorul comenzii. Acesta nu este un câmp obligatoriu, dar îl puteți seta la un identificator care va simplifica interogarea mai târziu. În caz contrar, este generat aleatoriu pe schimb.
Bun! Acum să creăm o comandă de testare. Vom folosi valorile generate automat: un ordin limită de vânzare de 0,1 BTC per USDT la un preț de 9.000 USD. Faceți clic pe „Trimite”. Dacă totul a avut succes, vom primi doar {{}} ca răspuns.
Plasarea unei comenzi reale
E timpul să plasezi o comandă falsă.
POST /api/v3/orderAccesați Comerț > Comandă nouă. Sunteți deja familiarizat cu comenzile de testare, așa că parametrii de aici nu vă vor surprinde. Să lăsăm toate valorile așa cum sunt, dar să schimbăm prețul la care vindem la 40.000 USD. Modificați valoarea prețului pentru a reflecta acest lucru. Apoi faceți clic pe „Trimite”.
În caz de succes, răspunsul dumneavoastră va conține informații detaliate despre comandă.
Verificarea stării unei comenzi deschise
Am primit confirmarea că comanda a fost plasată în secțiunea anterioară, dar dacă vrem să o verificăm mai târziu? Avem la dispoziție mai multe solicitări.
GET /api/v3/openOrdersÎl veți găsi în „Trade” > „Ordine deschise curente (USER_DATA)”. BTCUSDT este selectat implicit. Dacă apăsați „Trimite”, veți primi toate comenzile BTCUSDT deschise (până acum ar trebui să vedeți doar pe cea pe care am setat-o mai devreme). Puteți omite simbolul, care va returna toate comenzile deschise.
GET /api/v3/allOrders„Trade” > „Toate comenzile (USER_DATA)” vă oferă o imagine de ansamblu asupra tuturor comenzilor, nu doar a celor deschise. Aici trebuie să specificați simbolul. „orderId”, „startTime”, „endTime” sunt parametri opționali care vă pot ajuta să vă rafinați căutarea. Le vom lăsa aici, așa că debifați casetele. Faceți clic pe „Trimite” și veți vedea același răspuns ca înainte. Dacă ați avut comenzi închise sau anulate, le veți vedea și aici.
În cele din urmă, putem solicita comenzi specifice folosind:
GET /api/v3/orderObțineți-l sub „Trade” > „Query Order (USER_DATA)”. Va trebui să specificați fie „orderId”, fie „origClientOrderId” (o etichetă opțională „newClientOrderId” care poate fi adăugată la comenzi). Debifați „orderId”. Pentru „origClientOrderId” vom furniza eticheta implicită care a fost folosită înainte - „my_order_id_1”. Completați câmpul și faceți clic pe „Trimite” pentru a primi un răspuns.
Anularea comenzii
După ceva timp, putem decide că obiectivul de 40.000 USD este prea optimist, așa că dorim să anulăm comanda. În acest caz vom folosi:
ȘTERGE /api/v3/orderSub „Comerț” > „Anulare comandă”, o interogare care ne va permite să evidențiem comenzile pentru anulare. Debifați „orderId” și „newClientOrderId” și transmiteți „my_order_id_1” ca valoare pentru „origClientOrderId”.
Când trimiteți această solicitare, comanda va fi returnată. Dacă derulați în jos la „stare”, veți vedea că este într-adevăr anulat. Pentru a confirma acest lucru, utilizați din nou punctul final GET /api/v3/openOrders (cu o listă goală) sau GET /api/v3/order cu origClientOrderId .
Încețoșarea comenzii, care este completată instantaneu
Ordinul nostru anterior nu a fost executat deoarece a fost un ordin limită care va funcționa numai atunci când prețul BTC va ajunge la 40.000 USD. În cazul unui ordin de piață, spunem în esență „cumpărați/vindeți la orice preț la care se tranzacționează activul în prezent”. Această comandă se va completa instantaneu.
Pentru aceasta, să revenim la „Comerț” > „Comandă nouă”. Vom demonstra tipul de răspuns (newOrderRespType), care este un parametru pe care îl putem configura în funcție de răspunsul pe care vrem să-l primim de la server. Există trei opțiuni aici: ACK, RESULT sau FULL - puteți vedea exemple pentru fiecare răspuns aici. Vom folosi un „ACK” care ne va oferi o simplă confirmare că comanda a fost primită.
Mai jos puteți vedea că vom trimite un ordin de piață pentru a vinde BNB pentru BUSD la prețul actual de piață.

Rețineți că răspunsul ne oferă informații minime:

Puteți verifica dacă comanda a fost completată prin punctul final /api/v3/allOrders.
Verificarea ofertelor dvs
În cele din urmă, să ne uităm la un punct final pentru validarea tranzacțiilor dvs.:
GET /api/v3/myTradesSolicitarea se află în secțiunea „Trade” > „Account Trade List (USER_DATA)”. Vă permite să verificați fiecare tranzacție printr-un simbol specific. Dacă doriți să vedeți toate tranzacțiile pentru simbolul implicit (BTCUSDT), debifați „startTime”, „endTime” și „fromId”. Răspunsul va reveni până la 500 de tranzacții - doar schimbați limita dacă doriți să vedeți mai multe.
Depanare cu Postman
În Postman, puteți expune în plus cererea și răspunsul HTTP brut.

Acest meniu va deschide consola Postman, care afișează detaliile fiecărei solicitări.

Gânduri finale
Scopul acestui ghid este de a vă prezenta API-ul Binance fără a scrie o singură linie de cod. Dacă ați parcurs toți pașii necesari, acum ar trebui să înțelegeți cum putem solicita și trimite informații.
În următoarele părți ale acestei serii, vom introduce câteva concepte de codare de bază care ne permit să automatizăm cumpărarea și vânzarea criptomonedelor și a altor active digitale.
Mai ai întrebări? Vizitați forumul comunității de dezvoltatori Binance în creștere sau consultați documentația.
