CEX-API-Update sgcWebSockets

· Funktionen
CEX.IO WebSocket-API-Integration in Delphi

CEX.IO ist eine etablierte Kryptobörse mit Echtzeit-Marktdaten und Trading-Funktionen über ihre WebSocket-API. Die Komponente TsgcWSAPI_Cex bietet eine native Delphi-Schnittstelle zur Verbindung mit CEX.IO — Entwickler können Live-Ticker-Updates abonnieren, Orderbücher verwalten, Orders platzieren und stornieren sowie Konto-Positionen verwalten — alles über eine persistente WebSocket-Verbindung.

Inhaltsverzeichnis

Übersicht

Die CEX.IO WebSocket-API bietet zwei Funktionskategorien: öffentliche Channels, die Marktdaten ohne Authentifizierung streamen, und private Methoden, die API-Key-Authentifizierung für Trading und Kontomanagement erfordern. Die Komponente TsgcWSAPI_Cex kapselt beide Kategorien und gibt dir eine einzige Delphi-Komponente von Live-Preisfeeds bis hin zur Orderausführung.

Erste Schritte

Um dich mit CEX.IO zu verbinden, platziere eine TsgcWebSocketClient- und eine TsgcWSAPI_Cex-Komponente auf deinem Formular oder erstelle sie im Code. Weise den Client der API-Komponente zu, konfiguriere deine Zugangsdaten und aktiviere die Verbindung.

oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'dein_api_key';
oCex.Cex.ApiSecret := 'dein_api_secret';
oClient.Active := True;
Hinweis: Öffentliche Methoden wie Ticker-Subscriptions erfordern keine API-Zugangsdaten. ApiKey und ApiSecret musst du nur setzen, wenn du private (authentifizierte) Methoden wie Orderplatzierung oder Saldenabfragen nutzen willst.

Öffentliche WebSocket-Methoden

Öffentliche Methoden erlauben den Empfang von Echtzeit-Marktdaten ohne Authentifizierung. Ideal für Dashboards, Charting-Tools oder Preis-Alert-Systeme.

Methode Beschreibung
SubscribeTickers Abonniere Echtzeit-Ticker-Updates für ein Währungspaar (z. B. BTC/USD).
SubscribeChart Abonniere Chart-/Candle-Daten für ein Handelspaar.
SubscribePair Abonniere Updates für ein bestimmtes Handelspaar.
UnSubscribePair Kündige ein zuvor abonniertes Handelspaar.
SubscribeOrderBook Abonniere Orderbuch-Snapshots und inkrementelle Updates für ein Paar.
UnSubscribeOrderBook Kündige Orderbuch-Updates.

Ticker abonnieren

Die Methode SubscribeTickers öffnet einen Live-Stream von Preisdaten für ein Währungspaar. Der erste Parameter ist die Basiswährung, der zweite die Quote-Währung.

// BTC/USD-Ticker-Updates abonnieren
oCex.SubscribeTickers('BTC', 'USD');

Arbeiten mit dem Orderbuch

Orderbuch-Subscriptions liefern den initialen Snapshot und anschließende inkrementelle Updates. Nutze SubscribeOrderBook, um Daten zu empfangen, und UnSubscribeOrderBook, wenn du sie nicht mehr brauchst.

// BTC/USD-Orderbuch abonnieren
oCex.SubscribeOrderBook('BTC', 'USD');
// Später kündigen, wenn nicht mehr nötig
oCex.UnSubscribeOrderBook('BTC', 'USD');

Private WebSocket-Methoden (authentifiziert)

Private Methoden erfordern Authentifizierung über deinen CEX.IO-API-Key und das Secret. Die Komponente erledigt den Authentifizierungs-Handshake automatisch, aber du musst Authenticate aufrufen, bevor du eine private Methode nutzt.

