Update OKX-API in sgcWebSockets

· Functies
Integratie van de OKX WebSocket-trading-API in Delphi

De component TsgcWSAPI_OKX biedt uitgebreide Delphi-toegang tot de OKX-beurs via een uniforme WebSocket-interface. Hij ondersteunt publieke marktdata-streams, private accountkanalen en directe trading-bewerkingen, waaronder market- en limit-orders, allemaal via één component. Deze gids beschrijft elke beschikbare methode, elke configuratie-property en bevat werkende codevoorbeelden om je vanuit Delphi op OKX te laten traden.

Inhoudsopgave

Publieke WebSocket-kanalen

Public channels stream market data to all connected clients without requiring authentication. These channels cover instruments, tickers, order books, trades, candlesticks, funding rates, and more. Each subscribe method has a corresponding unsubscribe method.

Marktdata-kanalen

Methode Beschrijving
SubscribeInstruments Abonneert zich op instrument-updates (nieuwe listings, delistings, statuswijzigingen).
SubscribeTicker Abonneert zich op realtime ticker-data voor een specifiek instrument.
SubscribeOpenInterest Abonneert zich op open-interest-updates voor futures- en perpetual-contracten.
SubscribeCandlestick Abonneert zich op candlestick-/kline-data met het opgegeven interval.
SubscribeTrades Abonneert zich op realtime trade-uitvoeringsdata voor een specifiek instrument.
SubscribeOrderBook Abonneert zich op orderboek-updates met configureerbare diepte.

Prijs- en indexkanalen

Methode Beschrijving
SubscribeEstimatedPrices Abonneert zich op de geschatte delivery-/exercise-prijs voor opties en futures.
SubscribeMarkPrice Abonneert zich op mark-price-updates die worden gebruikt voor margin- en PnL-berekeningen.
SubscribeMarkPriceCandlestick Abonneert zich op candlestick-data op basis van de mark-price.
SubscribePriceLimit Abonneert zich op price-limit-updates (price band) voor een instrument.
SubscribeIndexCandlestick Abonneert zich op candlestick-data op basis van de indexprijs.
SubscribeIndexTicker Abonneert zich op index-ticker-updates voor een opgegeven index.
SubscribeFundingRate Abonneert zich op funding-rate-updates voor perpetual-contracten.

Opties- en systeemkanalen

Methode Beschrijving
SubscribeOptionSummary Abonneert zich op options-summary-data (greeks, volatiliteit, open interest).
SubscribeStatus Abonneert zich op systeemstatus-updates (onderhoud, verstoringen).
SubscribePublicStructureBlockTrades Abonneert zich op publieke structure block-trade-data.
SubscribeBlockTickers Abonneert zich op block-trade-ticker-updates.
Let op: Elke hierboven vermelde Subscribe-methode heeft een bijbehorende UnSubscribe-tegenhanger (bijvoorbeeld UnSubscribeTicker) om updates voor dat kanaal te stoppen.

Private WebSocket-kanalen

Private kanalen vereisen authenticatie en leveren realtime updates over je accountstatus, posities, orders en algoritmische trading-activiteit. Stel OKX.IsPrivate := True in en geef geldige API-credentials op voordat je je op deze kanalen abonneert.

Account- en positiekanalen

Methode Beschrijving
SubscribeAccount Abonneert zich op realtime updates van accountsaldo en equity.
SubscribePositions Abonneert zich op positie-updates (open, sluiten, omvangwijzigingen).
SubscribeBalanceAndPosition Abonneert zich op gecombineerde saldo- en positie-updates in één stream.
SubscribePositionRisk Abonneert zich op risicowaarschuwings-updates voor posities (nabijheid van liquidatie).
SubscribeAccountGreeks Abonneert zich op greeks-updates op accountniveau voor optieposities.

Order- en algo-kanalen

Methode Beschrijving
SubscribeOrders Abonneert zich op orderstatus-updates (geplaatst, gevuld, geannuleerd, gedeeltelijk gevuld).
SubscribeOrdersAlgo Abonneert zich op algoritmische order-updates (trigger, TP/SL, trailing stop).
SubscribeAdvanceAlgo Abonneert zich op geavanceerde algoritmische order-updates (iceberg, TWAP).

RFQ- en block-trade-kanalen

Methode Beschrijving
SubscribeRfqs Abonneert zich op request-for-quote-updates (RFQ) voor block-trading.
SubscribeQuotes Abonneert zich op quote-updates in reactie op RFQ's.
SubscribePrivateStructureBlockTrades Abonneert zich op private structure block-trade-updates.

Grid-trading-kanalen

Methode Beschrijving
SubscribeSpotGridAlgoOrders Abonneert zich op spot-grid-algo-order-updates.
SubscribeContactGridAlgoOrders Abonneert zich op contract-grid-algo-order-updates.
SubscribeGridPositions Abonneert zich op grid-trading-positie-updates.
SubscribeGridSubOrders Abonneert zich op individuele sub-order-updates binnen een grid-strategie.

