Actualización de la API de Kraken en sgcWebSockets

· Características
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.