Aktualizacja API Bybit w sgcWebSockets

· Funkcje
Integracja WebSocket i REST API Bybit V5 w Delphi

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

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:

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. Komponent TsgcWSAPI_Bybit obsługuje je automatycznie, utrzymując połączenie bez dodatkowego kodu.