Aggiornamento API Kraken per sgcWebSockets

· Funzionalità
Integrazione delle API Spot e Futures di Kraken in Delphi

Kraken è uno degli exchange di criptovalute più longevi e affidabili, e offre mercati sia spot che futures. I componenti TsgcWSAPI_Kraken e TsgcWSAPI_Kraken_Futures per Delphi forniscono accesso completo alle API WebSocket e REST di Kraken, abilitando lo streaming di dati di mercato in tempo reale, la gestione dell'account, il piazzamento degli ordini e il trading di futures da un'unica codebase.

Indice

Panoramica

L'API di Kraken è divisa in due piattaforme distinte, ognuna con il proprio componente:

Componente Mercato Descrizione
TsgcWSAPI_Kraken Spot Fai trading di criptovalute sull'exchange spot di Kraken con supporto WebSocket e REST
TsgcWSAPI_Kraken_Futures Futures Fai trading di contratti futures perpetui e a scadenza fissa con posizioni a leva

Entrambi i componenti forniscono un approccio a doppio canale: connessioni WebSocket per lo streaming dei dati in tempo reale a bassa latenza ed endpoint REST per operazioni di richiesta/risposta come l'interrogazione dei saldi, il piazzamento degli ordini e il recupero dei dati storici.

Configurazione

Sia il componente Spot che Futures richiedono credenziali API per le operazioni private (autenticate). Gli endpoint pubblici come i dati di mercato non richiedono autenticazione.

Proprietà Tipo Descrizione
Kraken.ApiKey Stringa La tua API key Kraken, generata dalla pagina di impostazioni dell'account Kraken
Kraken.ApiSecret Stringa Il tuo API secret Kraken, usato per firmare le richieste private
Nota: Genera le tue API key su kraken.com > Sicurezza > API. Assegna solo i permessi di cui la tua applicazione ha bisogno. Per dashboard di sola lettura, disabilita completamente i permessi di trading e prelievo.

API WebSocket Spot

L'API WebSocket Spot fornisce streaming in tempo reale per dati di mercato ed eventi privati dell'account. I metodi sono divisi in canali pubblici (nessuna autenticazione richiesta) e canali privati (richiedono un token WebSocket valido).

Canali pubblici

Metodo Descrizione
SubscribeTicker / UnSubscribeTicker Informazioni ticker in tempo reale tra cui miglior bid/ask, volume 24h e statistiche di prezzo
SubscribeOHLC / UnSubscribeOHLC Dati OHLC (candlestick) in tempo reale a intervalli configurabili
SubscribeTrade / UnSubscribeTrade Feed di esecuzione degli scambi in tempo reale che mostra ogni scambio sull'exchange
SubscribeBook / UnSubscribeBook Snapshot del book degli ordini e aggiornamenti incrementali a profondità configurabile
SubscribeSpread / UnSubscribeSpread Aggiornamenti in tempo reale del miglior spread bid/ask
SubscribeAll / UnSubscribeAll Iscriviti o annulla l'iscrizione a tutti i canali pubblici per una data coppia in una volta sola

Canali privati

Metodo Descrizione
SubscribeOwnTrades / UnSubscribeOwnTrades Feed in tempo reale dei tuoi scambi eseguiti
SubscribeOpenOrders / UnSubscribeOpenOrders Aggiornamenti in tempo reale sui tuoi ordini aperti (nuovi, modificati, cancellati, eseguiti)
AddOrder Piazza un nuovo ordine via WebSocket (latenza inferiore rispetto a REST)
CancelOrder Cancella un ordine esistente 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

L'API REST Spot è accessibile tramite la proprietà REST_API del componente TsgcWSAPI_Kraken. Fornisce un set completo di endpoint per query di dati di mercato, gestione dell'account, trading e operazioni sui fondi.

Metodi REST pubblici

Metodo Descrizione
GetServerTime Restituisce l'ora corrente del server (utile per la sincronizzazione dell'orologio)
GetAssets Elenca tutti gli asset disponibili e le loro proprietà (decimali, nome visualizzato)
GetAssetPairs Elenca tutte le coppie di asset negoziabili con struttura delle commissioni e info sui margini
GetTicker Restituisce i dati ticker per una o più coppie (bid, ask, last, volume, VWAP)
GetOHLC Restituisce dati candela OHLC per una data coppia e intervallo
GetOrderBook Restituisce il book degli ordini corrente per una data coppia alla profondità specificata
GetTrades Restituisce gli scambi recenti per una data coppia
GetSpread Restituisce i dati di spread recenti per una data coppia

