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
- Pierwsze kroki
- Publiczne metody WebSocket
- Prywatne metody WebSocket (wymagające uwierzytelnienia)
- Przykład kodu
- Zdarzenia i callbacki
- Konfiguracja i uwagi
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.
