Integratie van de KuCoin Spot- en Futures-API in Delphi
De componenten TsgcWSAPI_Kucoin en TsgcWSAPI_Kucoin_Futures bieden uitgebreide Delphi-toegang tot de KuCoin-beurs: realtime WebSocket-marktdata, private account-streams en een volledige REST-API voor trading, opnames en marktvragen. Deze gids behandelt elke beschikbare methode voor spot en futures, met configuratiedetails en werkende codevoorbeelden.
Inhoudsopgave
Spot-WebSocket-API
De Spot-WebSocket-API biedt realtime streaming voor marktdata en private accountgebeurtenissen. Publieke kanalen zijn beschikbaar zonder authenticatie; private kanalen vereisen geldige API-credentials.
Publieke kanalen
Publieke kanalen streamen marktdata naar alle verbonden clients zonder dat authenticatie vereist is. Elke subscribe-methode heeft een bijbehorende unsubscribe-methode.
| Methode |
Beschrijving |
SubscribeSymbolTicker |
Abonneert zich op realtime ticker-updates voor een specifiek handelssymbool. |
SubscribeAllSymbolsTicker |
Abonneert zich op ticker-updates voor alle symbolen op de exchange. |
SubscribeSymbolSnapshot |
Abonneert zich op snapshot-data voor een specifiek symbool, inclusief 24-uursstatistieken. |
SubscribeMarketSnapshot |
Abonneert zich op marktbrede snapshot-updates. |
SubscribeLevel2MarketData |
Abonneert zich op Level 2-orderboekwijzigingen (volledige diepte). |
SubscribeLevel2_5BestAskBid |
Abonneert zich op de top 5 beste ask- en bid-niveaus van het orderboek. |
SubscribeLevel2_50BestAskBid |
Abonneert zich op de top 50 beste ask- en bid-niveaus van het orderboek. |
SubscribeKlines |
Abonneert zich op candlestick-/kline-data voor een symbool met het opgegeven interval. |
SubscribeMatchExecutionData |
Abonneert zich op realtime match-/uitvoeringsdata voor trades op een symbool. |
SubscribeIndexPrice |
Abonneert zich op indexprijs-updates voor een symbool. |
SubscribeMarkPrice |
Abonneert zich op mark-price-updates voor een symbool. |
SubscribeOrderBookChanged |
Abonneert zich op orderboekwijzigingsgebeurtenissen voor een symbool. |
Let op: Elke hierboven vermelde Subscribe-methode heeft een bijbehorende
UnSubscribe-tegenhanger (bijvoorbeeld
UnSubscribeSymbolTicker) om updates voor dat kanaal te stoppen.
Private kanalen
Private kanalen vereisen geldige API-credentials en bieden realtime updates over je orders, saldi, posities en margin-activiteit.
| Methode |
Beschrijving |
SubscribeTradeOrders |
Abonneert zich op realtime updates van je trade-orders (open, gevuld, geannuleerd). |
SubscribeAccountBalance |
Abonneert zich op realtime wijzigingen van het accountsaldo. |
SubscribePositionStatus |
Abonneert zich op positiestatus-updates voor margin-trading. |
SubscribeMarginTradeOrders |
Abonneert zich op updates van margin-trade-orders. |
SubscribeStopOrder |
Abonneert zich op trigger- en status-updates van stop-orders. |
Spot-REST-API
De Spot-REST-API is toegankelijk via de REST_API-property van TsgcWSAPI_Kucoin. Alle methodes geven JSON-strings terug. De API dekt accounts, opnames, orderbeheer, stop-orders en marktdata.
Accounts
| Methode |
Beschrijving |
GetAccounts |
Geeft een lijst terug van alle accounts (main, trade, margin). |
GetAccount |
Geeft details terug van een specifiek account op basis van account-ID. |
GetAccountBalanceSubAccount |
Geeft het saldo terug van een sub-account. |
InnerTransfer |
Verplaatst fondsen tussen je interne accounts (bijvoorbeeld main naar trade). |
Opnames
| Methode |
Beschrijving |
GetWithdrawalsList |
Geeft een lijst terug van recente opnamegegevens. |
GetHistoricalWithdrawalsList |
Geeft historische opnamegegevens terug buiten het recente venster. |
GetWithdrawalsQuotas |
Geeft de opnamequota en -limieten terug voor een opgegeven valuta. |
ApplyWithdraw |
Start een opname naar een extern adres. |
CancelWithdraw |
Annuleert een lopende opname op basis van het ID. |
Orders
| Methode |
Beschrijving |
PlaceOrder |
Plaatst een nieuwe spot-order (market of limit, koop of verkoop). |
PlaceMarginOrder |
Plaatst een margin-order met geleende fondsen. |
CancelOrderByClientOid |
Annuleert een order op basis van het door de client toegekende order-ID. |
GetOrder |
Geeft details terug van een specifieke order op basis van het door de exchange toegekende ID. |
GetOrderByClientOid |
Geeft details terug van een specifieke order op basis van het door de client toegekende ID. |
ListFills |
Geeft een lijst terug van gevulde orders (trade-uitvoeringen). |
GetRecentFills |
Geeft de meest recente fill-records terug. |
Stop-orders
| Methode |
Beschrijving |
PlaceStopOrder |
Plaatst een stop-order die wordt geactiveerd wanneer de stop-prijs bereikt is. |
PlaceStopMarketOrder |
Plaatst een stop-market-order die wordt uitgevoerd tegen marktprijs zodra deze geactiveerd is. |
PlaceStopLimitOrder |
Plaatst een stop-limit-order die een limit-order aanmaakt zodra deze geactiveerd is. |
CancelStopOrder |
Annuleert een stop-order op basis van het door de exchange toegekende ID. |
CancelStopOrderByClientOid |
Annuleert een stop-order op basis van het door de client toegekende ID. |
CancelAllStopOrders |
Annuleert alle actieve stop-orders, optioneel gefilterd op symbool. |
GetStopOrder |
Geeft details terug van een specifieke stop-order op basis van het door de exchange toegekende ID. |
GetStopOrderByClientOid |
Geeft details terug van een specifieke stop-order op basis van het door de client toegekende ID. |
ListStopOrders |
Geeft een lijst terug van alle actieve stop-orders. |
Marktdata
| Methode |
Beschrijving |
GetSymbolList |
Geeft een lijst terug van beschikbare handelssymbolen. |
GetAllTickers |
Geeft ticker-data terug voor alle handelsparen. |
GetMarketList |
Geeft een lijst terug van beschikbare markten. |
GetPartOrderBook100 |
Geeft de top 100-vermeldingen terug van het orderboek voor een symbool. |
GetFullOrderBook |
Geeft het volledige orderboek terug voor een symbool (Level 3-data). |
GetHistories |
Geeft de recente handelsgeschiedenis terug voor een symbool. |
GetKLines |
Geeft candlestick-/kline-data terug voor een symbool met een opgegeven interval. |
GetCurrencies |
Geeft een lijst terug van alle ondersteunde valuta's. |
GetCurrencyDetail |
Geeft details terug van een specifieke valuta (chain-informatie, precisie, enzovoort). |
GetFiatPrice |
Geeft de fiat-prijs terug voor opgegeven valuta's (bijvoorbeeld de USD-waarde van BTC). |
Futures-WebSocket-API
De Futures-WebSocket-API wordt geleverd door TsgcWSAPI_Kucoin_Futures en biedt realtime streaming voor futurescontract-data en private accountgebeurtenissen.
Publieke kanalen
| Methode |
Beschrijving |
SubscribeSymbolTickerV2 |
Abonneert zich op V2-ticker-updates voor een futurescontract-symbool. |
SubscribeSymbolTicker |
Abonneert zich op ticker-updates voor een futurescontract-symbool. |
SubscribeLevel2MarketData |
Abonneert zich op Level 2-orderboekdata voor een futurescontract. |
SubscribeExecutionData |
Abonneert zich op realtime match-/uitvoeringsdata voor futures-trades. |
SubscribeLevel2_5BestAskBid |
Abonneert zich op de top 5 beste ask-/bid-niveaus voor een futurescontract. |
SubscribeLevel2_50BestAskBid |
Abonneert zich op de top 50 beste ask-/bid-niveaus voor een futurescontract. |
SubscribeContractMarketData |
Abonneert zich op contractbrede marktdata (funding rate, mark price, enzovoort). |
SubscribeSystemAnnouncements |
Abonneert zich op systeembrede aankondigingen en onderhoudsmeldingen. |
SubscribeTransactionStatistics |
Abonneert zich op geaggregeerde transactiestatistieken voor een futurescontract. |
Let op: Elke Subscribe-methode in de futures-tabellen heeft een bijbehorende
UnSubscribe-tegenhanger om updates voor dat kanaal te stoppen.
Private kanalen
| Methode |
Beschrijving |
SubscribeTradeOrders |
Abonneert zich op realtime updates van je futures-trade-orders. |
SubscribeStopOrder |
Abonneert zich op trigger- en status-updates van stop-orders voor futures. |
SubscribeAccountBalance |
Abonneert zich op realtime wijzigingen van het futures-accountsaldo. |
SubscribePositionChange |
Abonneert zich op positiewijzigings-gebeurtenissen (open, sluiten, liquidatie). |
Futures-REST-API
De Futures-REST-API is toegankelijk via de REST_API-property van TsgcWSAPI_Kucoin_Futures. Deze methodes dekken margin-beheer, risicolimieten, funding-geschiedenis en orderboek-queries.
| Methode |
Beschrijving |
AddMarginManually |
Voegt handmatig margin toe aan een futurespositie. |
ObtainFuturesRiskLimitLevel |
Geeft het huidige risicolimietniveau terug voor een futurescontract. |
AdjustRiskLimitLevel |
Past het risicolimietniveau aan voor een futurescontract. |
GetFundingHistory |
Geeft de funding-rate-geschiedenis terug voor een futurescontract. |
GetPartOrderBook100 |
Geeft de top 100-vermeldingen terug van het futures-orderboek. |
GetFullOrderBook |
Geeft het volledige futures-orderboek terug. |
GetLevel2PullingMessages |
Geeft Level 2-pulling-berichten terug voor incrementele orderboek-updates. |
GetInterestRateList |
Geeft de rentetarievenlijst terug die wordt gebruikt voor funding-berekeningen. |
GetIndexList |
Geeft de indexsamenstellingslijst terug voor een futurescontract. |
Codevoorbeeld
Het volgende voorbeeld laat zien hoe je het TsgcWSAPI_Kucoin-component aanmaakt en configureert voor spot-trading, authenticeert met de API, tickers ophaalt via REST, een order plaatst en je abonneert op een realtime tickerstream via WebSocket.
var
oClient: TsgcWebSocketClient;
oKucoin: TsgcWSAPI_Kucoin;
begin
// WebSocket-client aanmaken
oClient := TsgcWebSocketClient.Create(nil);
oKucoin := TsgcWSAPI_Kucoin.Create(nil);
oKucoin.Client := oClient;
// API-credentials configureren
oKucoin.Kucoin.ApiKey := 'your_api_key';
oKucoin.Kucoin.ApiSecret := 'your_api_secret';
oKucoin.Kucoin.Passphrase := 'your_passphrase';
// Verbinden met KuCoin
oClient.Active := True;
// REST: alle tickers ophalen
ShowMessage(oKucoin.REST_API.GetAllTickers);
// REST: een limit-order plaatsen
ShowMessage(oKucoin.REST_API.PlaceOrder(myOrder));
// WebSocket: abonneren op BTC-USDT-ticker
oKucoin.SubscribeSymbolTicker('BTC-USDT');
end;
WebSocket-events afhandelen
Wijs een event-handler toe om binnenkomende berichten te verwerken. De gebeurtenis levert het topic, het subject en de JSON-data voor elke update.
procedure TForm1.OnKucoinEvent(Sender: TObject;
const aTopic, aSubject, aData: string);
begin
// aTopic identificeert het kanaal
// aSubject levert het specifieke symbool of de identificator
// aData bevat de JSON-payload
Memo1.Lines.Add(aTopic + ' [' + aSubject + ']: ' + aData);
end;
Configuratie en opmerkingen
Configuratie-properties
Zowel TsgcWSAPI_Kucoin (spot) als TsgcWSAPI_Kucoin_Futures (futures) delen dezelfde authenticatie-properties, die toegankelijk zijn via de Kucoin-property.
| Property |
Type |
Beschrijving |
Kucoin.ApiKey |
String |
Je KuCoin-API-sleutel. Genereer deze op de KuCoin API Management-pagina. |
Kucoin.ApiSecret |
String |
Je KuCoin-API-secret. Bewaar deze waarde veilig en geef deze nooit prijs in client-side code. |
Kucoin.Passphrase |
String |
De passphrase die je hebt ingesteld bij het aanmaken van de API-sleutel. Vereist voor alle geauthenticeerde requests. |
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.
- Gebruik
TsgcWSAPI_Kucoin voor spot-trading en TsgcWSAPI_Kucoin_Futures voor futures-trading. Elk component maakt verbinding met een ander KuCoin-endpoint.
- De
Passphrase-property is verplicht voor KuCoin en wordt ingesteld tijdens het aanmaken van de API-sleutel op de KuCoin-website.
- Alle REST-methodes geven JSON-strings terug. Gebruik een JSON-parser (zoals
TJSONObject uit System.JSON) om responses te parsen.
- Publieke WebSocket-kanalen vereisen geen authenticatie en kunnen worden gebruikt voor marktdata zonder API-credentials in te stellen.
- Private WebSocket-kanalen en alle REST-methodes die de accountstatus wijzigen, vereisen geldige API-credentials.
- KuCoin handhaaft rate-limits op zowel REST- als WebSocket-API's. Raadpleeg de officiële KuCoin-documentatie voor de huidige limieten.
- WebSocket-verbindingen gebruiken een token-gebaseerd authenticatiesysteem. Het component handelt het verkrijgen en vernieuwen van tokens automatisch af.