Kanały WebSocket są podzielone na dwie kategorie: publiczne i prywatne.
W właściwości OKX można skonfigurować następujące właściwości.
Gdy klient pomyślnie połączy się z serwerami OKX, wywoływane jest zdarzenie OnOKXConnect . Jeśli wystąpi błąd podczas próby połączenia, zdarzenie OnOKXError zostanie wywołane ze szczegółami błędu.
Po wywołaniu zdarzenia OnOKXConnect można rozpocząć wysyłanie i odbieranie wiadomości z serwerów OKX.
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
DoLog('#OKX Connected');
end;
procedure OnOKXError(Sender: TObject; aCode, aMessage, aRawMessage: string);
begin
DoLog('#error: ' + aMessage);
end;
Kanał WebSocket dostarcza aktualizacje rynkowe w czasie rzeczywistym dla zleceń i transakcji. Kanał WebSocket posiada publiczne kanały takie jak ticker, trades...
Możliwa jest subskrypcja następujących kanałów publicznych:
| Metoda | Opis |
| SubscribeInstruments | Pełna lista instrumentów zostanie wypchnięta po raz pierwszy po subskrypcji. Następnie instrumenty będą wypychane, jeśli nastąpi jakakolwiek zmiana stanu instrumentu (np. dostawa FUTURES, wykonanie OPTION, notowanie nowych kontraktów / par handlowych, zawieszenie handlu itp.). |
| SubscribeTicker | Pobierz ostatnią cenę transakcji, cenę kupna, cenę sprzedaży oraz 24-godzinny wolumen obrotu dla instrumentów. Dane są wypychane co 100 ms. |
| SubscribeOpenInterest | Pobierz otwarte zainteresowanie. Dane będą wypychane co 3 sekundy. |
| SubscribeCandlestick | Pobiera dane świec dla instrumentu. Dane są przesyłane z maksymalną częstotliwością co 500 ms. |
| SubscribeTrades | Pobiera dane o ostatnich transakcjach. Dane są przesyłane za każdym razem, gdy dojdzie do transakcji. |
| SubscribeEstimatedPrices |
Pobierz szacowaną cenę dostawy/wykonania kontraktów FUTURES oraz OPTION. Przybliżona cena dostawy/wykonania będzie przesyłana wyłącznie na godzinę przed dostawą/wykonaniem i tylko w przypadku zmiany ceny. |
| SubscribeMarkPrice | Pobiera cenę mark. Dane są przesyłane co 200 ms przy zmianie ceny mark oraz co 10 sekund, gdy cena mark nie zmienia się. |
| SubscribeMarkPriceCandlestick | Pobiera dane wykresów świecowych dla ceny mark. Dane są wypychane co 500 ms. |
| SubscribePriceLimit | Pobiera maksymalną cenę kupna i minimalną cenę sprzedaży instrumentu. Dane są przekazywane co 5 sekund w przypadku zmian limitów; gdy nie ma zmian, dane nie są wysyłane. |
| SubscribeOrderBook |
Pobiera dane z arkusza zleceń. Należy używać books dla 400 poziomów głębokości, book5 dla 5 poziomów głębokości, bbo-tbt dla tick-by-tick z 1 poziomem głębokości, books50-l2-tbt dla tick-by-tick z 50 poziomami głębokości oraz books-l2-tbt dla tick-by-tick z 400 poziomami głębokości.
|
| SubscribeOptionSummary | Pobiera szczegółowe informacje o cenach wszystkich kontraktów OPTION. Dane zostaną przesłane jednorazowo. |
| SubscribeFundingRate | Pobierz stopę finansowania. Dane będą przesyłane co 30–90 sekund. |
| SubscribeIndexCandlestick | Pobierz dane świecowe indeksu. Dane będą wypychane co 500 ms. |
| SubscribeIndexTicker | Pobiera dane tickerów indeksowych |
| SubscribeStatus | Pobierz status konserwacji systemu i wypychaj dane po zmianie statusu konserwacji. Pierwsze subskrybowanie: „Wypychaj najnowsze dane o zmianach"; przy każdej zmianie stanu wypychana jest zmieniona zawartość |
| SubscribePublicStructureBlockTrades | Dane są przesyłane za każdym razem, gdy dochodzi do transakcji blokowej. |
| SubscribeBlockTickers | Pobiera najnowszy wolumen transakcji blokowych z ostatnich 24 godzin. Dane są przesyłane po wyzwoleniu przez zdarzenie wykonania transakcji. Ponadto dane są przesyłane co 5 minut zgodnie z granularnością subskrypcji. |
| SubscribeAllTrades | Pobiera wszystkie dane transakcji. Dane są przesyłane w momencie każdej transakcji. |
| SubscribeLiquidationOrders | Pobierz zlecenia likwidacji. Dane będą przesyłane po pojawieniu się zlecenia likwidacji. |
| SubscribeADLWarning | Pobierz dane ostrzegawcze ADL. Dane są przesyłane, gdy ryzyko automatycznego delewarowania wzrasta. |
| SubscribeEconomicCalendar | Pobiera zdarzenia kalendarza ekonomicznego. Dane są przesyłane w momencie aktualizacji zdarzeń ekonomicznych. |
| SubscribePublicBlockTrades | Pobierz publiczne transakcje blokowe. Dane będą przesyłane po każdej transakcji blokowej. |
| SubscribeOptionTrades | Pobierz dane transakcji opcji. Dane są przesyłane za każdym razem, gdy nastąpi transakcja opcji. |
| SubscribeCallAuctionDetails | Pobierz szczegóły aukcji call. Dane będą przesyłane po aktualizacji informacji o aukcji call. |
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
oOKX.SubscribeInstruments(okxitFutures);
end;
Kanały wymagające logowania: kanał konta, kanał zleceń, kanał pozycji i inne.
Można subskrybować następujące kanały prywatne:
| Metoda | Opis |
| SubscribeAccount | Pobieranie informacji o koncie. Dane będą przesyłane po wyzwoleniu przez zdarzenia takie jak złożenie zlecenia, anulowanie zlecenia, wykonanie transakcji itp. Będą również przesyłane w regularnych odstępach czasu zgodnie z granularnością subskrypcji. |
| SubscribePositions | Pobierz informacje o pozycji. Początkowa migawka zostanie przesłana zgodnie z granularnością subskrypcji. Dane będą przesyłane po wyzwoleniu zdarzeń takich jak składanie/anulowanie zlecenia, a także regularnie zgodnie z granularnością subskrypcji. |
| SubscribeBalanceAndPosition | Pobierz informacje o saldzie i pozycjach konta. Dane będą przesyłane po wyzwoleniu zdarzeń, takich jak zrealizowane zlecenie lub transfer środków. |
| SubscribeOrders | Pobieranie informacji o zleceniu. Dane nie są przesyłane przy pierwszej subskrypcji. Dane są przesyłane tylko po wyzwoleniu przez zdarzenia takie jak złożenie lub anulowanie zlecenia. |
| SubscribeOrdersAlgo | Pobiera zlecenia algo (obejmuje zlecenia trigger, oco i warunkowe). Dane nie są przesyłane po pierwszej subskrypcji. Dane są przesyłane wyłącznie po wyzwoleniu przez zdarzenia, takie jak złożenie/anulowanie zlecenia. |
| SubscribeAdvanceAlgo |
Pobierz zaawansowane zlecenia algorytmiczne (w tym zlecenia Iceberg, TWAP, Trailing). Dane są przesyłane po pierwszej subskrypcji oraz po wystąpieniu zdarzeń takich jak złożenie lub anulowanie zlecenia. |
| SubscribePositionRisk | Ten kanał push jest używany wyłącznie jako ostrzeżenie o ryzyku i nie jest zalecany jako podstawa oceny ryzyka w handlu strategicznym. W przypadku gdy rynek nie porusza się gwałtownie, istnieje możliwość, że pozycja została zlikwidowana w tym samym momencie, w którym ta wiadomość została wypchnięta. |
| SubscribeAccountGreeks | Pobieranie informacji o greckich parametrach konta. Dane są przesyłane po wyzwoleniu przez zdarzenia, takie jak zwiększenie lub zmniejszenie pozycji albo salda gotówkowego na koncie, a także są przesyłane w regularnych odstępach czasu zgodnie z granularnością subskrypcji. |
| SubscribeRfqs | Pobierz zapytania RFQ. |
| SubscribeQuotes |
Pobierz notowania. |
| SubscribePrivateStructureBlockTrades | Pobierz transakcje blokowe struktury. |
| SubscribeSpotGridAlgoOrders | Pobierz zlecenia algorytmiczne siatki spot. Dane są wypychane przy pierwszej subskrypcji. Dane są wypychane po wyzwoleniu przez zdarzenia, takie jak złożenie/anulowanie zlecenia. |
| SubscribeContactGridAlgoOrders | Pobierz zlecenia algorytmiczne siatki kontraktów. Dane są przesyłane przy pierwszej subskrypcji oraz w reakcji na zdarzenia, takie jak składanie lub anulowanie zleceń. |
| SubscribeGridPositions | Pobiera pozycje siatki. Dane są przesyłane po pierwszej subskrypcji. Dane są przesyłane po wyzwoleniu przez zdarzenia, takie jak złożenie/anulowanie zlecenia. |
| SubscribeGridSubOrders | Pobiera podzlecenia siatki. Dane są przesyłane po pierwszej subskrypcji. Dane są przesyłane po wyzwoleniu przez zdarzenia, takie jak złożenie zlecenia. |
| SubscribeFills | Pobiera dane zrealizowanych zleceń. Dane są wypychane po realizacji zlecenia. |
| SubscribeDepositInfo | Pobranie informacji o wpłacie. Dane zostaną przesłane po aktualizacji statusu wpłaty. |
| SubscribeWithdrawalInfo | Pobiera informacje o wypłacie. Dane są przekazywane w przypadku aktualizacji statusu wypłaty. |
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
oOKX.SubscribeOrders(okxitFutures, 'BTC-USD', 'BTC-USD-200329');
end;
WebSocket Trade wymaga uwierzytelniania.
Zlecenie można złożyć tylko w przypadku posiadania wystarczających środków. Poniżej znajduje się tabela z parametrami żądania:
| Parametr | Typ | Wymagane | Opis |
|---|---|---|---|
| id | String | Tak | Unikalny identyfikator wiadomości Dostarczany przez klienta. Zostanie zwrócony w wiadomości odpowiedzi do identyfikacji odpowiedniego żądania. Kombinacja alfanumeryczna z uwzględnieniem wielkości liter, same cyfry lub same litery, o długości do 32 znaków. |
| > instId | String | Tak | Identyfikator instrumentu, np. BTC-USD-190927-5000-C |
| > tdMode | String | Tak | Tryb handlu Tryb marży isolated crossTryb bez marży cash |
| > ccy | String | Nie | Waluta depozytu zabezpieczającego Dotyczy wyłącznie cross MARGIN zleceń w Single-currency margin. |
| > clOrdId | String | Nie | Identyfikator zlecenia dostarczony przez klienta Kombinacja znaków alfanumerycznych z rozróżnieniem wielkości liter, składająca się wyłącznie z cyfr lub wyłącznie z liter, o długości do 32 znaków. |
| > tag | String | Nie | Etykieta zlecenia Kombinacja rozróżniających wielkość liter znaków alfanumerycznych, samych cyfr lub samych liter, o długości do 16 znaków. |
| > side | String | Tak | Strona zlecenia, buy sell |
| > posSide | String | Opcjonalne | Strona pozycji Domyślnie jest to net w trybie net Jest wymagana w trybie long/short i może wynosić wyłącznie long lub short.Dotyczy wyłącznie FUTURES/SWAP. |
| > ordType | String | Tak | Typ zleceniamarket: zlecenie rynkowelimit: zlecenie z limitem cenypost_only: zlecenie post-onlyfok: zlecenie fill-or-killioc: zlecenie immediate-or-canceloptimal_limit_ioc : zlecenie rynkowe immediate-or-cancel
|
| > sz | String | Tak | Ilość do kupienia lub sprzedaży. |
| > px | String | Opcjonalne | Cena Dotyczy wyłącznie zlecenia typu limit,post_only,fok,ioc . |
| > reduceOnly | Boolean | Nie | Czy zmniejszyć tylko pozycję, true false, wartość domyślna to false.Dotyczy wyłącznie zleceń MARGIN oraz zleceń FUTURES/SWAP w trybie net Dotyczy wyłącznie Single-currency margin oraz Multi-currency margin |
| > tgtCcy | String | Nie | Typ ilościbase_ccy: Waluta bazowa ,quote_ccy: Waluta kwotowanaDotyczy wyłącznie SPOT handlowanego zleceniem rynkowymDomyślnie quote_ccy dla kupna, base_ccy dla sprzedaży
|
| > banAmend | Boolean | Nie | Czy zakazać modyfikowania zlecenia spot, true lub false, domyślnie false. Złożenie zlecenia nie powiedzie się, jeśli saldo jest niewystarczające, gdy banAmend wynosi true. Dotyczy wyłącznie zleceń rynkowych SPOT. |
Przykład złożenia zlecenia
Zlecenie można złożyć tylko wtedy, gdy dostępne są wystarczające środki.
// Place Martket Order
TsgcWSAPI_OKX1.PlaceMarketOrder(okxosBuy, 'ETH-BTC', 1);
// Place Limit Order
TsgcWSAPI_OKX1.PlaceLimitOrder(okxosBuy, 'ETH-BTC', 1, 0.25);
Przykład anulowania zlecenia
Anuluj niekompletne zlecenie
TsgcWSAPI_OKX1.CancelOrder('ETH-BTC', '457589362405027840');
Zmiana zlecenia
Zmień niekompletne zlecenie.
TsgcWSAPI_OKX1.AmendOrder('ETH-BTC', '457589362405027840', '', 2);
WebSocket Trade API obsługuje również operacje wsadowe umożliwiające jednoczesne składanie, anulowanie i modyfikowanie wielu zleceń. Operacje te wymagają uwierzytelnienia.
| Metoda | Opis |
| BatchPlaceOrders | Składa wiele zleceń w jednym żądaniu. Jednorazowo można złożyć maksymalnie 20 zleceń. |
| BatchCancelOrders | Anuluje wiele zleceń w jednym żądaniu. Maksymalnie 20 zleceń może zostać anulowanych jednocześnie. |
| BatchAmendOrders | Modyfikuj wiele niezrealizowanych zleceń w jednym żądaniu. Jednorazowo można zmodyfikować maksymalnie 20 zleceń. |
| MassCancelOrders | Masowe anulowanie wszystkich oczekujących zleceń dla określonego typu instrumentu. |