Treść

  • Wstęp

  • Warunki wstępne

    • Przetestuj klucze sieciowe

    • Pobierz i zainstaluj Postmana

  • Tworzenie środowiska

  • Zaimportuj kolekcję

  • Realizacja żądań

  • Końcowe przemyślenia


Wstęp

Zrozumienie i wykorzystanie interfejsów API do handlu kryptowalutami może otworzyć świat możliwości w zakresie wchodzenia i wychodzenia z pozycji. Posiadając podstawową wiedzę programistyczną, możesz połączyć się z backendem giełdy, aby zautomatyzować swoje strategie handlowe. Pomijając stronę internetową, możesz znacznie szybciej dostać się do odpowiedniego silnika dla aplikacji o wysokiej wydajności.

Celem tej serii jest zapoznanie Cię z API REST Binance i nauczenie Cię, jak z nim współdziałać. Podsumowując, powinieneś mieć pewność, że potrafisz badać rynki i swoje pozycje oraz składać wiele różnych typów zleceń.

W tym artykule będziemy używać Postmana do komunikacji z giełdą. Nie martw się – nie narażamy prawdziwych pieniędzy na ryzyko.


Warunki wstępne

Przetestuj klucze sieciowe

Do naszych celów użyjemy sieci testowej. Dzięki temu zyskamy trochę środków, które nie mają realnej wartości i z którymi będziemy mogli eksperymentować. Działają dokładnie tak, jak prawdziwe monety i tokeny, więc gdy już przyzwyczaisz się do API, możesz zacząć używać go do handlu prawdziwymi pieniędzmi.


  1. Zacznij od przejścia do sieci testów Spot.

  2. Aby uzyskać dostęp, musisz zalogować się na konto GitHub. Utwórz go, jeśli jeszcze tego nie zrobiłeś.

  3. Kliknij „Uwierzytelnij” i zaloguj się w GitHub.

  4. W sekcji „Klucze API” zobaczysz, że nie masz zarejestrowanych kluczy. Kliknij opcję Generuj klucz HMAC_SHA256, aby wygenerować parę.

  5. Na następnym ekranie nadaj klawiszom etykietę. Nadaj im dowolną nazwę i kliknij „Generuj”.

  6. Otrzymasz dwa klucze: klucz API i tajny klucz. Ważne jest, aby je teraz zapisać. Jeśli tego nie zrobisz, będziesz musiał ponownie rozpocząć proces generowania klucza. Zalecamy zapisanie ich w aplikacji do robienia notatek na komputerze, aby móc je później łatwo skopiować.

Uwaga: etykietowanie kluczy jest czymś, co powinieneś zrobić, gdy używasz giełdy na żywo do zarządzania różnymi kluczami. Twoje konto może mieć wiele kluczy z różnymi uprawnieniami. Jeśli używasz wielu botów handlowych, użycie pojedynczych kluczy z opisowymi etykietami ułatwia zarządzanie uprawnieniami lub usuwanie poszczególnych kluczy bez zmiany wszystkich botów.


Pobierz i zainstaluj Postmana

Postman to platforma do współpracy API. Jest to dla nas idealny punkt wyjścia – będziemy mieli dostęp do kolekcji zapytań Binance do testowania bez pisania ani jednej linijki kodu.

Program jest dostępny dla komputerów Mac, Windows i Linux. Przejdź do strony Pobieranie i pobierz plik .zip.

Następnie znajdź go w eksploratorze i zainstaluj. Otwórz aplikację, aby rozpocząć. Pamiętaj, że możesz utworzyć konto, aby się zalogować, ale nie jest to wymagane. Jeśli chcesz pominąć ten krok, wystarczy wybrać odpowiednią opcję na dole okna.


Tworzenie środowiska

W tym momencie powinieneś mieć interfejs podobny do poniższego.



Najpierw musisz stworzyć środowisko. To po prostu sposób na dodanie zmiennych do zestawu zapytań, z którymi będziemy pracować. Aby to zrobić, musimy najpierw uzyskać pewne informacje z repozytorium Binance GitHub. Przejdź tutaj i pobierz plik .zip.



Pobieranie nie potrwa długo. Znajdź go w eksploratorze plików i rozpakuj. Następnie możemy wrócić do Postmana.



Kliknij ikonę koła zębatego w prawym górnym rogu (jak pokazano powyżej). Zobaczysz wyskakujące okno „Zarządzaj środowiskami”.

  1. Wybierz „Importuj” i przejdź do nowo rozpakowanego folderu (binance-postman-api).

  2. Następnie wejdź do folderu środowiska.

  3. Zobaczysz teraz dwa pliki (jeden dla sieci głównej, drugi dla sieci testowej). Poszukujemy binance_com_spot_testnet_api.postman_environment.json. Upewnij się, że wybierasz właściwy, ponieważ nasze klucze nie współpracują z innymi.