Metodi REST privati - Account e trading

Metodo Descrizione
GetAccountBalance Restituisce i saldi per tutti gli asset nel tuo account
GetTradeBalance Restituisce info sul saldo di trading (equity, margine, margine libero, P&L)
GetOpenOrders Restituisce tutti gli ordini attualmente aperti
GetClosedOrders Restituisce gli ordini chiusi di recente
QueryOrders Interroga ordini specifici per ID di transazione
GetTradesHistory Restituisce la tua cronologia degli scambi
QueryTrades Interroga scambi specifici per ID di scambio
GetLedgers Restituisce le voci del ledger (depositi, prelievi, scambi, commissioni)
QueryLedgers Interroga voci specifiche del ledger per ID
GetTradeVolume Restituisce il tuo volume di trading degli ultimi 30 giorni e il fee tier
AddOrder Piazza un nuovo ordine via REST
CancelOrder Cancella un ordine esistente via REST
GetWebSocketsToken Genera un token richiesto per le sottoscrizioni WebSocket private

Metodi REST privati - Export e reporting

Metodo Descrizione
AddExport Richiedi un export di dati (scambi o voci del ledger)
ExportStatus Controlla lo stato di una richiesta di export in sospeso
RetrieveExport Scarica un file di export completato
RemoveExport Elimina un report di export

Metodi REST privati - Funding

