Bybit to duża giełda kryptowalut oferująca kontrakty wieczyste, futures, handel spot i opcje. Komponent TsgcWSAPI_Bybit zapewnia pełną integrację Delphi z ujednoliconym API Bybit V5 — łącząc subskrypcje WebSocket dla danych rynkowych i zdarzeń prywatnych w czasie rzeczywistym z kompleksowym interfejsem REST do handlu, zarządzania pozycjami i zapytań konta. Artykuł obejmuje wszystkie dostępne metody i pokazuje, jak się połączyć, subskrybować i handlować.
Spis treści
- Przegląd architektury
- WebSocket API — Kanały publiczne
- WebSocket API — Kanały prywatne
- REST API — Dane rynkowe
- REST API — Handel
- REST API — Zarządzanie pozycjami
- REST API — Konto
- Pierwsze kroki — przykład kodu
- Dokumentacja konfiguracji
- Wskazówki i uwagi
Przegląd architektury
Bybit V5 API to ujednolicony interfejs łączący spot, linearne kontrakty wieczyste, odwrotne kontrakty wieczyste, odwrotne futures i opcje w jednym zestawie endpointów. Komponent TsgcWSAPI_Bybit obsługuje oba kanały:
- WebSocket — Publiczne dane rynkowe w czasie rzeczywistym (księgi zleceń, transakcje, tickery, klines, likwidacje) oraz prywatne zdarzenia konta (pozycje, realizacje, zlecenia, aktualizacje portfela).
- REST — Zapytania i działania na żądanie przez
oBybit.REST_API, obejmujące pobieranie danych rynkowych, składanie i zarządzanie zleceniami, konfigurację pozycji i informacje o koncie.
Kategorię produktu wybiera się przez właściwość BybitClient, która określa endpoint WebSocket: bybSpot, bybLinear, bybInverse lub bybPerpetual.
WebSocket API — Kanały publiczne
Kanały publiczne udostępniają dane rynkowe w czasie rzeczywistym bez uwierzytelnienia. Każda metoda subskrypcji ma odpowiadającą jej metodę anulowania subskrypcji.
| Subskrybuj | Anuluj subskrypcję | Opis |
|---|---|---|
SubscribeOrderBook |
UnSubscribeOrderBook |
Migawki i przyrostowe aktualizacje głębokości księgi zleceń w czasie rzeczywistym. |
SubscribeTrade |
UnSubscribeTrade |
Realizacje transakcji na żywo, jak zachodzą na giełdzie. |
SubscribeTicker |
UnSubscribeTicker |
Statystyki tickera w 24-godzinnym oknie kroczącym (cena, wolumen, zmiana). |
SubscribeKLine |
UnSubscribeKLine |
Aktualizacje świec/klines w czasie rzeczywistym dla określonego interwału. |
SubscribeLiquidation |
UnSubscribeLiquidation |
Zdarzenia likwidacji na całej giełdzie. |
SubscribeLT_KLine |
UnSubscribeLT_KLine |
Aktualizacje klines/świec tokenów lewarowanych. |
SubscribeLT_Ticker |
UnSubscribeLT_Ticker |
Dane tickera tokenów lewarowanych. |
SubscribeLT_Nav |
UnSubscribeLT_Nav |
Aktualizacje wartości aktywów netto tokenów lewarowanych. |
WebSocket API — Kanały prywatne
Kanały prywatne wymagają uwierzytelnienia kluczem API i sekretem. Dostarczają aktualizacji w czasie rzeczywistym dotyczących aktywności konta.
| Subskrybuj | Anuluj subskrypcję | Opis |
|---|---|---|
SubscribePosition |
UnSubscribePosition |
Aktualizacje pozycji w czasie rzeczywistym (rozmiar, cena wejścia, PnL, dźwignia). |
SubscribeExecution |
UnSubscribeExecution |
Potwierdzenia realizacji transakcji w miarę wypełniania zleceń. |
SubscribeOrder |
UnSubscribeOrder |
Zmiany statusu zleceń (nowe, częściowo wypełnione, wypełnione, anulowane). |
SubscribeWallet |
UnSubscribeWallet |
Zmiany salda portfela dla wszystkich monet. |
SubscribeGreek |
UnSubscribeGreek |
Aktualizacje Greków opcji (delta, gamma, theta, vega). |
SubscribeDcp |
UnSubscribeDcp |
Zdarzenia ochrony przed rozłączeniem do monitorowania kondycji połączenia. |
REST API — Dane rynkowe
Endpointy danych rynkowych są publiczne i nie wymagają uwierzytelnienia. Dostęp do nich przez oBybit.REST_API.
| Metoda | Opis |
|---|---|
GetServerTime |
Zwraca znacznik czasu serwera Bybit. |
GetKLine |
Zwraca historyczne dane klines/świec dla symbolu i interwału. |
GetMarkPriceKLine |
Zwraca dane klines ceny mark (używane do obliczeń PnL i likwidacji). |
GetIndexPriceKLine |
Zwraca dane klines ceny indeksu. |
GetPremiumIndexPriceKLine |
Zwraca dane klines premii indeksu cenowego dla kontraktów wieczystych. |
GetInstrumentsInfo |
Zwraca specyfikacje instrumentu (rozmiar ticka, rozmiar lotu, limity dźwigni itp.). |
GetOrderBook |
Zwraca bieżącą migawkę księgi zleceń na danej głębokości. |
GetTickers |
Zwraca najnowsze informacje tickera dla jednego lub wszystkich symboli. |
GetFundingRateHistory |
Zwraca historyczne zapisy stopy finansowania dla kontraktów wieczystych. |
GetPublicRecentTradingHistory |
Zwraca najnowsze publiczne transakcje dla symbolu. |
GetOpenInterest |
Zwraca dane otwartych pozycji dla kontraktów pochodnych. |
GetHistoricalVolatility |
Zwraca historyczną zmienność dla opcji. |
GetInsurance |
Zwraca historię salda funduszu ubezpieczeniowego. |
GetRiskLimit |
Zwraca poziomy limitów ryzyka dla danego symbolu. |
GetDeliveryPrice |
Zwraca cenę dostawy dla wygasłych futures i opcji. |
GetLongShortRatio |
Zwraca stosunek długich do krótkich pozycji dla danego symbolu i okresu. |
REST API — Handel
Endpointy handlu wymagają uwierzytelnienia kluczem API z odpowiednimi uprawnieniami. Te metody umożliwiają składanie, modyfikowanie i anulowanie zleceń.
| Metoda | Opis |
|---|---|
PlaceOrder |
Składa nowe zlecenie z pełną kontrolą parametrów (typ, kierunek, cena, ilość, czas ważności itp.). |
PlaceMarketOrder |
Wygodna metoda składająca zlecenie rynkowe (realizowane natychmiast po najlepszej dostępnej cenie). |
PlaceLimitOrder |
Wygodna metoda składająca zlecenie z limitem po podanej cenie. |
AmendOrder |
Modyfikuje istniejące otwarte zlecenie (cena, ilość lub inne parametry). |
CancelOrder |
Anuluje wskazane otwarte zlecenie po identyfikatorze. |
GetOpenOrders |
Zwraca wszystkie aktualnie otwarte (niewypełnione) zlecenia. |
CancelAllOrders |
Anuluje wszystkie otwarte zlecenia, opcjonalnie filtrowane po symbolu lub kategorii. |
GetOrderHistory |
Zwraca historyczne zlecenia (wypełnione, anulowane, odrzucone) w podanym zakresie czasu. |
REST API — Zarządzanie pozycjami
Endpointy pozycji umożliwiają zapytania i konfigurację pozycji pochodnych, w tym dźwigni, trybu depozytu, limitów ryzyka i ustawień stop-loss/take-profit.
| Metoda | Opis |
|---|---|
GetPositionInfo |
Zwraca bieżące szczegóły pozycji (rozmiar, cena wejścia, niezrealizowany PnL, depozyt). |
SetLeverage |
Ustawia dźwignię dla danego symbolu. |
SwitchCrossIsolatedMargin |
Przełącza między trybem depozytu krzyżowego i izolowanego. |
SetTPSLMode |
Konfiguruje tryb take-profit/stop-loss (pełna pozycja lub częściowa). |
SwitchPositionMode |
Przełącza między trybem jednostronnym a trybem hedgingu. |
SetRiskLimit |
Ustawia poziom limitu ryzyka dla symbolu, który wpływa na maksymalną dźwignię. |
SetTradingStop |
Ustawia trailing stop, take-profit lub stop-loss na istniejącej pozycji. |
SetAutoAddMargin |
Włącza lub wyłącza automatyczne dodawanie depozytu dla pozycji z depozytem izolowanym. |
AddOrReduceMargin |
Ręcznie dodaje lub usuwa depozyt z pozycji z depozytem izolowanym. |
GetExecution |
Zwraca zapisy realizacji/wypełnień transakcji. |
GetClosedPNL |
Zwraca zapisy zamkniętego zysku i straty. |
ConfirmNewRiskLimit |
Potwierdza zmianę limitu ryzyka, gdy wymagany jest dodatkowy depozyt. |
REST API — Konto
Endpointy konta udostępniają salda portfela, konfigurację konta i dzienniki transakcji.
| Metoda | Opis |
|---|---|
GetWalletBalance |
Zwraca salda portfela dla wszystkich monet lub dla określonego typu konta. |
GetAccountInfo |
Zwraca ujednolicone informacje o koncie (tryb depozytu, status konta itp.). |
GetTransactionLog |
Zwraca historię transakcji (wpłaty, wypłaty, transakcje, opłaty finansowania itp.). |
Pierwsze kroki — przykład kodu
Poniższy przykład demonstruje kompletną konfigurację: połączenie z endpointem liniowych kontraktów wieczystych Bybit, zapytanie o dane tickera przez REST, złożenie zlecenia z limitem, sprawdzenie salda portfela i subskrypcję aktualizacji transakcji w czasie rzeczywistym przez WebSocket.
var
oClient: TsgcWebSocketClient;
oBybit: TsgcWSAPI_Bybit;
begin
// Create the WebSocket client
oClient := TsgcWebSocketClient.Create(nil);
// Create the Bybit API component
oBybit := TsgcWSAPI_Bybit.Create(nil);
oBybit.Client := oClient;
// Configure API credentials
oBybit.Bybit.ApiKey := 'your_api_key';
oBybit.Bybit.ApiSecret := 'your_api_secret';
// Select the product category
oBybit.BybitClient := bybLinear;
// Connect to the WebSocket
oClient.Active := True;
// REST: Get ticker information for BTCUSDT
ShowMessage(oBybit.REST_API.GetTickers('BTCUSDT'));
// REST: Place a limit buy order
ShowMessage(oBybit.REST_API.PlaceLimitOrder(bbsBuy, 'BTCUSDT', 0.001, 30000));
// REST: Get wallet balance
ShowMessage(oBybit.REST_API.GetWalletBalance);
// WebSocket: Subscribe to real-time trades for BTCUSDT
oBybit.SubscribeTrade('BTCUSDT');
end;
REST a WebSocket
Używaj REST API do operacji na żądanie, takich jak składanie zleceń, zapytania o salda i pobieranie danych historycznych. Używaj subskrypcji WebSocket do ciągłych strumieni danych o niskim opóźnieniu. Obie metody można używać jednocześnie — wywołania REST są niezależne od stanu połączenia WebSocket.
Dokumentacja konfiguracji
| Właściwość | Typ | Opis |
|---|---|---|
Bybit.ApiKey |
String | Twój klucz API Bybit do żądań wymagających uwierzytelnienia. |
Bybit.ApiSecret |
String | Twój sekret API Bybit do podpisywania żądań. |
Bybit.TestNet |
Boolean | Ustaw na True, aby połączyć się ze środowiskiem testnet Bybit; False dla mainnetu. |
Bybit.SignatureExpires |
Integer | Czas ważności w sekundach dla podpisu HMAC (wartość domyślna jest zazwyczaj wystarczająca). |
BybitClient |
Enum | Kategoria produktu: bybSpot, bybLinear, bybInverse lub bybPerpetual. |
Wskazówki i uwagi
Zacznij od testnetu
Zawsze rozpoczynaj tworzenie z Bybit.TestNet := True. Testnet Bybit zapewnia pełne środowisko symulacji z testowymi środkami. Możesz utworzyć oddzielny klucz API testnetu na testnet.bybit.com.
Ujednolicone API V5
API V5 ujednolica wszystkie typy produktów w jednym zestawie endpointów. Właściwość BybitClient określa, z którym strumieniem WebSocket się łączysz, podczas gdy REST API automatycznie kieruje do właściwej kategorii na podstawie żądań.
Wygodne metody zleceń
Choć PlaceOrder daje pełną kontrolę nad każdym parametrem, wygodne metody PlaceMarketOrder i PlaceLimitOrder obsługują najczęstsze scenariusze przy mniejszej liczbie parametrów. Używaj pełnej metody, gdy potrzebujesz zaawansowanych opcji, takich jak reduce-only, czas ważności lub warunkowe wyzwalacze.
Limity zapytań
Bybit egzekwuje limity zapytań zarówno dla endpointów REST, jak i WebSocket. Limity REST są zazwyczaj per-endpoint (np. 10 żądań na sekundę dla składania zleceń). Subskrypcje WebSocket mają limit liczby jednoczesnych tematów. Monitoruj nagłówki odpowiedzi i kody błędów, aby nie przekroczyć limitów.
Uwaga: Połączenia WebSocket Bybit wysyłają okresowe ramki ping. KomponentTsgcWSAPI_Bybit obsługuje je automatycznie, utrzymując połączenie bez dodatkowego kodu.
