CEX.IO is een gevestigde cryptocurrency-beurs die realtime market data en trading-mogelijkheden biedt via zijn WebSocket-API. De component TsgcWSAPI_Cex biedt een native Delphi-interface om met CEX.IO te verbinden, waardoor ontwikkelaars zich kunnen abonneren op live ticker-updates, order books kunnen beheren, orders kunnen plaatsen en annuleren en accountposities kunnen afhandelen — allemaal via een persistente WebSocket-verbinding.
Inhoudsopgave
- Overzicht
- Aan de slag
- Publieke WebSocket-methoden
- Private WebSocket-methoden (geauthenticeerd)
- Codevoorbeeld
- Gebeurtenissen en callbacks
- Configuratie en opmerkingen
Overzicht
De CEX.IO WebSocket-API biedt twee categorieën functionaliteit: publieke kanalen die market data streamen zonder authenticatie, en private methoden die API-sleutel-authenticatie vereisen voor trading en accountbeheer. De component TsgcWSAPI_Cex verpakt beide categorieën, zodat je één Delphi-component hebt voor alles van live prijsfeeds tot order-uitvoering.
Aan de slag
Plaats een TsgcWebSocketClient- en een TsgcWSAPI_Cex-component op je formulier of maak ze aan in code om met CEX.IO te verbinden. Wijs de client toe aan de API-component, configureer je credentials en activeer de verbinding.
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;
Opmerking: publieke methoden zoals ticker-subscriptions vereisen geen API-credentials. Je hoeft alleen ApiKey en ApiSecret in te stellen als je van plan bent private (geauthenticeerde) methoden te gebruiken, zoals orders plaatsen of balances controleren.
Publieke WebSocket-methoden
Met publieke methoden ontvang je realtime market data zonder authenticatie. Deze zijn ideaal voor het bouwen van dashboards, charting-tools of prijsalertsystemen.
| Methode | Beschrijving |
|---|---|
SubscribeTickers |
Abonneert op realtime ticker-updates voor een currency-paar (bijv. BTC/USD). |
SubscribeChart |
Abonneert op chart-/candle-data voor een opgegeven handelspaar. |
SubscribePair |
Abonneert op updates voor een specifiek handelspaar. |
UnSubscribePair |
Meldt zich af voor een eerder geabonneerd handelspaar. |
SubscribeOrderBook |
Abonneert op order-book-snapshots en incrementele updates voor een paar. |
UnSubscribeOrderBook |
Meldt zich af voor order-book-updates. |
Abonneren op tickers
De methode SubscribeTickers opent een live-stream van prijsdata voor een currency-paar. De eerste parameter is de base-currency en de tweede de quote-currency.
// Subscribe to BTC/USD ticker updates
oCex.SubscribeTickers('BTC', 'USD');
Werken met het order-book
Order-book-subscriptions leveren zowel de initiele snapshot als de daaropvolgende incrementele updates. Gebruik SubscribeOrderBook om data te ontvangen en UnSubscribeOrderBook zodra je deze niet meer nodig hebt.
// Subscribe to the BTC/USD order book
oCex.SubscribeOrderBook('BTC', 'USD');
// Later, unsubscribe when no longer needed
oCex.UnSubscribeOrderBook('BTC', 'USD');
Private WebSocket-methoden (geauthenticeerd)
Private methoden vereisen authenticatie via je CEX.IO API-sleutel en -secret. De component handelt de authenticatie-handshake automatisch af, maar je moet Authenticate aanroepen voordat je een private methode aanroept.
| Methode | Beschrijving |
|---|---|
Authenticate |
Authentiseert de WebSocket-sessie met je API-sleutel en -secret. |
GetTicker |
Haalt de huidige ticker op voor een specifiek currency-paar. |
GetBalance |
Haalt de account-balans op over alle valuta's. |
Ping |
Verstuurt een keepalive-ping om de WebSocket-verbinding actief te houden. |
GetOpenOrders |
Haalt alle openstaande orders op het account op. |
PlaceOrder |
Plaatst een nieuwe buy- of sell-order met opgegeven hoeveelheid en prijs. |
CancelReplaceOrder |
Annuleert een bestaande order en vervangt deze atomair door een nieuwe. |
GetOrderRequest |
Haalt de details van een specifieke order op via het ID. |
CancelOrderRequest |
Annuleert een specifieke order via het ID. |
GetArchivedOrders |
Haalt historische (afgeronde/geannuleerde) orders op. |
OpenPosition |
Opent een nieuwe margin-handelspositie. |
GetPosition |
Haalt de details op van een specifieke open positie. |
GetOpenPositions |
Haalt alle openstaande margin-posities op. |
ClosePosition |
Sluit een bestaande margin-handelspositie. |
Codevoorbeeld
Het volgende voorbeeld toont een complete workflow: verbinden met CEX.IO, abonneren op een ticker, een buy-order plaatsen en de accountsaldo opvragen.
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;
Orders plaatsen
De methode PlaceOrder verwacht de base-currency, quote-currency, hoeveelheid, prijs en order-type. De parameter order-type gebruikt de enum-waarden ctBuy of 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);
Posities beheren
CEX.IO ondersteunt margin-trading via methoden voor positiebeheer. Je kunt posities openen, opvragen en sluiten via de WebSocket-verbinding.
// Retrieve all open positions
oCex.GetOpenPositions;
// Close a specific position by ID
oCex.ClosePosition(positionId);
Gebeurtenissen en callbacks
De component TsgcWSAPI_Cex roept gebeurtenissen aan wanneer data van de beurs wordt ontvangen. Wijs handlers toe om binnenkomende berichten te verwerken, zoals ticker-updates, order-bevestigingen en balance-informatie.
| Event | Wanneer geactiveerd |
|---|---|
OnCexMessage |
Er een bericht van de CEX.IO WebSocket-server wordt ontvangen. |
OnCexConnect |
De WebSocket-verbinding met CEX.IO tot stand komt. |
OnCexDisconnect |
De WebSocket-verbinding wordt gesloten. |
OnCexError |
Een foutreactie van de exchange wordt ontvangen. |
Configuratie en opmerkingen
API-credentials
Haal je API-sleutel en -secret op via de CEX.IO-accountinstellingen. Bewaar de gegevens veilig en hardcode ze nooit in productiecode. Overweeg ze te laden vanuit een versleuteld configuratiebestand of omgevingsvariabelen.
Verbindingsbeheer
De WebSocket-verbinding wordt beheerd door de TsgcWebSocketClient-component. Zet Active := True om verbinding te maken en Active := False om de verbinding te verbreken. De component ondersteunt automatisch opnieuw verbinden, mits geconfigureerd via de reconnect-eigenschappen van de client.
Authenticatie-flow
Authenticatie moet voltooid zijn voordat je een private methode aanroept. Roep Authenticate aan zodra de verbinding tot stand is gekomen, of handel dit af binnen het event OnCexConnect. De component genereert automatisch de vereiste HMAC-signature uit je API-sleutel en -secret.
Keepalive
Roep de methode Ping periodiek aan om de geauthenticeerde sessie actief te houden. CEX.IO kan inactieve sessies na een timeout afsluiten.
