OKX-API-Update für sgcWebSockets

· Funktionen
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.