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
- Erste Schritte
- Öffentliche WebSocket-Methoden
- Private WebSocket-Methoden (authentifiziert)
- Code-Beispiel
- Events und Callbacks
- Konfiguration und Hinweise
Ü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.