Methode Beschreibung
Authenticate Authentifiziere die WebSocket-Sitzung mit deinem API-Key und Secret.
GetTicker Liefert den aktuellen Ticker für ein bestimmtes Währungspaar.
GetBalance Liefert den Kontosaldo über alle Währungen hinweg.
Ping Sende einen Keepalive-Ping, um die WebSocket-Verbindung aufrechtzuerhalten.
GetOpenOrders Liefert alle aktuell offenen Orders des Kontos.
PlaceOrder Platziere eine neue Buy- oder Sell-Order mit Menge und Preis.
CancelReplaceOrder Storniere eine bestehende Order und ersetze sie atomar durch eine neue.
GetOrderRequest Liefert Details zu einer bestimmten Order anhand ihrer ID.
CancelOrderRequest Storniere eine bestimmte Order anhand ihrer ID.
GetArchivedOrders Liefert historische (abgeschlossene/stornierte) Orders.
OpenPosition Eröffne eine neue Margin-Trading-Position.
GetPosition Liefert Details zu einer bestimmten offenen Position.
GetOpenPositions Liefert alle aktuell offenen Margin-Positionen.
ClosePosition Schließe eine bestehende Margin-Trading-Position.

Code-Beispiel

Das folgende Beispiel zeigt einen vollständigen Workflow: Verbindung zu CEX.IO, Ticker abonnieren, Buy-Order platzieren und Kontosaldo abrufen.

oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'dein_api_key';
oCex.Cex.ApiSecret := 'dein_api_secret';
oClient.Active := True;
// Ticker abonnieren
oCex.SubscribeTickers('BTC', 'USD');
// Order platzieren
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Saldo abrufen
oCex.GetBalance;

Orders platzieren

Die Methode PlaceOrder akzeptiert Basiswährung, Quote-Währung, Menge, Preis und Order-Typ. Der Order-Typ-Parameter verwendet die Enum-Werte ctBuy oder ctSell.

// Buy-Order platzieren: 0.01 BTC zu $30.000
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Sell-Order platzieren: 0.05 ETH zu $2.000
oCex.PlaceOrder('ETH', 'USD', 0.05, 2000, ctSell);

Positionen verwalten

CEX.IO unterstützt Margin-Trading über Positions-Management-Methoden. Du kannst Positionen direkt über die WebSocket-Verbindung eröffnen, abfragen und schließen.

// Alle offenen Positionen abrufen
oCex.GetOpenPositions;
// Bestimmte Position per ID schließen
oCex.ClosePosition(positionId);

Events und Callbacks

Die Komponente TsgcWSAPI_Cex löst Events aus, wenn Daten von der Börse empfangen werden. Weise Handler zu, um eingehende Nachrichten wie Ticker-Updates, Order-Bestätigungen und Saldo-Informationen zu verarbeiten.

Event Ausgelöst wenn
OnCexMessage Eine beliebige Nachricht vom CEX.IO-WebSocket-Server empfangen wird.
OnCexConnect Die WebSocket-Verbindung zu CEX.IO aufgebaut wird.
OnCexDisconnect Die WebSocket-Verbindung geschlossen wird.
OnCexError Eine Fehlerantwort von der Börse empfangen wird.

Konfiguration und Hinweise

API-Zugangsdaten

Hole API-Key und Secret aus den CEX.IO-Kontoeinstellungen. Speichere Zugangsdaten sicher und hardcode sie nie im Produktivcode. Lade sie z. B. aus einer verschlüsselten Konfigurationsdatei oder Umgebungsvariablen.

Verbindungsmanagement

Die WebSocket-Verbindung wird von der Komponente TsgcWebSocketClient verwaltet. Setze Active := True, um zu verbinden, und Active := False, um zu trennen. Die Komponente unterstützt Auto-Reconnect, wenn entsprechende Properties am Client konfiguriert sind.

Authentifizierungs-Flow

Die Authentifizierung muss vor jedem privaten Methodenaufruf abgeschlossen sein. Rufe Authenticate nach dem Verbindungsaufbau auf, oder erledige es im Event OnCexConnect. Die Komponente erzeugt die benötigte HMAC-Signatur automatisch aus deinem API-Key und Secret.

Keepalive

Nutze die Ping-Methode in regelmäßigen Abständen, um die authentifizierte Sitzung am Leben zu halten. CEX.IO kann inaktive Sitzungen nach einem Timeout trennen.

Tipp: Bei mehreren Pair-Subscriptions ist jede unabhängig. Du kannst BTC/USD, ETH/USD und andere Paare gleichzeitig auf derselben Verbindung abonnieren.