Metodo Descrizione
GetDepositMethods Restituisce i metodi di deposito disponibili per un dato asset
GetDepositAddresses Restituisce gli indirizzi di deposito per un dato asset e metodo
GetStatusOfRecentDeposits Restituisce lo stato delle transazioni di deposito recenti
GetWithdrawalInformation Restituisce i dettagli di prelievo (commissione, minimo, limite) per un dato asset
WithdrawFunds Avvia un prelievo verso un indirizzo esterno
GetStatusOfRecentWithdraws Restituisce lo stato delle transazioni di prelievo recenti
RequestWithdrawalCancelation Tenta di cancellare un prelievo in sospeso
RequestWalletTransfer Trasferisci fondi tra wallet Kraken (es. da spot a 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 Futures

Il componente TsgcWSAPI_Kraken_Futures fornisce streaming in tempo reale per i mercati futures di Kraken, inclusi contratti perpetui e futures a scadenza fissa.

Canali pubblici

Metodo Descrizione
SubscribeTicker / UnSubscribeTicker Dati ticker futures in tempo reale tra cui mark price, index price e funding rate
SubscribeTrade / UnSubscribeTrade Feed di esecuzione degli scambi in tempo reale per i mercati futures
SubscribeBook / UnSubscribeBook Snapshot del book degli ordini e aggiornamenti incrementali per i contratti futures
SubscribeHeartBeat / UnSubscribeHeartBeat Monitoraggio della salute della connessione tramite messaggi heartbeat periodici
SubscribeTickerLite / UnSubscribeTickerLite Ticker leggero con payload ridotto per monitoraggio ad alta frequenza

Canali privati

Metodo Descrizione
SubscribeOpenOrdersVerbose / UnSubscribeOpenOrdersVerbose Aggiornamenti dettagliati in tempo reale sugli ordini aperti con informazioni complete
SubscribeOpenPositions / UnSubscribeOpenPositions Aggiornamenti in tempo reale sulle posizioni futures aperte
SubscribeAccountLog / UnSubscribeAccountLog Log attività dell'account in tempo reale (funding, liquidazioni, ecc.)
SubscribeFills / UnSubscribeFills Notifiche di fill in tempo reale per i tuoi ordini futures
SubscribeOpenOrders / UnSubscribeOpenOrders Aggiornamenti leggeri di stato degli ordini aperti
SubscribeAccountBalanceAndMargins / UnSubscribeAccountBalanceAndMargins Aggiornamenti in tempo reale di saldo e margine per il tuo account futures
SubscribeNotifications / UnSubscribeNotifications Notifiche di sistema e avvisi per il tuo account

API REST Futures

L'API REST Futures è accessibile tramite la proprietà REST_API di TsgcWSAPI_Kraken_Futures. Fornisce endpoint per dati di mercato, gestione degli ordini, query dell'account e trasferimenti di fondi.

Metodi REST pubblici

Metodo Descrizione
GetFeeSchedules Restituisce lo schema commissioni corrente per il trading futures
GetHistory Restituisce dati di mercato storici per contratti futures
GetInstruments Elenca tutti gli strumenti futures disponibili e le loro specifiche di contratto
GetTickers Restituisce dati ticker per tutti i contratti futures

Metodi REST privati - Account e ordini

Metodo Descrizione
GetAccounts Restituisce i saldi e le informazioni sui margini dell'account futures
GetFills Restituisce la cronologia recente dei fill per i tuoi ordini futures
GetHistoricalExecutions Restituisce esecuzioni storiche degli ordini
GetHistoricalOrders Restituisce dati storici degli ordini
GetHistoricalTriggers Restituisce eventi storici di trigger per ordini condizionali
GetOpenPositions Restituisce tutte le posizioni futures attualmente aperte
GetNotifications Restituisce notifiche dell'account

Metodi REST privati - Gestione degli ordini

Metodo Descrizione
SendMarketOrder Piazza un ordine market al miglior prezzo corrente
SendLimitOrder Piazza un ordine limit a un prezzo specificato
SendStopOrder Piazza un ordine stop che si attiva a un prezzo specificato
SendTakeProfit Piazza un ordine take-profit
CancelAllOrders Cancella tutti gli ordini futures aperti in una volta sola
CancelOrderByOrderId Cancella un ordine specifico usando l'ID ordine di Kraken
CancelOrderByCliOrderId Cancella un ordine specifico usando il tuo client order ID
EditOrderByOrderId Modifica un ordine esistente usando l'ID ordine di Kraken
EditOrderByCliOrderId Modifica un ordine esistente usando il tuo client order ID

Metodi REST privati - Trasferimenti e reporting

Metodo Descrizione
Transfer Trasferisci fondi tra sub-account futures
WalletTransfer Trasferisci tra tipi di wallet
SubAccountTransfer Trasferisci tra sub-account
WithdrawalToSpotWallet Sposta fondi dal wallet futures al wallet spot
GetFeeScheduleVolumes Restituisce il tuo volume per il calcolo del fee tier
GetAccountLogCSV Scarica il log attività dell'account come file CSV

Esempio di codice completo

L'esempio seguente dimostra come connettersi all'API Spot di Kraken, recuperare dati di mercato via REST, interrogare il saldo del proprio account e sottoscrivere un feed ticker in tempo reale via 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;

Esempio Futures

L'impostazione del componente Futures segue lo stesso pattern, usando TsgcWSAPI_Kraken_Futures al posto di:

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;

Note e best practice

API key Spot vs Futures

Kraken usa API key separate per il trading spot e futures. Genera chiavi dedicate per ogni piattaforma dalla pagina di impostazioni di Kraken. Non riutilizzare la stessa chiave in entrambi i componenti.

Token WebSocket per canali privati

Le sottoscrizioni WebSocket private sull'exchange spot richiedono un token temporaneo ottenuto tramite il metodo REST GetWebSocketsToken. Il componente gestisce questo automaticamente quando le credenziali API sono configurate, ma sii consapevole che i token scadono e verranno rinnovati secondo necessità.

Rate limit

Kraken applica rate limit sia sulle API REST che WebSocket. Gli endpoint REST usano un sistema basato su contatore in cui ogni chiamata incrementa un contatore, e il contatore decresce nel tempo. Superare il limite comporta un blocco temporaneo. Usa le sottoscrizioni WebSocket per i dati in tempo reale invece di fare polling sugli endpoint REST.

Denominazione delle coppie di asset

Nota: Kraken usa convenzioni di denominazione diverse per le API REST e WebSocket. Gli endpoint REST usano tipicamente nomi concatenati come XBTUSD, mentre i canali WebSocket usano il formato separato da slash XBT/USD. Il componente gestisce questa distinzione, ma tienilo presente quando elabori le risposte. Usa GetAssetPairs per scoprire i nomi esatti di tutte le coppie disponibili.