Integración de la API spot y de futuros de Kraken en Delphi
Kraken es uno de los exchanges de criptomonedas más antiguos y de mayor confianza, con mercados tanto spot como de futuros. Los componentes TsgcWSAPI_Kraken y TsgcWSAPI_Kraken_Futures para Delphi proporcionan acceso completo a las APIs WebSocket y REST de Kraken, permitiendo streaming de datos de mercado en tiempo real, gestión de cuenta, envío de órdenes y trading de futuros desde una sola base de código.
Índice
Visión general
La API de Kraken se divide en dos plataformas distintas, cada una con su propio componente:
| Component |
Market |
Description |
TsgcWSAPI_Kraken |
Spot |
Trade cryptocurrencies on Kraken's spot exchange with WebSocket and REST support |
TsgcWSAPI_Kraken_Futures |
Futures |
Trade perpetual and fixed-maturity futures contracts with leveraged positions |
Ambos componentes proporcionan un enfoque de canal dual: conexiones WebSocket para streaming de datos en tiempo real de baja latencia y endpoints REST para operaciones de petición/respuesta como consultar saldos, enviar órdenes y recuperar datos históricos.
Configuración
Tanto el componente Spot como el de Futuros requieren credenciales de API para operaciones privadas (autenticadas). Los endpoints públicos como los datos de mercado no requieren autenticación.
| Property |
Type |
Description |
Kraken.ApiKey |
String |
Your Kraken API key, generated from the Kraken account settings page |
Kraken.ApiSecret |
String |
Your Kraken API secret, used for signing private requests |
Nota: Genera tus API keys en
kraken.com > Security > API. Asigna solo los permisos que tu aplicación necesite. Para paneles de solo lectura, desactiva por completo los permisos de trading y retirada.
API WebSocket Spot
La API WebSocket Spot proporciona streaming en tiempo real para datos de mercado y eventos privados de cuenta. Los métodos se dividen en canales públicos (no requieren autenticación) y canales privados (requieren un token WebSocket válido).
Canales públicos
| Method |
Description |
SubscribeTicker / UnSubscribeTicker |
Real-time ticker information including best bid/ask, 24h volume, and price statistics |
SubscribeOHLC / UnSubscribeOHLC |
Real-time OHLC (candlestick) data at configurable intervals |
SubscribeTrade / UnSubscribeTrade |
Real-time trade execution feed showing every trade on the exchange |
SubscribeBook / UnSubscribeBook |
Order book snapshots and incremental updates at configurable depth |
SubscribeSpread / UnSubscribeSpread |
Real-time best bid/ask spread updates |
SubscribeAll / UnSubscribeAll |
Subscribe to or unsubscribe from all public channels for a given pair at once |
Canales privados
| Método |
Descripción |
SubscribeOwnTrades / UnSubscribeOwnTrades |
Feed en tiempo real de tus propias operaciones ejecutadas |
SubscribeOpenOrders / UnSubscribeOpenOrders |
Real-time updates on your open orders (new, modified, cancelled, filled) |
AddOrder |
Place a new order via WebSocket (lower latency than REST) |
CancelOrder |
Cancel an existing order via WebSocket |
// Subscribe to public ticker data for BTC/USD
oKraken.SubscribeTicker('XBT/USD');
// Subscribe to the order book with 10-level depth
oKraken.SubscribeBook('XBT/USD');
// Subscribe to real-time trades
oKraken.SubscribeTrade('ETH/USD');
// Subscribe to private channels (requires API key)
oKraken.SubscribeOwnTrades;
oKraken.SubscribeOpenOrders;
API REST Spot
A la API REST Spot se accede mediante la propiedad REST_API del componente TsgcWSAPI_Kraken. Proporciona un conjunto completo de endpoints para consultas de datos de mercado, gestión de cuenta, trading y operaciones con fondos.
Métodos REST públicos
| Method |
Description |
GetServerTime |
Returns the server's current time (useful for clock synchronization) |
GetAssets |
Lists all available assets and their properties (decimals, display name) |
GetAssetPairs |
Lists all tradeable asset pairs with fee structure and margin info |
GetTicker |
Returns ticker data for one or more pairs (bid, ask, last, volume, VWAP) |
GetOHLC |
Returns OHLC candle data for a given pair and interval |
GetOrderBook |
Returns the current order book for a given pair at specified depth |
GetTrades |
Returns recent trades for a given pair |
GetSpread |
Returns recent spread data for a given pair |
Private REST Methods - Account and Trading
| Method |
Description |
GetAccountBalance |
Returns balances for all assets in your account |
GetTradeBalance |
Returns trade balance info (equity, margin, free margin, P&L) |
GetOpenOrders |
Returns all currently open orders |
GetClosedOrders |
Returns recently closed orders |
QueryOrders |
Query specific orders by transaction ID |
GetTradesHistory |
Returns your trade history |
QueryTrades |
Query specific trades by trade ID |
GetLedgers |
Returns ledger entries (deposits, withdrawals, trades, fees) |
QueryLedgers |
Query specific ledger entries by ID |
GetTradeVolume |
Returns your 30-day trading volume and fee tier |
AddOrder |
Place a new order via REST |
CancelOrder |
Cancel an existing order via REST |
GetWebSocketsToken |
Generates a token required for private WebSocket subscriptions |
Private REST Methods - Export and Reporting
| Method |
Description |
AddExport |
Request a data export (trades or ledger entries) |
ExportStatus |
Check the status of a pending export request |
RetrieveExport |
Download a completed export file |
RemoveExport |
Delete an export report |
Private REST Methods - Funding
| Method |
Description |
GetDepositMethods |
Returns available deposit methods for a given asset |
GetDepositAddresses |
Returns deposit addresses for a given asset and method |
GetStatusOfRecentDeposits |
Returns the status of recent deposit transactions |
GetWithdrawalInformation |
Returns withdrawal details (fee, minimum, limit) for a given asset |
WithdrawFunds |
Initiate a withdrawal to an external address |
GetStatusOfRecentWithdraws |
Returns the status of recent withdrawal transactions |
RequestWithdrawalCancelation |
Attempt to cancel a pending withdrawal |
RequestWalletTransfer |
Transfer funds between Kraken wallets (e.g., spot to futures) |
// Public REST: Get ticker data
ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
// Public REST: Get OHLC data
ShowMessage(oKraken.REST_API.GetOHLC('XBTUSD'));
// Private REST: Get account balance
ShowMessage(oKraken.REST_API.GetAccountBalance);
// Private REST: Get open orders
ShowMessage(oKraken.REST_API.GetOpenOrders);
API WebSocket de Futuros
El componente TsgcWSAPI_Kraken_Futures proporciona streaming en tiempo real para los mercados de futuros de Kraken, incluyendo contratos perpetuos y futuros de vencimiento fijo.
Public Channels
| Method |
Description |
SubscribeTicker / UnSubscribeTicker |
Real-time futures ticker data including mark price, index price, and funding rate |
SubscribeTrade / UnSubscribeTrade |
Real-time trade execution feed for futures markets |
SubscribeBook / UnSubscribeBook |
Order book snapshots and incremental updates for futures contracts |
SubscribeHeartBeat / UnSubscribeHeartBeat |
Connection health monitoring via periodic heartbeat messages |
SubscribeTickerLite / UnSubscribeTickerLite |
Lightweight ticker with reduced payload for high-frequency monitoring |
Private Channels
| Method |
Description |
SubscribeOpenOrdersVerbose / UnSubscribeOpenOrdersVerbose |
Detailed real-time open order updates with full order information |
SubscribeOpenPositions / UnSubscribeOpenPositions |
Real-time updates on open futures positions |
SubscribeAccountLog / UnSubscribeAccountLog |
Real-time account activity log (funding, liquidations, etc.) |
SubscribeFills / UnSubscribeFills |
Real-time fill notifications for your futures orders |
SubscribeOpenOrders / UnSubscribeOpenOrders |
Lightweight open order status updates |
SubscribeAccountBalanceAndMargins / UnSubscribeAccountBalanceAndMargins |
Real-time balance and margin updates for your futures account |
SubscribeNotifications / UnSubscribeNotifications |
System notifications and alerts for your account |
API REST de Futuros
A la API REST de Futuros se accede mediante la propiedad REST_API de TsgcWSAPI_Kraken_Futures. Proporciona endpoints para datos de mercado, gestión de órdenes, consultas de cuenta y transferencias de fondos.
Public REST Methods
| Method |
Description |
GetFeeSchedules |
Returns the current fee schedule for futures trading |
GetHistory |
Returns historical market data for futures contracts |
GetInstruments |
Lists all available futures instruments and their contract specifications |
GetTickers |
Returns ticker data for all futures contracts |
Private REST Methods - Account and Orders
| Method |
Description |
GetAccounts |
Returns futures account balances and margin information |
GetFills |
Returns recent fill history for your futures orders |
GetHistoricalExecutions |
Returns historical order executions |
GetHistoricalOrders |
Returns historical order data |
GetHistoricalTriggers |
Returns historical trigger events for conditional orders |
GetOpenPositions |
Returns all currently open futures positions |
GetNotifications |
Returns account notifications |
Private REST Methods - Order Management
| Method |
Description |
SendMarketOrder |
Place a market order at the current best price |
SendLimitOrder |
Place a limit order at a specified price |
SendStopOrder |
Place a stop order that triggers at a specified price |
SendTakeProfit |
Place a take-profit order |
CancelAllOrders |
Cancel all open futures orders at once |
CancelOrderByOrderId |
Cancel a specific order using Kraken's order ID |
CancelOrderByCliOrderId |
Cancel a specific order using your client order ID |
EditOrderByOrderId |
Modify an existing order using Kraken's order ID |
EditOrderByCliOrderId |
Modify an existing order using your client order ID |
Private REST Methods - Transfers and Reporting
| Method |
Description |
Transfer |
Transfer funds between futures sub-accounts |
WalletTransfer |
Transfer between wallet types |
SubAccountTransfer |
Transfer between sub-accounts |
WithdrawalToSpotWallet |
Move funds from futures wallet back to spot wallet |
GetFeeScheduleVolumes |
Returns your volume for fee tier calculation |
GetAccountLogCSV |
Download account activity log as CSV file |
Ejemplo de código completo
El siguiente ejemplo muestra cómo conectarse a la API Spot de Kraken, obtener datos de mercado mediante REST, consultar el saldo de tu cuenta y suscribirse a un feed de ticker en tiempo real mediante WebSocket.
var
oClient: TsgcWebSocketClient;
oKraken: TsgcWSAPI_Kraken;
begin
// Create and configure the WebSocket client
oClient := TsgcWebSocketClient.Create(nil);
oKraken := TsgcWSAPI_Kraken.Create(nil);
oKraken.Client := oClient;
// Configure API credentials for private endpoints
oKraken.Kraken.ApiKey := 'your_api_key';
oKraken.Kraken.ApiSecret := 'your_api_secret';
// Connect to Kraken
oClient.Active := True;
// REST: Get ticker data for BTC/USD
ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
// REST: Get account balance (requires API key)
ShowMessage(oKraken.REST_API.GetAccountBalance);
// WebSocket: Subscribe to real-time ticker
oKraken.SubscribeTicker('XBT/USD');
end;
Ejemplo de Futuros
Configurar el componente de Futuros sigue el mismo patrón, usando TsgcWSAPI_Kraken_Futures en su lugar:
var
oClient: TsgcWebSocketClient;
oFutures: TsgcWSAPI_Kraken_Futures;
begin
oClient := TsgcWebSocketClient.Create(nil);
oFutures := TsgcWSAPI_Kraken_Futures.Create(nil);
oFutures.Client := oClient;
// Configure API credentials
oFutures.Kraken.ApiKey := 'your_futures_api_key';
oFutures.Kraken.ApiSecret := 'your_futures_api_secret';
oClient.Active := True;
// REST: Get all available futures instruments
ShowMessage(oFutures.REST_API.GetInstruments);
// REST: Get account information
ShowMessage(oFutures.REST_API.GetAccounts);
// WebSocket: Subscribe to futures ticker
oFutures.SubscribeTicker('PI_XBTUSD');
// WebSocket: Subscribe to private account updates
oFutures.SubscribeOpenPositions;
oFutures.SubscribeAccountBalanceAndMargins;
end;
Notas y buenas prácticas
API keys Spot vs. Futuros
Kraken usa API keys separadas para trading spot y de futuros. Genera claves dedicadas para cada plataforma desde la página de configuración de Kraken. No reutilices la misma clave en ambos componentes.
Token WebSocket para canales privados
Las suscripciones WebSocket privadas en el exchange spot requieren un token temporal obtenido mediante el método REST GetWebSocketsToken. El componente lo gestiona automáticamente cuando se configuran las credenciales de API, pero ten en cuenta que los tokens caducan y se renovarán según sea necesario.
Límites de tasa
Kraken aplica límites de tasa tanto en las APIs REST como WebSocket. Los endpoints REST usan un sistema basado en contadores donde cada llamada incrementa un contador que decae con el tiempo. Superar el límite provoca un bloqueo temporal. Usa suscripciones WebSocket para datos en tiempo real en lugar de hacer polling a los endpoints REST.
Nomenclatura de pares de activos
Nota: Kraken usa convenciones de nomenclatura diferentes para las APIs REST y WebSocket. Los endpoints REST normalmente usan nombres concatenados como
XBTUSD, mientras que los canales WebSocket usan el formato con barra
XBT/USD. El componente gestiona esta distinción, pero tenlo en cuenta al procesar las respuestas. Usa
GetAssetPairs para descubrir los nombres exactos de todos los pares disponibles.