API OKX

OKX

Obsługiwane API

Właściwości

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.

Połączenie

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ły publiczne

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.

  • books: Pełna migawka z 400 poziomami głębokości zostanie wypchnięta na początku. Dane przyrostowe będą wypychane co 100 ms przy każdej zmianie arkusza zleceń.
  • books5: 5 poziomów głębokości będzie wypychanych za każdym razem. Dane będą wypychane co 100 ms przy każdej zmianie arkusza zleceń.
  • bbo-tbt: 1 poziom głębokości będzie wypychany za każdym razem. Dane będą wypychane co 10 ms przy każdej zmianie arkusza zleceń.
  • books-l2-tbt: Pełna migawka z 400 poziomami głębokości zostanie wypchnięta na początku. Dane przyrostowe będą wypychane co 10 ms przy każdej zmianie arkusza zleceń.
  • books50-l2-tbt: Pełna migawka z 50 poziomami głębokości zostanie wypchnięta na początku. Dane przyrostowe będą wypychane co 10 ms przy każdej zmianie arkusza zleceń. Jeśli asks lub bids jest pustą tablicą, oznacza to zmiany na głębokości 400, a nie 50. W przypadku lokalnego przechowywania danych arkusza zleceń należy ignorować puste asks i bids.
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 prywatne

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;

Handel

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 cross
Tryb 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 zlecenia
market: zlecenie rynkowe
limit: zlecenie z limitem ceny
post_only: zlecenie post-only
fok: zlecenie fill-or-kill
ioc: zlecenie immediate-or-cancel
optimal_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ści
base_ccy: Waluta bazowa ,quote_ccy: Waluta kwotowana
Dotyczy wyłącznie SPOT handlowanego zleceniem rynkowym
Domyś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);

Wsadowe operacje handlowe

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.