Aktualizacja API OKX w sgcWebSockets

· Funkcje
Integracja WebSocket Trading API OKX w Delphi

Komponent TsgcWSAPI_OKX zapewnia pełny dostęp Delphi do giełdy OKX przez ujednolicony interfejs WebSocket. Obsługuje publiczne strumienie danych rynkowych, prywatne kanały konta i bezpośrednie operacje handlowe, w tym zlecenia rynkowe i z limitem — wszystko przez jeden komponent. Przewodnik szczegółowo opisuje wszystkie dostępne metody, właściwości konfiguracyjne i zawiera działające przykłady kodu do handlu na OKX z Delphi.

Spis treści

Publiczne kanały WebSocket

Kanały publiczne strumieniują dane rynkowe do wszystkich połączonych klientów bez wymogu uwierzytelniania. Te kanały obejmują instrumenty, tickery, książki zleceń, transakcje, świece, stawki finansowania i więcej. Każda metoda subskrypcji ma odpowiednią metodę anulującą subskrypcję.

Kanały danych rynkowych

Metoda Opis
SubscribeInstruments Subskrybuje aktualizacje instrumentów (nowe notowania, denotowania, zmiany statusu).
SubscribeTicker Subskrybuje dane tickera w czasie rzeczywistym dla konkretnego instrumentu.
SubscribeOpenInterest Subskrybuje aktualizacje otwartych pozycji dla kontraktów futures i wieczystych.
SubscribeCandlestick Subskrybuje dane świec/klines przy wskazanym interwale.
SubscribeTrades Subskrybuje dane realizacji transakcji w czasie rzeczywistym dla konkretnego instrumentu.
SubscribeOrderBook Subskrybuje aktualizacje księgi zleceń z konfigurowalną głębokością.

Kanały cenowe i indeksowe

Metoda Opis
SubscribeEstimatedPrices Subskrybuje szacowaną cenę dostawy/realizacji dla opcji i futures.
SubscribeMarkPrice Subskrybuje aktualizacje ceny mark używane do obliczeń depozytu i PnL.
SubscribeMarkPriceCandlestick Subskrybuje dane świec bazujące na cenie mark.
SubscribePriceLimit Subskrybuje aktualizacje limitu cenowego (pasma cenowego) dla instrumentu.
SubscribeIndexCandlestick Subskrybuje dane świec bazujące na cenie indeksu.
SubscribeIndexTicker Subskrybuje aktualizacje tickera indeksu dla danego indeksu.
SubscribeFundingRate Subskrybuje aktualizacje stopy finansowania dla kontraktów wieczystych.

Kanały opcji i systemowe

Metoda Opis
SubscribeOptionSummary Subskrybuje dane podsumowania opcji (greeks, zmienność, otwarte pozycje).
SubscribeStatus Subskrybuje aktualizacje statusu systemu (konserwacja, zakłócenia).
SubscribePublicStructureBlockTrades Subskrybuje publiczne dane strukturalnych transakcji blokowych.
SubscribeBlockTickers Subskrybuje aktualizacje tickera transakcji blokowych.
Uwaga: Każda wymieniona powyżej metoda Subscribe ma odpowiednią metodę UnSubscribe (np. UnSubscribeTicker) do zaprzestania odbierania aktualizacji z danego kanału.

Prywatne kanały WebSocket

Kanały prywatne wymagają uwierzytelnienia i dostarczają aktualizacji w czasie rzeczywistym dotyczących stanu konta, pozycji, zleceń i aktywności handlu algorytmicznego. Ustaw OKX.IsPrivate := True i podaj prawidłowe dane uwierzytelniające API przed subskrybowaniem tych kanałów.

Kanały konta i pozycji

Metoda Opis
SubscribeAccount Subskrybuje aktualizacje salda i kapitału konta w czasie rzeczywistym.
SubscribePositions Subskrybuje aktualizacje pozycji (otwarcie, zamknięcie, zmiany rozmiaru).
SubscribeBalanceAndPosition Subskrybuje połączone aktualizacje salda i pozycji w jednym strumieniu.
SubscribePositionRisk Subskrybuje ostrzeżenia o ryzyku pozycji (bliskość likwidacji).
SubscribeAccountGreeks Subskrybuje aktualizacje greeks na poziomie konta dla pozycji opcyjnych.

Kanały zleceń i algorytmów

Metoda Opis
SubscribeOrders Subskrybuje aktualizacje statusu zleceń (złożone, wypełnione, anulowane, częściowo wypełnione).
SubscribeOrdersAlgo Subskrybuje aktualizacje zleceń algorytmicznych (wyzwalacz, TP/SL, trailing stop).
SubscribeAdvanceAlgo Subskrybuje zaawansowane aktualizacje zleceń algorytmicznych (iceberg, TWAP).

Kanały RFQ i transakcji blokowych

Metoda Opis
SubscribeRfqs Subskrybuje aktualizacje zapytań o kwotowanie (RFQ) dla handlu blokowego.
SubscribeQuotes Subskrybuje aktualizacje kwotowań w odpowiedzi na RFQ.
SubscribePrivateStructureBlockTrades Subskrybuje prywatne aktualizacje strukturalnych transakcji blokowych.

