OKX-WebSocket-Trading-API-Integration in Delphi
Die Komponente TsgcWSAPI_OKX bietet umfassenden Delphi-Zugriff auf die OKX-Börse über eine einheitliche WebSocket-Schnittstelle. Sie unterstützt öffentliche Marktdaten-Streams, private Konto-Kanäle und direkte Trading-Operationen inklusive Market- und Limit-Orders – alles über eine einzige Komponente. Diese Anleitung dokumentiert jede verfügbare Methode und jede Konfigurationseigenschaft und enthält funktionierende Codebeispiele, damit du von Delphi aus auf OKX traden kannst.
Inhaltsverzeichnis
Öffentliche WebSocket-Kanäle
Öffentliche Kanäle streamen Marktdaten an alle verbundenen Clients, ohne eine Authentifizierung zu erfordern. Diese Kanäle umfassen Instrumente, Ticker, Orderbücher, Trades, Candlesticks, Funding Rates und mehr. Zu jeder Subscribe-Methode gibt es eine passende Unsubscribe-Methode.
Marktdaten-Kanäle
| Methode |
Beschreibung |
SubscribeInstruments |
Abonniert Updates zu Instrumenten (neue Listings, Delistings, Statusänderungen). |
SubscribeTicker |
Abonniert Echtzeit-Ticker-Daten für ein bestimmtes Instrument. |
SubscribeOpenInterest |
Abonniert Open-Interest-Updates für Futures und Perpetual-Kontrakte. |
SubscribeCandlestick |
Abonniert Candlestick-/Kline-Daten im angegebenen Intervall. |
SubscribeTrades |
Abonniert Echtzeit-Daten zu ausgeführten Trades für ein bestimmtes Instrument. |
SubscribeOrderBook |
Abonniert Orderbuch-Updates mit konfigurierbarer Tiefe. |
Preis- & Index-Kanäle
| Method |
Description |
SubscribeEstimatedPrices |
Abonniert geschätzte Liefer-/Ausübungspreise für Optionen und Futures. |
SubscribeMarkPrice |
Abonniert Mark-Price-Updates für Margin- und PnL-Berechnungen. |
SubscribeMarkPriceCandlestick |
Abonniert Candlestick-Daten basierend auf dem Mark Price. |
SubscribePriceLimit |
Abonniert Preislimit- (Price-Band-) Updates für ein Instrument. |
SubscribeIndexCandlestick |
Abonniert Candlestick-Daten basierend auf dem Index-Preis. |
SubscribeIndexTicker |
Abonniert Index-Ticker-Updates für einen bestimmten Index. |
SubscribeFundingRate |
Abonniert Funding-Rate-Updates für Perpetual-Kontrakte. |
Optionen- & System-Kanäle
| Method |
Description |
SubscribeOptionSummary |
Abonniert zusammengefasste Optionsdaten (Greeks, Volatilität, Open Interest). |
SubscribeStatus |
Abonniert System-Status-Updates (Wartungsarbeiten, Störungen). |
SubscribePublicStructureBlockTrades |
Abonniert öffentliche Daten zu Structure-Block-Trades. |
SubscribeBlockTickers |
Abonniert Ticker-Updates für Block-Trades. |
Hinweis: Zu jeder oben aufgeführten Subscribe-Methode gibt es ein entsprechendes
UnSubscribe-Gegenstück (z. B.
UnSubscribeTicker), um keine Updates mehr für diesen Kanal zu erhalten.
Private WebSocket-Kanäle
Private Kanäle erfordern eine Authentifizierung und liefern Echtzeit-Updates zu deinem Kontostand, deinen Positionen, Orders und algorithmischen Trading-Aktivitäten. Setze OKX.IsPrivate := True und gib gültige API-Zugangsdaten an, bevor du diese Kanäle abonnierst.
Konto- & Positions-Kanäle
| Method |
Description |
SubscribeAccount |
Abonniert Echtzeit-Updates zu Kontostand und Equity. |
SubscribePositions |
Abonniert Positions-Updates (Eröffnen, Schließen, Größenänderungen). |
SubscribeBalanceAndPosition |
Abonniert kombinierte Saldo- und Positions-Updates in einem einzigen Stream. |
SubscribePositionRisk |
Abonniert Updates zu Positionsrisiko-Warnungen (Nähe zur Liquidation). |
SubscribeAccountGreeks |
Abonniert Greeks-Updates auf Kontoebene für Optionspositionen. |
Order- & Algo-Kanäle
| Method |
Description |
SubscribeOrders |
Abonniert Updates zum Order-Status (platziert, ausgeführt, storniert, teilweise ausgeführt). |
SubscribeOrdersAlgo |
Abonniert Updates zu algorithmischen Orders (Trigger, TP/SL, Trailing Stop). |
SubscribeAdvanceAlgo |
Abonniert Updates zu fortgeschrittenen algorithmischen Orders (Iceberg, TWAP). |
RFQ- & Block-Trade-Kanäle
| Method |
Description |
SubscribeRfqs |
Abonniert Request-for-Quote-Updates (RFQ) für Block-Trading. |
SubscribeQuotes |
Abonniert Quote-Updates als Antwort auf RFQs. |
SubscribePrivateStructureBlockTrades |
Abonniert private Updates zu Structure-Block-Trades. |
Grid-Trading-Kanäle
| Method |
Description |
SubscribeSpotGridAlgoOrders |
Abonniert Updates zu Spot-Grid-Algo-Orders. |
SubscribeContactGridAlgoOrders |
Abonniert Updates zu Contract-Grid-Algo-Orders. |
SubscribeGridPositions |
Abonniert Positions-Updates für Grid-Trading. |
SubscribeGridSubOrders |
Abonniert Updates zu einzelnen Sub-Orders innerhalb einer Grid-Strategie. |
WebSocket-Trading-Operationen
OKX unterstützt das Platzieren und Verwalten von Orders direkt über die WebSocket-Verbindung, was eine geringere Latenz als REST-API-Aufrufe bietet. Diese Methoden erfordern eine Authentifizierung.
| Method |
Description |
PlaceOrder |
Platziert eine neue Order mit voller Kontrolle über alle Order-Parameter. |
PlaceMarketOrder |
Platziert eine Market-Order, die sofort zum besten verfügbaren Preis ausgeführt wird. |
PlaceLimitOrder |
Platziert eine Limit-Order zu einem festgelegten Preis, die erst ausgeführt wird, wenn der Markt diesen Preis erreicht. |
CancelOrder |
Storniert eine bestehende Order anhand ihrer Order-ID. |
AmendOrder |
Ändert eine bestehende Order (Preis oder Größe anpassen, ohne sie zu stornieren und neu zu platzieren). |
Hinweis: WebSocket-basiertes Trading bietet deutlich geringere Latenzen als REST-basiertes Order-Placement. OKX verarbeitet WebSocket-Orders mit höherer Priorität, was es zur bevorzugten Methode für latenzkritische Strategien macht.
Codebeispiel
Das folgende Beispiel zeigt, wie du die Komponente TsgcWSAPI_OKX erstellst und konfigurierst, dich an der API authentifizierst, Ticker-Daten abonnierst, Orders überwachst und sowohl Market- als auch Limit-Orders direkt über die WebSocket-Verbindung platzierst.
var
oClient: TsgcWebSocketClient;
oOKX: TsgcWSAPI_OKX;
begin
// Create the WebSocket client
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
// Configure API credentials
oOKX.OKX.ApiKey := 'your_api_key';
oOKX.OKX.ApiSecret := 'your_api_secret';
oOKX.OKX.Passphrase := 'your_passphrase';
oOKX.OKX.IsPrivate := True;
// Connect to OKX
oClient.Active := True;
// Subscribe to BTC-USDT ticker
oOKX.SubscribeTicker('BTC-USDT');
// Subscribe to order updates for spot trading
oOKX.SubscribeOrders(okxitSpot);
// Place a market buy order
oOKX.PlaceMarketOrder(okxosBuy, 'BTC-USDT', 0.001);
// Place a limit buy order
oOKX.PlaceLimitOrder(okxosBuy, 'BTC-USDT', 0.001, 30000);
end;
WebSocket-Ereignisse behandeln
Weise einen Ereignishandler zu, um eingehende WebSocket-Nachrichten zu verarbeiten. Das Ereignis liefert für jedes Update den Kanalnamen und das JSON-Payload.
procedure TForm1.OnOKXEvent(Sender: TObject;
const aChannel, aData: string);
begin
// aChannel identifies the subscription (e.g., 'tickers', 'orders')
// aData contains the JSON payload
Memo1.Lines.Add(aChannel + ': ' + aData);
end;
Demo-Trading-Modus verwenden
OKX bietet eine Demo-Trading-Umgebung zum Testen. Aktiviere sie, indem du vor dem Verbinden OKX.IsDemo := True setzt. Im Demo-Modus verbindet sich der Client mit einem separaten Endpunkt mit simulierten Beständen, sodass du deine Trading-Logik testen kannst, ohne echtes Geld zu riskieren.
// Enable demo trading mode
oOKX.OKX.IsDemo := True;
oOKX.OKX.IsPrivate := True;
oClient.Active := True;
Konfiguration & Hinweise
Konfigurationseigenschaften
Die gesamte Konfiguration erfolgt über die Eigenschaft OKX der Komponente.
| Eigenschaft |
Typ |
Description |
OKX.ApiKey |
String |
Dein OKX-API-Schlüssel. Generiere ihn auf der OKX-API-Verwaltungsseite. |
OKX.ApiSecret |
String |
Dein OKX-API-Secret. Halte diesen Wert geheim und gib ihn niemals im Client-Code preis. |
OKX.Passphrase |
String |
Die Passphrase, die du beim Erstellen des API-Keys gesetzt hast. Für alle authentifizierten Anfragen erforderlich. |
OKX.IsDemo |
Boolean |
Wenn auf True gesetzt, verbindet sich der Client mit der OKX-Demo-Trading-Umgebung mit simulierten Geldern. Standardwert: False. |
OKX.IsPrivate |
Boolean |
Wenn auf True gesetzt, wird die Authentifizierung für die WebSocket-Verbindung aktiviert. Für private Kanäle und Trading-Operationen erforderlich. Standardwert: False. |
Wichtige Hinweise
Sicherheit: Schreibe API-Key, Secret oder Passphrase niemals direkt in deinen Produktivcode. Verwende eine sichere Konfigurationsdatei oder eine Umgebungsvariable, um die Zugangsdaten zu speichern.
- Setze
OKX.IsPrivate := True vor dem Verbinden, wenn du private Kanäle oder Trading-Operationen brauchst. Öffentliche Kanäle funktionieren ohne Authentifizierung.
- Verwende
OKX.IsDemo := True, um vor dem Live-Gang gegen die OKX-Demo-Umgebung zu testen. Der Demo-Modus nutzt separate API-Zugangsdaten, die speziell für die Demo-Plattform generiert werden.
- Die Methode
SubscribeOrders akzeptiert einen Instrument-Typ-Parameter (z. B. okxitSpot, okxitFutures, okxitSwap, okxitOption), um Order-Updates nach Trading-Typ zu filtern.
- Die Convenience-Methoden
PlaceMarketOrder und PlaceLimitOrder akzeptieren einen Order-Side-Parameter (z. B. okxosBuy, okxosSell), eine Instrument-ID, die Größe und (bei Limit-Orders) den Preis.
- Mit der Methode
AmendOrder kannst du Preis oder Größe einer aktiven Order ändern, ohne sie zu stornieren und neu zu platzieren – das reduziert die Latenz und vermeidet einen Verlust deiner Queue-Position.
- OKX setzt Rate-Limits für WebSocket-Nachrichten durch. Sieh in der offiziellen OKX-Dokumentation nach den aktuellen Limits für Subscriptions und Trading-Anfragen pro Sekunde.
- WebSocket-Subscriptions bleiben für die gesamte Lebensdauer der Verbindung bestehen. Wenn die Verbindung abbricht, musst du dich nach dem erneuten Verbinden neu subscriben.