WebSocket-tradingbewerkingen

OKX ondersteunt het plaatsen en beheren van orders rechtstreeks via de WebSocket-verbinding, wat lagere latentie biedt dan REST-API-aanroepen. Deze methodes vereisen authenticatie.

Methode Beschrijving
PlaceOrder Plaatst een nieuwe order met volledige controle over alle orderparameters.
PlaceMarketOrder Plaatst een market-order die direct wordt uitgevoerd tegen de best beschikbare prijs.
PlaceLimitOrder Plaatst een limit-order tegen een opgegeven prijs, alleen uitgevoerd wanneer de markt die prijs bereikt.
CancelOrder Annuleert een bestaande order op basis van het order-ID.
AmendOrder Wijzigt een bestaande order (prijs of omvang aanpassen zonder annuleren en opnieuw plaatsen).
Let op: Trading via WebSocket biedt aanzienlijk lagere latentie dan orderplaatsing via REST. OKX verwerkt WebSocket-orders met hogere prioriteit, waardoor dit de voorkeursmethode is voor latentiegevoelige strategieën.

Codevoorbeeld

Het volgende voorbeeld laat zien hoe je het TsgcWSAPI_OKX-component aanmaakt en configureert, authenticeert met de API, je abonneert op ticker-data, orders monitort en zowel market- als limit-orders rechtstreeks via de WebSocket-verbinding plaatst.

var
  oClient: TsgcWebSocketClient;
  oOKX: TsgcWSAPI_OKX;
begin
  // WebSocket-client aanmaken
  oClient := TsgcWebSocketClient.Create(nil);
  oOKX := TsgcWSAPI_OKX.Create(nil);
  oOKX.Client := oClient;
  // API-credentials configureren
  oOKX.OKX.ApiKey := 'your_api_key';
  oOKX.OKX.ApiSecret := 'your_api_secret';
  oOKX.OKX.Passphrase := 'your_passphrase';
  oOKX.OKX.IsPrivate := True;
  // Verbinden met OKX
  oClient.Active := True;
  // Abonneren op BTC-USDT-ticker
  oOKX.SubscribeTicker('BTC-USDT');
  // Abonneren op order-updates voor spot-trading
  oOKX.SubscribeOrders(okxitSpot);
  // Een market-koop-order plaatsen
  oOKX.PlaceMarketOrder(okxosBuy, 'BTC-USDT', 0.001);
  // Een limit-koop-order plaatsen
  oOKX.PlaceLimitOrder(okxosBuy, 'BTC-USDT', 0.001, 30000);
end;

WebSocket-events afhandelen

Wijs een event-handler toe om binnenkomende WebSocket-berichten te verwerken. De gebeurtenis levert de kanaalnaam en de JSON-payload voor elke update.

procedure TForm1.OnOKXEvent(Sender: TObject;
  const aChannel, aData: string);
begin
  // aChannel identificeert de subscription (bijvoorbeeld 'tickers', 'orders')
  // aData bevat de JSON-payload
  Memo1.Lines.Add(aChannel + ': ' + aData);
end;

Demo-tradingmodus gebruiken

OKX biedt een demo-tradingomgeving om te testen. Schakel deze in door OKX.IsDemo := True in te stellen vóór het verbinden. De demo-modus maakt verbinding met een apart endpoint met gesimuleerde saldi, zodat je je tradinglogica kunt testen zonder echte fondsen te riskeren.

// Demo-tradingmodus inschakelen
oOKX.OKX.IsDemo := True;
oOKX.OKX.IsPrivate := True;
oClient.Active := True;

Configuratie en opmerkingen

Configuratie-properties

Alle configuratie is toegankelijk via de OKX-property van het component.

Property Type Beschrijving
OKX.ApiKey String Je OKX-API-sleutel. Genereer deze op de OKX API Management-pagina.
OKX.ApiSecret String Je OKX-API-secret. Bewaar deze waarde veilig en geef deze nooit prijs in client-side code.
OKX.Passphrase String De passphrase die je hebt ingesteld bij het aanmaken van de API-sleutel. Vereist voor alle geauthenticeerde requests.
OKX.IsDemo Boolean Wanneer ingesteld op True, wordt verbinding gemaakt met de OKX-demo-tradingomgeving met gesimuleerde fondsen. Standaard False.
OKX.IsPrivate Boolean Wanneer ingesteld op True, wordt authenticatie op de WebSocket-verbinding ingeschakeld. Vereist voor private kanalen en trading-bewerkingen. Standaard False.

Belangrijke opmerkingen

Beveiliging: Hard-code je API-sleutel, secret of passphrase nooit rechtstreeks in productiecode. Gebruik een veilig configuratiebestand of een omgevingsvariabele om credentials op te slaan.