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.