Aktualizacja API CEX w sgcWebSockets

· Funkcje
Integracja WebSocket API CEX.IO w Delphi

CEX.IO to renomowana giełda kryptowalut oferująca dane rynkowe w czasie rzeczywistym i możliwości handlowe przez swoje WebSocket API. Komponent TsgcWSAPI_Cex zapewnia natywny interfejs Delphi do łączenia z CEX.IO, umożliwiając deweloperom subskrypcję aktualizacji tickerów na żywo, zarządzanie księgami zleceń, składanie i anulowanie zleceń oraz obsługę pozycji konta — wszystko przez trwałe połączenie WebSocket.

Spis treści

Przegląd

API WebSocket CEX.IO zapewnia dwie kategorie funkcjonalności: kanały publiczne strumieniujące dane rynkowe bez uwierzytelnienia oraz metody prywatne wymagające uwierzytelnienia kluczem API do handlu i zarządzania kontem. Komponent TsgcWSAPI_Cex opakowuje obie kategorie, dając jeden komponent Delphi do obsługi wszystkiego — od aktywnych kanałów cenowych po realizację zleceń.

Pierwsze kroki

Aby połączyć się z CEX.IO, umieść komponent TsgcWebSocketClient i TsgcWSAPI_Cex na formularzu lub utwórz je w kodzie. Przypisz klient do komponentu API, skonfiguruj dane uwierzytelniające i aktywuj połączenie.

oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
Uwaga: Metody publiczne, takie jak subskrypcje tickerów, nie wymagają danych uwierzytelniających API. Musisz ustawić ApiKey i ApiSecret tylko jeśli zamierzasz korzystać z prywatnych (uwierzytelnionych) metod, takich jak składanie zleceń czy sprawdzanie sald.

Publiczne metody WebSocket

Metody publiczne umożliwiają odbieranie danych rynkowych w czasie rzeczywistym bez uwierzytelnienia. Są idealne do budowania dashboardów, narzędzi do wykresów lub systemów alertów cenowych.

Metoda Opis
SubscribeTickers Subskrybuje aktualizacje tickera w czasie rzeczywistym dla pary walutowej (np. BTC/USD).
SubscribeChart Subskrybuje dane wykresu/świec dla wybranej pary handlowej.
SubscribePair Subskrybuje aktualizacje dla wybranej pary handlowej.
UnSubscribePair Anuluje subskrypcję wcześniej subskrybowanej pary handlowej.
SubscribeOrderBook Subskrybuje migawki i przyrostowe aktualizacje księgi zleceń dla pary.
UnSubscribeOrderBook Anuluje subskrypcję aktualizacji księgi zleceń.

Subskrypcja tickerów

Metoda SubscribeTickers otwiera aktywny strumień danych cenowych dla pary walutowej. Pierwszy parametr to waluta bazowa, a drugi to waluta kwotowana.

// Subscribe to BTC/USD ticker updates
oCex.SubscribeTickers('BTC', 'USD');

Praca z księgą zleceń

Subskrypcje księgi zleceń dostarczają zarówno początkową migawkę, jak i kolejne przyrostowe aktualizacje. Użyj SubscribeOrderBook, aby rozpocząć odbieranie danych, i UnSubscribeOrderBook, gdy nie są już potrzebne.

// Subscribe to the BTC/USD order book
oCex.SubscribeOrderBook('BTC', 'USD');
// Later, unsubscribe when no longer needed
oCex.UnSubscribeOrderBook('BTC', 'USD');

Prywatne metody WebSocket (wymagające uwierzytelnienia)

Metody prywatne wymagają uwierzytelnienia za pomocą klucza API i sekretu CEX.IO. Komponent obsługuje uścisk dłoni uwierzytelniania automatycznie, ale musisz wywołać Authenticate przed wywołaniem jakiejkolwiek metody prywatnej.

