Od sgcWebSockets 2023.8.0 obsługiwane jest CEX.IO Plus API.
Obsługiwane API
- WebSockets API: połączenie z publicznym serwerem WebSocket i aktualizacje danych rynkowych w czasie rzeczywistym.
WebSockets API
WebSocket to pełnodupleksowy protokół komunikacyjny oparty na TCP. Pełny dupleks oznacza, że obie strony mogą wysyłać sobie wiadomości asynchronicznie za pomocą tego samego kanału komunikacyjnego. Ta sekcja opisuje, jakie wiadomości powinny wymieniać się Exchange Plus i klient. Wszystkie wiadomości powinny być poprawnymi obiektami JSON.
WebSocket API jest używane głównie do uzyskiwania informacji lub wykonywania działań, które nie są dostępne lub trudne do wykonania za pomocą REST API. Jednak niektóre żądania lub działania są możliwe zarówno w REST API, jak i WebSocket API. Exchange Plus wysyła wiadomości do klienta jako odpowiedź na wcześniej wysłane żądanie lub jako powiadomienie o zdarzeniu (bez wcześniejszego żądania klienta).
Publiczne wywołania API
Limit szybkości publicznego API jest stosowany w celu ochrony systemu przed atakami DDoS i zapewnienia wszystkim klientom tego samego poziomu stabilnego dostępu do punktów końcowych Exchange Plus API. Żądania publiczne są ograniczone według adresu IP, z którego są wysyłane. Limity żądań są określane na podstawie kosztu związanego z każdym wywołaniem API. Domyślnie każde żądanie publiczne ma koszt 1 punktu, ale w przypadku niektórych żądań koszt może być wyższy. Aktualne informacje o kosztach limitów znajdziesz w specyfikacji każdej metody.
Exchange Plus ogranicza publiczne wywołania API do maksymalnie 100 punktów na minutę, biorąc pod uwagę koszt każdego wywołania API (patrz poniżej). Po osiągnięciu limitu Exchange Plus odpowiada błędem, wysyła do klienta zdarzenie rozłączenia i zamyka połączenie WS. Exchange Plus będzie ponownie obsługiwać klienta od następnej minuty kalendarzowej. W poniższym przykładzie licznik żądań zostanie zresetowany o 11:02:00.000.
Przykład: pobieranie najnowszego tickera pary BTC-USD
oClient := TsgcWebSocketClient.Create(nil);
oCexPlus := TsgcWSAPI_CexPlus.Create(nil);
oCexPlus.Client := oClient;
oCexPlus.OnCexPlusConnect := OnCexPlusConnectEvent;
oCexPlus.OnCexPlusMessage := OnCexPlusMessageEvent;
oClient.Active := True;
procedure OnCexPlusConnectEvent(Sender: TObject);
begin
oCexPlus.GetTicker('BTC-USD');
end;
procedure OnCexPlusMessageEvent(Sender: TObject; Event, Msg: string);
begin
ShowMessage('Ticker data: ' + Msg);
end;
Prywatne wywołania API
Exchange Plus używa kluczy API do umożliwienia dostępu do prywatnych API.
Klient może generować, konfigurować i zarządzać kluczami API, ustawiać poziomy uprawnień, dozwolone adresy IP dla klucza API itp. za pomocą Exchange Plus Web Terminal w sekcji API Keys Management Profile.
Limit kluczy API: domyślnie klient może mieć do 5 kluczy API.
Aby ograniczyć dostęp do określonych funkcji podczas korzystania z kluczy API, należy zdefiniować określony zestaw uprawnień dla każdego klucza API. Zdefiniowany zestaw uprawnień można w razie potrzeby edytować.
Dla kluczy API dostępne są następujące poziomy uprawnień:
- Odczyt: poziom uprawnień do przeglądania danych związanych z kontem, odbierania raportów, subskrybowania danych rynkowych itp.
- Handel: poziom uprawnień umożliwiający składanie i anulowanie zleceń w imieniu konta.
- Środki wewnętrzne: poziom uprawnień umożliwiający przelewy środków między kontami (między subkontami lub kontem głównym a subkontami) portfela CEX.IO Exchange Plus.
- Środki portfela: poziom uprawnień umożliwiający przelewy środków z kont portfela CEX.IO Exchange Plus (konta głównego i subkont) do portfela CEX.IO i odwrotnie.
Przykład: pobieranie zleceń.
oClient := TsgcWebSocketClient.Create(nil);
oCexPlus := TsgcWSAPI_CexPlus.Create(nil);
oCexPlus.Client := oClient;
oCexPlus.CexPlus.ApiKey := 'your-api-key';
oCexPlus.CexPlus.ApiSecret := 'your-api-secret';
oCexPlus.OnCexPlusAuthenticated := OnCexPlusAuthenticatedEvent;
oCexPlus.OnCexPlusMessage := OnCexPlusMessageEvent;
oClient.Active := True;
procedure OnCexPlusAuthenticatedEvent(Sender: TObject);
begin
oCexPlus.GetOrders();
end;
procedure OnCexPlusMessageEvent(Sender: TObject; Event, Msg: string);
begin
ShowMessage('Orders: ' + Msg);
end;