Prawie skończone. Kliknij „Binance Spot Testnet API”, a zobaczysz poniższe zmienne. Edytuj dwa parametry zaznaczone na czerwono, wstawiając zapisane wcześniej klucze. Kliknij „Aktualizuj” i wyjdź z wyskakującego okna.



Na tym ekranie pozostaw pola „znacznik czasu” i „podpis” puste. Te dwie wartości będą automatycznie generowane przy każdym żądaniu.

Jest jeszcze coś do zrobienia. Po prawej stronie ikony koła zębatego, którą kliknęliśmy wcześniej, aby skonfigurować środowisko, zobaczysz menu rozwijane, które obecnie zawiera komunikat „Brak środowiska”. Kliknij na niego i wybierz „Binance Spot Testnet API”.


Zaimportuj kolekcję

Teraz zaimportujemy kolekcję, która jest dużym zestawem zapytań, które wykonują za nas całą ciężką pracę. Aby przesłać go do naszego środowiska, wykonaj następujące kroki:

  1. Kliknij „Importuj” w lewym górnym rogu.

  2. W wyskakującym oknie, w zakładce „Plik” wybierz „Prześlij pliki”.

  3. Ponownie szukamy folderu binance-postman-api. Znajdź i otwórz go.

  4. Tym razem w podkatalogu wpisz „kolekcje”.

  5. Tutaj znowu dwa pliki. Jeden do pracy z interfejsem API kontraktów futures. Ale pracujemy ze spotem, więc musisz wybrać plik binance_spot_api_v1.postman_collection.json.

  6. Powinieneś teraz zobaczyć ekran potwierdzenia identyfikujący import w formacie odbioru Postman. Wybierz „Importuj”.

W zakładce „Kolekcje” po lewej stronie okna zauważysz teraz, że mamy folder z ponad 100 żądaniami. Gratulacje! W porządku. W następnej sekcji sprawdzimy, jakie żądania możemy wysyłać.


Realizacja żądań

Jeśli rozwiniesz foldery na karcie Kolekcje, zobaczysz, że mamy mnóstwo różnych zapytań, które możemy wykonać. Z kodowania kolorami widać, że możemy zastosować trzy rodzaje metod:


  • GET: Metoda „GET” służy do pobierania danych z serwera. Wykorzystamy go, aby uzyskać informacje o saldzie Twojego konta, cenach aktywów itp.

  • POST: Zwykle używamy metody „POST” do tworzenia informacji na serwerze. Jest to konieczne do składania zamówień, żądania wypłat itp.

  • DELETE: Metoda „DELETE” to żądanie skierowane do serwera o usunięcie informacji. Przyda się przy anulowaniu zamówień.


Wyszukaj listę symboli i zasad handlu

Czas na nasze pierwsze zapytanie! Otrzymamy symbole, którymi można handlować na giełdzie i zasady handlu:

POBIERZ /exchangeInfo


To żądanie nie wymaga żadnych dodatkowych parametrów - możesz je skopiować i wkleić w pasku adresu, a otrzymasz odpowiedź. Postman ułatwia przeglądanie i modyfikowanie zapytań, w których uwzględniamy wiele parametrów.

Aby pobrać to żądanie, wybierz Rynek > Informacje o giełdzie. Pojawi się następująca zakładka:



Nie musimy tutaj robić nic więcej, więc kliknij „Wyślij”. Otrzymasz odpowiedź:



W górnej podświetlonej sekcji zobaczysz ważne informacje:

  • status odpowiedzi (200 oznacza, że ​​żądanie zakończyło się sukcesem, 400-499 oznacza, że ​​mamy problem)

  • czas potrzebny na otrzymanie odpowiedzi (mniej niż sekunda)

  • rozmiar odpowiedzi (~22 KB).


Drugie pole zawiera główną część odpowiedzi. Jest pięknie wydrukowany, aby był trochę mniej męczący dla oczu. Zawiera informacje o samej giełdzie, a także o parach, którymi możesz handlować i ich minimalnych/maksymalnych kwotach.

Wydaje się, że informacji jest dużo, ale format ułatwia pracę z nimi programowo. Pisząc skrypty interakcji, możesz łatwo wybrać z odpowiedzi określone właściwości poszczególnych elementów.


Sprawdzanie salda konta

Sprawdźmy jakie mamy aktywa i ile:

POBIERZ /konto

Żądanie to można znaleźć w sekcji „Handel” > „Informacje o koncie”. Kliknij na niego, a zobaczysz układ podobny do poprzedniego. Jednak zauważysz również, że mamy dwie nowe zmienne: „znacznik czasu” i „podpis”. Podpis jest środkiem bezpieczeństwa. Ponieważ teraz prosimy o informacje poufne, będzie to dowód, że jesteśmy właścicielem konta.

Znacznik czasu informuje serwer, kiedy żądanie zostało wysłane. Ponieważ sieci mogą działać zawodnie lub nie działać, serwer może otrzymać nasze żądanie znacznie później, niż oczekiwano. Jeśli minęło zbyt dużo czasu, żądanie zostanie odrzucone. Możesz określić, jak długo chcesz czekać, używając parametru „recvWindow”, który domyślnie wynosi 5000 milisekund.

Postman zajmuje się za nas utworzeniem obu tych pól. Kliknij „Wyślij”, a otrzymasz odpowiedź. W obszarze Salda powinieneś zobaczyć sześć aktywów – BNB, BTC, BUSD, ETH, LTC i TRX. Saldo zostanie podzielone na wolne i zablokowane. Jeszcze niczego nie zablokowaliśmy, więc wszystkie Twoje zasoby powinny być bezpłatne.

Gratulujemy nowego (nieistniejącego) bogactwa!


Jak sprawdzić aktualną cenę symbolu

Aktualną cenę składnika aktywów możemy uzyskać na różne sposoby. Być może najprościej jest z taką prośbą:

POBIERZ /api/v3/ticker/24hr

Jak można się domyślić, da nam to informacje o cenach aktywów z ostatnich 24 godzin. Znajdź je w „Rynek” > ​​„24-godzinne statystyki zmian cen Tickerów”. Domyślną parą, którą widzimy jako zmienną symboliczną, jest BTCUSDT.

Możesz wysłać go już teraz, aby zobaczyć zestawienie informacji o cenach. Możesz także zmienić symbol (na BNBBUSD, LTCUSDT itp.) lub możesz odznaczyć zmienną, aby zwrócić dane dla 40 par.

Mamy także prostsze wywołanie („Rynek” > ​​„Symbol Price Ticker”), które zwraca aktualną cenę, po której handluje się aktywem:

POBIERZ /api/v3/cena

Tak jak poprzednio, możesz zmienić zmienną symbolu lub całkowicie ją usunąć i uzyskać najnowszą cenę za wszystkie symbole.


Sprawdzenie aktualnej głębokości księgi zamówień

Głębokość księgi zleceń (zwana także głębokością rynku lub DOM) może nam wiele powiedzieć o rynku. Zadzwonimy, aby zwrócić przydatne informacje:

POBIERZ api/v3/głębię

Gdy wyślemy go z wartościami domyślnymi („Rynek” > ​​„Księga zamówień”), otrzymamy odpowiedź, która poinformuje nas o ofercie i zapyta o BTCUSDT. Serwer testnet nie będzie generował tak dużej ilości danych jak rzeczywisty, dlatego poniżej znajduje się zrzut ekranu przedstawiający to, czego można się spodziewać w prawdziwym środowisku:



W sekcji podkreślonej powyżej widzimy pierwszy problem. Ponieważ patrzymy na księgę BTCUSDT, najwyższa liczba to cena, którą ktoś jest skłonny zapłacić za Twoje BTC. Poniżej znajduje się kwota, którą są skłonni kupić. Sugeruje to, że w tym zamówieniu żąda się 0,999 BTC po kursie 9704,65 USDT za BTC. Gdybyśmy kontynuowali przewijanie w dół, zauważylibyśmy spadek ceny oferty - co oznacza, że ​​kupujący otrzyma mniej.

Najlepsza oferta będzie oczywiście najatrakcyjniejsza, jeśli będziesz chciał zarobić. Jeśli jednak spróbujesz sprzedać na rynku, powiedzmy 3 BTC, będziesz w stanie sprzedać tylko 0,999 BTC po najlepszej cenie. Będziesz musiał akceptować kolejne (tańsze) oferty, dopóki Twoje zamówienie nie zostanie w pełni zrealizowane.



Przewijaj dalej, a zobaczysz pytanie. Funkcjonalnie przypominają bidy, z tą różnicą, że są zleceniami sprzedaży BTC za USDT.


Złożenie zamówienia testowego

Teraz złożymy zamówienie testowe.

POST api/v3/zamówienie/test

