Spis Treści
- Wprowadzenie
- Wymagania wstępne
- Tworzenie środowiska
- Importowanie kolekcji
- Składanie żądań
- Przemyślenia końcowe
Wprowadzenie
Celem tej serii jest zapoznanie z interfejsem API REST Binance i nauczenie, jak z niego korzystać. Na końcu powinieneś mieć pewność, że potrafisz sprawnie zbierać informacje na temat rynków i swojej pozycji oraz posiadać umiejętność złożenia szeregu różnych rodzajów zleceń.
Wymagania wstępne
Klucze testnet'u
Użyjemy sieci testowej do naszych celów. Pozwoli nam to na wykorzystanie funduszy bez realnej wartości do zabawy. Działają one dokładnie tak samo, jak prawdziwe monety i tokeny, więc gdy już poczujesz się pewnie z interfejsem API, możesz zacząć używać prawdziwego kapitału.
- Zacznij od przejścia do Sieci Testowej Spot.
- Aby uzyskać dostęp, musisz zalogować się na konto GitHub. Jeśli nie posiadasz takowego, stwórz je.
- Kliknij opcję Uwierzytelnij i zaloguj się przez GitHub.
- W obszarze Kluczy API zobaczysz informację, że nie masz zarejestrowanych kluczy. Kliknij przycisk Generuj HMAC_SHA256, aby utworzyć parę.
- Na następnym ekranie nadaj klawiszom etykietę. Nazwij je, jak chcesz i naciśnij Generuj.
- Otrzymasz dwa klucze: Klucz API i Klucz Tajny. Ważne jest, aby je teraz zapisać. Jeśli tego nie zrobisz, musisz ponownie rozpocząć proces tworzenia klucza. Zalecamy przechowywanie ich w notatniku na komputerze w celu późniejszego łatwego wklejenia.
Pobieranie i instalacja Postman
Postman to platforma Współpracy API. To dla nas idealny punkt wyjścia - będziemy mieli dostęp do kolekcji żądań Binance, które przetestujemy bez konieczności pisania kodu.
Po zakończeniu pobierania znajdź go w eksploratorze plików i zainstaluj. Uruchom aplikację i jesteśmy gotowi! Pamiętaj, że możesz utworzyć konto, aby się zalogować, ale nie jest to konieczne. Jeśli chcesz pominąć ten krok, po prostu wybierz opcję w dolnej części okna.
Tworzenie środowiska
Na tym etapie powinieneś mieć interfejs podobny do następującego.
Pobieranie nie powinno zająć bardzo długo. Znajdź plik w eksploratorze plików i rozpakuj. Następnie możemy wrócić do Postman.
- Wybierz Importuj i przejdź do właśnie wypakowanego folderu (binance-postman-api).
- Wejdź w niego, a następnie przejdź do folderu środowisk.
- Zobaczysz teraz dwa pliki (jeden dla sieci głównej i jeden dla sieci testowej). Tym, którego szukamy, jest binance_com_spot_testnet_api.postman_environment.json. Upewnij się, że masz właściwy, ponieważ nasze klucze nie będą działać z tym drugim.
Na tym ekranie pozostaw pola sygnatury czasowej i podpisu puste. Te dwie wartości zostaną automatycznie utworzone dla każdego żądania.
Importowanie kolekcji
Teraz zaimportujemy kolekcję - jest to obszerny asortyment żądań, które robią dla nas ciężką pracę, gdy wykonujemy call'e. Aby załadować je do naszego środowiska:
- Kliknij Importuj w lewym górnym rogu.
- W wyskakującym okienku w karcie Plik wybierz Prześlij Pliki.
- Po raz kolejny szukamy folderu binance-postman-api. Znajdź go i otwórz.
- Tym razem wprowadź kolekcje do podkatalogu.
- Ponownie są tutaj dwa pliki. Jeden z nich współpracuje z interfejsem API futures. Natomiast my chcemy pracować z tym "spot", więc musisz wybrać plik binance_spot_api_v1.postman_collection.json.
- Powinien zostać wyświetlony ekran potwierdzenia, identyfikujący import w formacie Postman Collection. Wybierz Importuj.
W karcie Kolekcje po lewej stronie okna zauważysz, że mamy folder z ponad 100 żądaniami. Gratulacje! Możemy zaczynać. W następnej sekcji przyjrzymy się rodzajom żądań, które możemy złożyć.
Składanie Żądań
Jeśli rozwiniesz foldery w karcie Kolekcje, zobaczysz, że mamy do czynienia z wieloma różnymi żądaniami. Z kodowania kolorami można zauważyć, że istnieją trzy rodzaje metod, których możemy użyć:
- GET: Metoda GET służy do pobierania danych z serwera. Wykorzystamy ją, aby uzyskać informacje o saldzie konta, cenach aktywów itp.
- POST: Ogólnie używamy metody POST do tworzenia informacji na serwerze. Jest to potrzebne w przypadku składania zleceń, żądań wypłaty itp.
- DELETE: Metoda DELETE to żądanie usunięcia informacji przez serwer. Przyda się do anulowania zleceń.
Znajdź listę symboli i zasady handlu
Czas na nasze pierwsze żądanie! Otrzymamy symbole, którymi możemy handlować na giełdzie, a także zasady handlu:
GET /exchangeInfo
To żądanie nie wymaga żadnych dodatkowych parametrów - możesz je skopiować i wkleić w pasku adresu, dzięki czemu otrzymasz odpowiedź. W przypadku żądań, w których uwzględniamy kilka parametrów, Postman ułatwia ich przeglądanie i modyfikowanie.
Nie musimy tutaj nic więcej robić, więc kliknij Wyślij. Otrzymasz wtedy odpowiedź:
W najwyżej podświetlonej sekcji zobaczysz kilka ważnych informacji:
- status odpowiedzi (200 oznacza, że nam się udało, 400-499 oznacza, że napotkaliśmy problem)
czas potrzebny na odpowiedź (mniej niż sekunda)
rozmiar odpowiedzi (~22KB).
W drugim polu znajduje się większość odpowiedzi. Sekcja "pretty" jest przyjemniejsza dla oczu. Zawiera informacje o samej giełdzie, a także o parach, którymi możesz handlować oraz o ich minimalnych/maksymalnych kwotach.
Wygląda to na wiele informacji, ale format sprawia, że bardzo łatwo jest z nimi pracować. Podczas pisania skryptów do interakcji, z łatwością będziesz mógł wybrać określone właściwości konkretnych elementów z odpowiedzi.
Sprawdź salda konta
Sprawdźmy, jakie zasoby posiadamy i ile ich jest:
GET /account
Gratulujemy nowo odkrytego (nieistniejącego) bogactwa!
Jak uzyskać aktualną cenę dla symbolu
Możemy zająć się uzyskaniem bieżącej ceny składnika aktywów na różne sposoby. Być może najprostszy, polega na wykonaniu następującego żądania:
GET /api/v3/ticker/24hr
GET /api/v3/price
Podobnie jak w poprzednim przypadku, możesz zmienić zmienną symbolu lub całkowicie ją usunąć i uzyskać najnowszą cenę dla wszystkich symboli.
Sprawdź aktualną głębokość księgi zleceń
Głębokość księgi zleceń (zwana również głębokością rynku lub DOM) może nam wiele powiedzieć o rynku. Wykonamy calla, który zwróci przydatne informacje:
GET api/v3/depth
Gdy wysyłamy to z wartościami domyślnymi (Rynek (Market) > Księga Zleceń (Orderbook)), dostajemy odpowiedź, która mówi nam o bidach i askach na BTCUSDT. Serwer testnet nie dostarczy tylu danych, co rzeczywisty, dlatego poniżej znajduje się zrzut ekranu tego, co można zobaczyć w prawdziwym środowisku:
W podświetlonej sekcji powyżej widzimy pierwszego bida. Ponieważ patrzymy na księgę BTCUSDT, górna liczba to cena, którą ktoś jest skłonny zapłacić za Twoje BTC. Poniżej znajduje się kwota, którą chce kupić. Oznacza to zatem, że zlecenie to prosi (ask) o 0.999 BTC według stawki 9704.65 USDT za BTC. Gdybyśmy nadal przewijali w dół, zaobserwowalibyśmy spadek cen ofert – reprezentujący nabywców, którzy zapłaciliby mniej.
Najlepsza oferta będzie oczywiście najbardziej atrakcyjna. To powiedziawszy, jeśli próbujesz sprzedać, na przykład, 3 BTC, będziesz w stanie sprzedać tylko 0.999 BTC za najlepszą cenę. Musisz przyjmować kolejne (tańsze) oferty, aż całe zlecenie zostanie zrealizowane.
Przewijaj dalej, a zobaczysz aski. Są funkcjonalnie podobne do bidów, z tym że reprezentują zlecenia sprzedaży BTC za USDT.
Złóż zlecenie testowe
Teraz opublikujemy zlecenie testowe.
POST api/v3/order/test
Widać tutaj, że mamy do czynienia z wieloma parametrami. Przejdźmy przez te zaznaczone:
- symbol - natknęliśmy się na to wcześniej. To jest para, którą chcesz handlować.
- side - tutaj określ, czy chcesz KUPIĆ (BUY), czy SPRZEDAĆ (SELL). W przypadku pary BTCUSDT BUY wskazuje, że chcesz kupić BTC za USDT, natomiast SELL, że sprzedawać BTC za USDT.
- type – rodzaj zlecenia, które chcesz złożyć. Możliwe wartości (wyszczególnione tutaj):
- LIMIT
- MARKET
- STOP_LOSS
- STOP_LOSS_LIMIT
- TAKE_PROFIT
- TAKE_PROFIT_LIMIT
- LIMIT_MAKER
- timeInForce- ten parametr wyraża sposób wykonania zlecenia:
- GTC (ważne do anulowania) - być może najpopularniejsza konfiguracja, GTC upewni się, że Twoje zlecenie jest ważne, dopóki nie zostanie spełnione lub do momentu anulowania.
- FOK (spełnij lub anuluj) - FOK zleca giełdzie wykonanie całego zlecenia jednocześnie. Jeśli giełda nie jest w stanie tego zrobić, zostanie ono natychmiast anulowane.
- IOC (natychmiastowe lub anulowane) - całość lub część zlecenia musi zostać wykonana natychmiast lub jest anulowana. W przeciwieństwie do FOK zlecenia nie są anulowane, jeśli można je częściowo zrealizować.
- quantity - po prostu ilość zasobu, którą chcesz kupić lub sprzedać.
- price - cena, po której chcesz sprzedać. W przypadku pary BTCUSDT jest to wyrażone w USDT.
- newClientOrderId - identyfikator zlecenia. To nie jest pole obowiązkowe, ale możesz nadać mu identyfikator, który ułatwi późniejsze operacje. W przeciwnym razie jest on generowany losowo przez giełdę.
Złóż rzeczywiste zlecenie
Czas na złożenie prawdziwego (fałszywego) zlecenia.
POST /api/v3/order
Zwrócone zostanie wiele szczegółów na temat zlecenia, jeśli składanie się powiedzie.
Sprawdź status otwartego zlecenia
Otrzymaliśmy potwierdzenie, że zlecenie zostało złożone w poprzedniej sekcji, lecz co, jeśli chcemy to sprawdzić później? Mamy do dyspozycji kilka możliwości.
GET /api/v3/openOrders
GET /api/v3/allOrders
Możemy także zapytać o konkretne zlecenia za pomocą:
GET /api/v3/order
Anuluj zlecenie
Po pewnym czasie możemy zdecydować, że cel $40,000 jest trochę zbyt optymistyczny, więc chcemy go anulować. W takim przypadku użylibyśmy:
DELETE /api/v3/order
Złóż zlecenie, które wypełnia się natychmiast
Nasze poprzednie zlecenie nie zostało zrealizowane, ponieważ było to zlecenie typu limit, które uruchomi się dopiero, gdy cena BTC osiągnie $40,000. W przypadku zlecenia market mówimy w zasadzie „kupuj/sprzedawaj za dowolną cenę, na jaką obecnie wyceniany jest dany zasób”. Zrealizuje się ono natychmiast.
Poniżej widać, że zamierzamy złożyć zlecenie market na sprzedaż BNB za BUSD po bieżącej cenie rynkowej.
Pamiętaj, że odpowiedź daje nam minimalną ilość informacji:
Sprawdzanie transakcji
Na koniec spójrzmy na komendę do sprawdzenia twoich transakcji:
GET /api/v3/myTrades
Debugowanie przez Postman
W Postmanie można ujawniać nieprzetworzone żądanie HTTP i odpowiedź.
To menu otworzy konsolę Postman, w której pokazane zostaną szczegóły każdego żądania.
Przemyślenia końcowe
Celem tego przewodnika było wprowadzenie do interfejsu API Binance bez pisania ani jednego wiersza kodu. Jeśli nadążałeś, powinieneś mieć teraz ogólny zamysł tego, w jaki sposób możemy wysłać żądanie i przesłać informacje.