Metoda Opis
Authenticate Uwierzytelnia sesję WebSocket przy użyciu klucza API i sekretu.
GetTicker Pobiera bieżący ticker dla wybranej pary walutowej.
GetBalance Pobiera saldo konta dla wszystkich walut.
Ping Wysyła ping podtrzymujący połączenie WebSocket.
GetOpenOrders Pobiera wszystkie aktualnie otwarte zlecenia na koncie.
PlaceOrder Składa nowe zlecenie kupna lub sprzedaży z podaną ilością i ceną.
CancelReplaceOrder Anuluje istniejące zlecenie i zastępuje je nowym atomowo.
GetOrderRequest Pobiera szczegóły zlecenia po jego identyfikatorze.
CancelOrderRequest Anuluje wskazane zlecenie po jego identyfikatorze.
GetArchivedOrders Pobiera historyczne (zrealizowane/anulowane) zlecenia.
OpenPosition Otwiera nową pozycję handlu z dźwignią.
GetPosition Pobiera szczegóły wybranej otwartej pozycji.
GetOpenPositions Pobiera wszystkie aktualnie otwarte pozycje z dźwignią.
ClosePosition Zamyka istniejącą pozycję handlu z dźwignią.

Przykład kodu

Poniższy przykład demonstruje kompletny przepływ pracy: połączenie z CEX.IO, subskrypcja tickera, złożenie zlecenia kupna i pobranie salda konta.

oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
// Subscribe to ticker
oCex.SubscribeTickers('BTC', 'USD');
// Place an order
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Get balance
oCex.GetBalance;

Składanie zleceń

Metoda PlaceOrder przyjmuje walutę bazową, walutę kwotowaną, ilość, cenę i typ zlecenia. Parametr typu zlecenia używa wartości enumeracji ctBuy lub ctSell.

// Place a buy order: 0.01 BTC at $30,000
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Place a sell order: 0.05 ETH at $2,000
oCex.PlaceOrder('ETH', 'USD', 0.05, 2000, ctSell);

Zarządzanie pozycjami

CEX.IO obsługuje handel z dźwignią poprzez metody zarządzania pozycjami. Możesz otwierać, sprawdzać i zamykać pozycje bezpośrednio przez połączenie WebSocket.

// Retrieve all open positions
oCex.GetOpenPositions;
// Close a specific position by ID
oCex.ClosePosition(positionId);

Zdarzenia i callbacki

Komponent TsgcWSAPI_Cex wywołuje zdarzenia po odebraniu danych z giełdy. Przypisz handlery do przetwarzania przychodzących wiadomości, takich jak aktualizacje tickerów, potwierdzenia zleceń i informacje o saldzie.

Zdarzenie Wyzwalane gdy
OnCexMessage Otrzymano dowolną wiadomość z serwera WebSocket CEX.IO.
OnCexConnect Nawiązano połączenie WebSocket z CEX.IO.
OnCexDisconnect Połączenie WebSocket zostało zamknięte.
OnCexError Otrzymano odpowiedź błędu z giełdy.

Konfiguracja i uwagi

Dane uwierzytelniające API

Uzyskaj klucz API i sekret z ustawień konta CEX.IO. Przechowuj dane uwierzytelniające bezpiecznie i nigdy nie wpisuj ich na stałe w kodzie produkcyjnym. Rozważ wczytywanie ich z zaszyfrowanego pliku konfiguracyjnego lub zmiennych środowiskowych.

Zarządzanie połączeniem

Połączeniem WebSocket zarządza komponent TsgcWebSocketClient. Ustaw Active := True, aby się połączyć, i Active := False, aby się rozłączyć. Komponent obsługuje automatyczne ponowne łączenie, jeśli jest skonfigurowane przez właściwości reconnection klienta.

Przepływ uwierzytelniania

Uwierzytelnianie musi zostać ukończone przed wywołaniem jakiejkolwiek metody prywatnej. Wywołaj Authenticate po nawiązaniu połączenia lub obsłuż to w zdarzeniu OnCexConnect. Komponent generuje wymagany podpis HMAC automatycznie na podstawie klucza API i sekretu.

Podtrzymanie połączenia

Używaj metody Ping okresowo, aby utrzymać aktywną sesję uwierzytelnioną. CEX.IO może rozłączyć bezczynne sesje po upływie limitu czasu.

Wskazówka: Przy subskrypcji wielu par każda subskrypcja jest niezależna. Możesz subskrybować BTC/USD, ETH/USD i inne pary jednocześnie na tym samym połączeniu.