Mimo że korzystamy tylko ze środków sieci testowej, żądanie to w rzeczywistości nie będzie skutkować złożeniem zamówienia. Może to być przydatne do testowania zamówień przed ich wysłaniem. Znajdź go w sekcji „Handel” > „Testuj nowe zamówienie (HANDEL)”.



Jak widać, mamy do czynienia z jeszcze większą liczbą parametrów. Przejdźmy przez zaznaczone:


  • symbol – widzieliśmy to już wcześniej. To jest para, którą chcesz handlować.

  • strona – tutaj wskazujesz, czy chcesz KUPIĆ, czy SPRZEDAĆ. W przypadku pary BTCUSDT KUP oznacza, że ​​chcesz kupić BTC za USDT, natomiast SPRZEDAJ będzie sprzedawać BTC za USDT.

  • typ – rodzaj zamówienia, które chcesz wysłać. Możliwe wartości (szczegóły tutaj):

    • LIMIT

    • RYNEK

    • STOP_STRATA

    • STOP_LOSS_LIMIT

    • MIEĆ ZYSK

    • TAKE_PROFIT_LIMIT

    • LIMIT_MAKER

  • timeInForce – parametr ten wyraża sposób, w jaki chcesz, aby zlecenie zostało wykonane:

    • GTC (Do odwołania) jest prawdopodobnie najpopularniejszym ustawieniem. GTC gwarantuje, że Twoje zamówienie jest ważne do momentu jego realizacji lub do momentu jego anulowania.

    • FOK (Execute or Cancel) – FOK zleca giełdzie natychmiastową realizację zlecenia. Jeżeli giełda nie będzie w stanie tego zrobić, zamówienie zostanie natychmiast anulowane.

    • IOC (Execute Natychmiast lub Anuluj) – Zamówienie musi zostać zrealizowane w całości lub w części natychmiast, w przeciwnym razie zostanie anulowane. W odróżnieniu od FOK, zlecenia nie są anulowane, jeśli można je częściowo zrealizować.

  • ilość to po prostu ilość aktywów, którą chcesz kupić lub sprzedać.

  • cena – cena, po której chcesz sprzedać. W przypadku pary BTCUSDT jest to wyrażone w USDT.

  • newClientOrderId – identyfikator zamówienia. Nie jest to pole wymagane, ale możesz ustawić mu identyfikator, który uprości późniejsze zapytanie. W przeciwnym razie jest on losowo generowany na giełdzie.

Cienki! Teraz utwórzmy zamówienie testowe. Będziemy korzystać z automatycznie wygenerowanych wartości: zlecenie sprzedaży z limitem kwoty 0,1 BTC za USDT po cenie 9000 USD. Kliknij „Wyślij”. Jeśli wszystko się powiedzie, w odpowiedzi otrzymamy po prostu {{}}.

Złożenie prawdziwego zamówienia

Czas złożyć prawdziwe fałszywe zamówienie.

POST /api/v3/zamówienie

Przejdź do opcji Handel > Nowe zamówienie. Zlecenia testowe są już Ci znane, więc parametry tutaj Cię nie zaskoczą. Zostawmy wszystkie wartości bez zmian, ale zmieńmy cenę, po której sprzedajemy, na 40 000 dolarów. Zmień wartość ceny, aby to odzwierciedlić. Następnie kliknij „Wyślij”.

Jeśli się powiedzie, Twoja odpowiedź będzie zawierać szczegółowe informacje na temat zamówienia.


Sprawdzanie statusu otwartego zamówienia

Otrzymaliśmy potwierdzenie, że zamówienie zostało złożone w poprzednim dziale, ale co jeśli będziemy chcieli to sprawdzić później? Mamy do dyspozycji kilka próśb.

POBIERZ /api/v3/openOrders

Znajdziesz je w zakładce „Handel” > „Aktualnie otwarte zamówienia (USER_DATA)”. Domyślnie wybrana jest opcja BTCUSDT. Jeśli naciśniesz „Wyślij”, otrzymasz wszystkie swoje otwarte zlecenia BTCUSDT (jak dotąd powinieneś zobaczyć tylko to, które ustawiliśmy wcześniej). Możesz pominąć symbol, który zamiast tego zwróci wszystkie otwarte zamówienia.

POBIERZ /api/v3/allOrders

„Handel” > „Wszystkie zamówienia (USER_DATA)” daje przegląd wszystkich zleceń, a nie tylko otwartych. Tutaj musisz określić symbol. „orderId”, „startTime”, „endTime” to opcjonalne parametry, które pomogą Ci zawęzić wyszukiwanie. Zostawimy je tutaj, więc odznacz pola. Kliknij „Wyślij”, a zobaczysz taką samą odpowiedź jak poprzednio. Jeśli masz zamknięte lub anulowane zamówienia, zobaczysz je również tutaj.