Kanały handlu siatką

Metoda Opis
SubscribeSpotGridAlgoOrders Subskrybuje aktualizacje zleceń siatki spot.
SubscribeContactGridAlgoOrders Subskrybuje aktualizacje zleceń siatki kontraktów.
SubscribeGridPositions Subskrybuje aktualizacje pozycji handlu siatką.
SubscribeGridSubOrders Subskrybuje aktualizacje poszczególnych podzleceń w ramach strategii siatki.

Operacje handlowe WebSocket

OKX obsługuje składanie i zarządzanie zleceniami bezpośrednio przez połączenie WebSocket, co zapewnia mniejsze opóźnienie w porównaniu z wywołaniami REST API. Te metody wymagają uwierzytelnienia.

Metoda Opis
PlaceOrder Składa nowe zlecenie z pełną kontrolą nad wszystkimi parametrami zlecenia.
PlaceMarketOrder Składa zlecenie rynkowe realizowane natychmiast po najlepszej dostępnej cenie.
PlaceLimitOrder Składa zlecenie z limitem po podanej cenie, realizowane tylko gdy rynek osiągnie tę cenę.
CancelOrder Anuluje istniejące zlecenie po jego identyfikatorze.
AmendOrder Modyfikuje istniejące zlecenie (zmiana ceny lub rozmiaru bez anulowania i ponownego składania).
Uwaga: Handel oparty na WebSocket zapewnia znacznie mniejsze opóźnienie niż składanie zleceń przez REST. OKX przetwarza zlecenia WebSocket z wyższym priorytetem, co czyni tę metodę preferowaną dla strategii wrażliwych na opóźnienia.

Przykład kodu

Poniższy przykład demonstruje tworzenie i konfigurację komponentu TsgcWSAPI_OKX, uwierzytelnianie z API, subskrypcję danych tickera, monitorowanie zleceń oraz składanie zleceń rynkowych i z limitem bezpośrednio przez połączenie WebSocket.

var
  oClient: TsgcWebSocketClient;
  oOKX: TsgcWSAPI_OKX;
begin
  // Create the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  oOKX := TsgcWSAPI_OKX.Create(nil);
  oOKX.Client := oClient;
  // Configure API credentials
  oOKX.OKX.ApiKey := 'your_api_key';
  oOKX.OKX.ApiSecret := 'your_api_secret';
  oOKX.OKX.Passphrase := 'your_passphrase';
  oOKX.OKX.IsPrivate := True;
  // Connect to OKX
  oClient.Active := True;
  // Subscribe to BTC-USDT ticker
  oOKX.SubscribeTicker('BTC-USDT');
  // Subscribe to order updates for spot trading
  oOKX.SubscribeOrders(okxitSpot);
  // Place a market buy order
  oOKX.PlaceMarketOrder(okxosBuy, 'BTC-USDT', 0.001);
  // Place a limit buy order
  oOKX.PlaceLimitOrder(okxosBuy, 'BTC-USDT', 0.001, 30000);
end;

Obsługa zdarzeń WebSocket

Przypisz handler zdarzeń do przetwarzania przychodzących wiadomości WebSocket. Zdarzenie dostarcza nazwę kanału i ładunek JSON dla każdej aktualizacji.

procedure TForm1.OnOKXEvent(Sender: TObject;
  const aChannel, aData: string);
begin
  // aChannel identifies the subscription (e.g., 'tickers', 'orders')
  // aData contains the JSON payload
  Memo1.Lines.Add(aChannel + ': ' + aData);
end;

Korzystanie z trybu demo

OKX udostępnia środowisko demo do testowania. Włącz je ustawiając OKX.IsDemo := True przed połączeniem. Tryb demo łączy się z oddzielnym endpointem z symulowanymi saldami, pozwalając testować logikę handlową bez ryzyka prawdziwych środków.

// Enable demo trading mode
oOKX.OKX.IsDemo := True;
oOKX.OKX.IsPrivate := True;
oClient.Active := True;

Konfiguracja i uwagi

Właściwości konfiguracji

Cała konfiguracja jest dostępna przez właściwość OKX komponentu.

Właściwość Typ Opis
OKX.ApiKey String Twój klucz API OKX. Wygeneruj go na stronie zarządzania API OKX.
OKX.ApiSecret String Twój sekret API OKX. Przechowuj tę wartość bezpiecznie i nigdy nie ujawniaj jej w kodzie po stronie klienta.
OKX.Passphrase String Hasło ustawione podczas tworzenia klucza API. Wymagane dla wszystkich żądań uwierzytelnionych.
OKX.IsDemo Boolean Gdy ustawione na True, łączy się ze środowiskiem demo OKX z symulowanymi środkami. Domyślnie False.
OKX.IsPrivate Boolean Gdy ustawione na True, włącza uwierzytelnianie na połączeniu WebSocket. Wymagane dla kanałów prywatnych i operacji handlowych. Domyślnie False.

Ważne uwagi

Bezpieczeństwo: Nigdy nie wpisuj na stałe klucza API, sekretu ani hasła bezpośrednio w kodzie produkcyjnym. Używaj bezpiecznego pliku konfiguracyjnego lub zmiennej środowiskowej do przechowywania danych uwierzytelniających.