Integração da API Kraken Spot e Futures em Delphi
Kraken é uma das corretoras de criptomoedas mais antigas e confiáveis, oferecendo mercados spot e de futuros. Os componentes TsgcWSAPI_Kraken e TsgcWSAPI_Kraken_Futures para Delphi fornecem acesso completo às APIs WebSocket e REST da Kraken, permitindo streaming de dados de mercado em tempo real, gerenciamento de conta, colocação de ordens e negociação de futuros a partir de uma única base de código.
Índice
Visão geral
A API da Kraken é dividida em duas plataformas distintas, cada uma com seu próprio componente:
| Component |
Mercado |
Descrição |
TsgcWSAPI_Kraken |
Spot |
Negocie criptomoedas na corretora spot da Kraken com suporte a WebSocket e REST |
TsgcWSAPI_Kraken_Futures |
Futures |
Negocie contratos futuros perpétuos e de vencimento fixo com posições alavancadas |
Ambos os componentes oferecem uma abordagem de canal duplo: conexões WebSocket para streaming de dados em tempo real com baixa latência, e endpoints REST para operações de requisição/resposta, como consulta de saldos, colocação de ordens e recuperação de dados históricos.
Configuração
Tanto o componente Spot quanto o Futures exigem credenciais de API para operações privadas (autenticadas). Endpoints públicos, como dados de mercado, não requerem autenticação.
| Propriedade |
Tipo |
Descrição |
Kraken.ApiKey |
String |
Sua chave de API da Kraken, gerada na página de configurações da conta Kraken |
Kraken.ApiSecret |
String |
Seu segredo de API da Kraken, usado para assinar requisições privadas |
Nota: Gere suas chaves de API em
kraken.com > Security > API. Atribua apenas as permissões que seu aplicativo necessita. Para dashboards somente leitura, desative completamente as permissões de negociação e saque.
API WebSocket Spot
A API WebSocket Spot fornece streaming em tempo real para dados de mercado e eventos privados de conta. Os métodos são divididos em canais públicos (sem autenticação) e canais privados (exigem um token WebSocket válido).
Canais Públicos
| Método |
Descrição |
SubscribeTicker / UnSubscribeTicker |
Informações de ticker em tempo real, incluindo melhor bid/ask, volume 24h e estatísticas de preço |
SubscribeOHLC / UnSubscribeOHLC |
Dados OHLC (candlestick) em tempo real em intervalos configuráveis |
SubscribeTrade / UnSubscribeTrade |
Feed de execução de trades em tempo real mostrando todas as negociações na corretora |
SubscribeBook / UnSubscribeBook |
Snapshots e atualizações incrementais do livro de ordens em profundidade configurável |
SubscribeSpread / UnSubscribeSpread |
Atualizações em tempo real do melhor spread bid/ask |
SubscribeAll / UnSubscribeAll |
Assinar ou cancelar todos os canais públicos de um par de uma só vez |
Canais Privados
| Método |
Descrição |
SubscribeOwnTrades / UnSubscribeOwnTrades |
Feed em tempo real das suas próprias negociações executadas |
SubscribeOpenOrders / UnSubscribeOpenOrders |
Atualizações em tempo real das suas ordens abertas (novas, modificadas, canceladas, executadas) |
AddOrder |
Colocar uma nova ordem via WebSocket (menor latência que REST) |
CancelOrder |
Cancelar uma ordem existente 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 API REST Spot é acessada pela propriedade REST_API do componente TsgcWSAPI_Kraken. Ela fornece um conjunto abrangente de endpoints para consultas de dados de mercado, gerenciamento de conta, negociação e operações de fundos.
Métodos REST Públicos
| Método |
Descrição |
GetServerTime |
Retorna a hora atual do servidor (útil para sincronização de relógio) |
GetAssets |
Lista todos os ativos disponíveis e suas propriedades (decimais, nome de exibição) |
GetAssetPairs |
Lista todos os pares de ativos negociáveis com estrutura de taxas e informações de margem |
GetTicker |
Retorna dados de ticker para um ou mais pares (bid, ask, último, volume, VWAP) |
GetOHLC |
Retorna dados de candle OHLC para um par e intervalo específicos |
GetOrderBook |
Retorna o livro de ordens atual de um par na profundidade especificada |
GetTrades |
Retorna negociações recentes de um par específico |
GetSpread |
Retorna dados de spread recentes de um par específico |
Métodos REST Privados - Conta e Negociação
| Método |
Descrição |
GetAccountBalance |
Retorna os saldos de todos os ativos na sua conta |
GetTradeBalance |
Retorna informações de saldo de negociação (patrimônio, margem, margem livre, P&L) |
GetOpenOrders |
Retorna todas as ordens abertas no momento |
GetClosedOrders |
Retorna ordens fechadas recentemente |
QueryOrders |
Consultar ordens específicas por ID de transação |
GetTradesHistory |
Retorna seu histórico de negociações |
QueryTrades |
Consultar negociações específicas por ID de trade |
GetLedgers |
Retorna entradas do ledger (depósitos, saques, negociações, taxas) |
QueryLedgers |
Consultar entradas específicas do ledger por ID |
GetTradeVolume |
Retorna seu volume de negociação dos últimos 30 dias e faixa de taxa |
AddOrder |
Colocar uma nova ordem via REST |
CancelOrder |
Cancelar uma ordem existente via REST |
GetWebSocketsToken |
Gera um token necessário para assinaturas privadas de WebSocket |
Métodos REST Privados - Exportação e Relatórios
| Método |
Descrição |
AddExport |
Solicitar uma exportação de dados (negociações ou entradas de ledger) |
ExportStatus |
Verificar o status de uma solicitação de exportação pendente |
RetrieveExport |
Baixar um arquivo de exportação concluído |
RemoveExport |
Excluir um relatório de exportação |
Métodos REST Privados - Fundos
| Método |
Descrição |
GetDepositMethods |
Retorna os métodos de depósito disponíveis para um ativo específico |
GetDepositAddresses |
Retorna endereços de depósito para um ativo e método específicos |
GetStatusOfRecentDeposits |
Retorna o status das transações de depósito recentes |
GetWithdrawalInformation |
Retorna detalhes de saque (taxa, mínimo, limite) para um ativo específico |
WithdrawFunds |
Iniciar um saque para um endereço externo |
GetStatusOfRecentWithdraws |
Retorna o status das transações de saque recentes |
RequestWithdrawalCancelation |
Tentar cancelar um saque pendente |
RequestWalletTransfer |
Transferir fundos entre carteiras Kraken (ex.: spot para 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
O componente TsgcWSAPI_Kraken_Futures fornece streaming em tempo real para os mercados de futuros da Kraken, incluindo contratos perpétuos e futuros de vencimento fixo.
Canais Públicos
| Método |
Descrição |
SubscribeTicker / UnSubscribeTicker |
Dados de ticker de futuros em tempo real, incluindo preço mark, preço index e taxa de financiamento |
SubscribeTrade / UnSubscribeTrade |
Feed de execução de trades em tempo real para mercados de futuros |
SubscribeBook / UnSubscribeBook |
Snapshots e atualizações incrementais do livro de ordens para contratos futuros |
SubscribeHeartBeat / UnSubscribeHeartBeat |
Monitoramento de saúde da conexão via mensagens periódicas de heartbeat |
SubscribeTickerLite / UnSubscribeTickerLite |
Ticker leve com payload reduzido para monitoramento de alta frequência |
Canais Privados
| Método |
Descrição |
SubscribeOpenOrdersVerbose / UnSubscribeOpenOrdersVerbose |
Atualizações detalhadas de ordens abertas em tempo real com informações completas da ordem |
SubscribeOpenPositions / UnSubscribeOpenPositions |
Atualizações em tempo real de posições abertas em futuros |
SubscribeAccountLog / UnSubscribeAccountLog |
Log de atividades da conta em tempo real (financiamento, liquidações, etc.) |
SubscribeFills / UnSubscribeFills |
Notificações de preenchimento em tempo real para suas ordens de futuros |
SubscribeOpenOrders / UnSubscribeOpenOrders |
Atualizações leves de status de ordens abertas |
SubscribeAccountBalanceAndMargins / UnSubscribeAccountBalanceAndMargins |
Atualizações em tempo real de saldo e margem da sua conta de futuros |
SubscribeNotifications / UnSubscribeNotifications |
Notificações e alertas do sistema para sua conta |
API REST Futures
A API REST Futures é acessada pela propriedade REST_API de TsgcWSAPI_Kraken_Futures. Ela fornece endpoints para dados de mercado, gerenciamento de ordens, consultas de conta e transferências de fundos.
Métodos REST Públicos
| Método |
Descrição |
GetFeeSchedules |
Retorna a tabela de taxas atual para negociação de futuros |
GetHistory |
Retorna dados históricos de mercado para contratos futuros |
GetInstruments |
Lista todos os instrumentos de futuros disponíveis e suas especificações de contrato |
GetTickers |
Retorna dados de ticker para todos os contratos futuros |
Métodos REST Privados - Conta e Ordens
| Método |
Descrição |
GetAccounts |
Retorna saldos e informações de margem da conta de futuros |
GetFills |
Retorna o histórico de preenchimentos recentes das suas ordens de futuros |
GetHistoricalExecutions |
Retorna execuções históricas de ordens |
GetHistoricalOrders |
Retorna dados históricos de ordens |
GetHistoricalTriggers |
Retorna eventos de gatilho históricos para ordens condicionais |
GetOpenPositions |
Retorna todas as posições abertas de futuros no momento |
GetNotifications |
Retorna notificações da conta |
Métodos REST Privados - Gerenciamento de Ordens
| Método |
Descrição |
SendMarketOrder |
Colocar uma ordem a mercado pelo melhor preço atual |
SendLimitOrder |
Colocar uma ordem limitada a um preço específico |
SendStopOrder |
Colocar uma ordem stop que é acionada a um preço específico |
SendTakeProfit |
Colocar uma ordem de take-profit |
CancelAllOrders |
Cancelar todas as ordens abertas de futuros de uma só vez |
CancelOrderByOrderId |
Cancelar uma ordem específica usando o ID de ordem da Kraken |
CancelOrderByCliOrderId |
Cancelar uma ordem específica usando seu ID de ordem do cliente |
EditOrderByOrderId |
Modificar uma ordem existente usando o ID de ordem da Kraken |
EditOrderByCliOrderId |
Modificar uma ordem existente usando seu ID de ordem do cliente |
Métodos REST Privados - Transferências e Relatórios
| Método |
Descrição |
Transfer |
Transferir fundos entre subcontas de futuros |
WalletTransfer |
Transferir entre tipos de carteira |
SubAccountTransfer |
Transferir entre subcontas |
WithdrawalToSpotWallet |
Mover fundos da carteira de futuros de volta para a carteira spot |
GetFeeScheduleVolumes |
Retorna seu volume para cálculo da faixa de taxa |
GetAccountLogCSV |
Baixar o log de atividades da conta como arquivo CSV |
Exemplo de Código Completo
O exemplo a seguir demonstra como conectar à API Kraken Spot, buscar dados de mercado via REST, consultar o saldo da sua conta e assinar um feed de ticker em tempo real 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;
Exemplo de Futures
A configuração do componente Futures segue o mesmo padrão, usando TsgcWSAPI_Kraken_Futures no 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 e Boas Práticas
Chaves de API Spot vs. Futures
A Kraken usa chaves de API separadas para negociação spot e futures. Gere chaves dedicadas para cada plataforma na página de configurações da Kraken. Não reutilize a mesma chave nos dois componentes.
Token WebSocket para Canais Privados
Assinaturas privadas de WebSocket na corretora spot exigem um token temporário obtido via o método REST GetWebSocketsToken. O componente lida com isso automaticamente quando as credenciais de API estão configuradas, mas esteja ciente de que os tokens expiram e serão renovados conforme necessário.
Limites de Taxa
A Kraken aplica limites de taxa nas APIs REST e WebSocket. Os endpoints REST usam um sistema baseado em contador, em que cada chamada incrementa um contador que decai com o tempo. Exceder o limite resulta em bloqueio temporário. Use assinaturas WebSocket para dados em tempo real em vez de fazer polling nos endpoints REST.
Nomenclatura de Pares de Ativos
Nota: A Kraken usa convenções de nomenclatura diferentes para as APIs REST e WebSocket. Endpoints REST geralmente usam nomes concatenados como
XBTUSD, enquanto os canais WebSocket usam o formato com barra
XBT/USD. O componente lida com essa distinção, mas leve isso em conta ao processar as respostas. Use
GetAssetPairs para descobrir os nomes exatos de todos os pares disponíveis.