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.
- Ustaw
OKX.IsPrivate := True przed połączeniem, jeśli potrzebujesz kanałów prywatnych lub operacji handlowych. Kanały publiczne działają bez uwierzytelniania.
- Używaj
OKX.IsDemo := True do testowania na środowisku demo OKX przed wdrożeniem. Tryb demo używa oddzielnych danych uwierzytelniających API wygenerowanych specjalnie dla platformy demo.
- Metoda
SubscribeOrders przyjmuje parametr typu instrumentu (np. okxitSpot, okxitFutures, okxitSwap, okxitOption) do filtrowania aktualizacji zleceń według typu handlu.
- Wygodne metody
PlaceMarketOrder i PlaceLimitOrder przyjmują parametr kierunku zlecenia (np. okxosBuy, okxosSell), identyfikator instrumentu, rozmiar i (dla zleceń z limitem) cenę.
- Metoda
AmendOrder umożliwia modyfikację ceny lub rozmiaru aktywnego zlecenia bez jego anulowania i ponownego składania, zmniejszając opóźnienie i zapobiegając utracie pozycji w kolejce.
- OKX egzekwuje limity szybkości dla wiadomości WebSocket. Zapoznaj się z oficjalną dokumentacją OKX, aby poznać aktualne limity subskrypcji i żądań handlowych na sekundę.
- Subskrypcje WebSocket są trwałe przez cały czas trwania połączenia. Jeśli połączenie zostanie zerwane, po ponownym połączeniu konieczna będzie ponowna subskrypcja.