Wreszcie możemy poprosić o konkretne zamówienia za pomocą:

POBIERZ /api/v3/order

Zdobądź go w sekcji „Handel” > „Zapytanie o zamówienie (USER_DATA)”. Będziesz musiał określić „orderId” lub „origClientOrderId” (opcjonalny tag „newClientOrderId”, który można dodać do zamówień). Odznacz opcję „Identyfikator zamówienia”. Dla „origClientOrderId” podamy domyślny tag, który był używany wcześniej - „my_order_id_1”. Wypełnij pole i kliknij „Wyślij”, aby otrzymać odpowiedź.


Anulowanie zamówienia

Po pewnym czasie możemy uznać, że cel 40 000 dolarów jest zbyt optymistyczny, dlatego chcemy anulować zamówienie. W tym przypadku użylibyśmy:

USUŃ /api/v3/order

W sekcji „Handel” > „Anuluj zamówienie” zapytanie, które pozwoli nam wyróżnić zamówienia do anulowania. Odznacz „orderId” i „newClientOrderId” i podaj „my_order_id_1” jako wartość „origClientOrderId”.

Po wysłaniu tego żądania zamówienie zostanie zwrócone. Jeśli przewiniesz w dół do „statusu”, zobaczysz, że rzeczywiście został on anulowany. Aby to potwierdzić, użyj ponownie punktu końcowego GET /api/v3/openOrders (z pustą listą) lub GET /api/v3/order z origClientOrderId .


Rozmycie porządku, który jest wypełniany błyskawicznie

Nasze poprzednie zlecenie nie zostało zrealizowane, ponieważ było to zlecenie z limitem, które zostanie uruchomione dopiero, gdy cena BTC osiągnie 40 000 USD. W przypadku zlecenia rynkowego zasadniczo mówimy „kup/sprzedaj po dowolnej cenie, po której aktualnie notowane są aktywa”. To zamówienie zostanie zrealizowane natychmiast.

W tym celu wróćmy do „Handel” > „Nowy porządek”. Zademonstrujemy typ odpowiedzi (newOrderRespType), czyli parametr, który możemy skonfigurować w zależności od odpowiedzi, jaką chcemy otrzymać z serwera. Dostępne są trzy opcje: POTWIERDZENIE, WYNIK lub PEŁNY – tutaj możesz zobaczyć przykłady każdej odpowiedzi. Zamierzamy użyć „ACK”, które da nam proste potwierdzenie otrzymania zamówienia.

Poniżej możesz zobaczyć, że wyślemy zlecenie rynkowe sprzedaży BNB za BUSD po aktualnej cenie rynkowej.



Pamiętaj, że odpowiedź dostarcza nam minimalnych informacji:



Możesz sprawdzić, czy zamówienie zostało zrealizowane poprzez punkt końcowy /api/v3/allOrders.


Sprawdzam swoje oferty

Na koniec przyjrzyjmy się punktowi końcowemu służącemu do weryfikacji transakcji:

POBIERZ /api/v3/myTrades

Żądanie znajduje się w sekcji „Handel” > „Lista transakcji kont (USER_DATA)”. Pozwala sprawdzić każdą transakcję po konkretnym symbolu. Jeśli chcesz zobaczyć wszystkie swoje transakcje dla domyślnego symbolu (BTCUSDT), po prostu odznacz „startTime”, „endTime” i „fromId”. Odpowiedź zwróci maksymalnie 500 transakcji - po prostu zmień limit, jeśli chcesz zobaczyć więcej.


Debugowanie za pomocą Postmana

W Postmanie możesz dodatkowo ujawnić surowe żądanie i odpowiedź HTTP.



To menu otworzy konsolę Postman, która pokazuje szczegóły każdego żądania.



Końcowe przemyślenia

Celem tego przewodnika jest wprowadzenie Cię do API Binance bez pisania choćby jednej linijki kodu. Jeśli wykonałeś wszystkie niezbędne kroki, powinieneś teraz zrozumieć, w jaki sposób możemy żądać i wysyłać informacje.

W kolejnych częściach tej serii przedstawimy kilka podstawowych koncepcji kodowania, które pozwalają nam zautomatyzować kupno i sprzedaż kryptowalut i innych aktywów cyfrowych.

Masz jeszcze jakieś pytania? Odwiedź nasze rozwijające się forum społeczności programistów Binance lub sprawdź dokumentację.