CEX-API-update sgcWebSockets

· Functies
CEX.IO WebSocket-API-integratie in Delphi

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

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.

Tip: Wanneer je je op meerdere paren abonneert, is elke subscription onafhankelijk. Je kunt je tegelijkertijd op BTC/USD, ETH/USD en andere paren abonneren op dezelfde verbinding.