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.
- Stel
OKX.IsPrivate := True in vóór het verbinden als je private kanalen of trading-bewerkingen nodig hebt. Publieke kanalen werken zonder authenticatie.
- Gebruik
OKX.IsDemo := True om te testen tegen de OKX-demo-omgeving voordat je live gaat. De demo-modus gebruikt aparte API-credentials die specifiek voor het demo-platform zijn gegenereerd.
- De
SubscribeOrders-methode accepteert een instrument-type-parameter (bijvoorbeeld okxitSpot, okxitFutures, okxitSwap, okxitOption) om order-updates te filteren op trading-type.
- De gemaks-methodes
PlaceMarketOrder en PlaceLimitOrder accepteren een order-side-parameter (bijvoorbeeld okxosBuy, okxosSell), instrument-ID, omvang en (voor limit-orders) prijs.
- Met de
AmendOrder-methode kun je de prijs of omvang van een actieve order wijzigen zonder deze te annuleren en opnieuw te plaatsen, wat de latentie verlaagt en verlies van je positie in de wachtrij voorkomt.
- OKX handhaaft rate-limits op WebSocket-berichten. Raadpleeg de officiële OKX-documentatie voor de huidige limieten voor subscriptions en trading-requests per seconde.
- WebSocket-subscriptions blijven bestaan zolang de verbinding actief is. Als de verbinding wordt verbroken, moet je je opnieuw abonneren nadat de verbinding is hersteld.