Integração da API KuCoin Spot e Futures em Delphi
Os componentes TsgcWSAPI_Kucoin e TsgcWSAPI_Kucoin_Futures oferecem acesso completo em Delphi à exchange KuCoin, abrangendo dados de mercado em tempo real via WebSocket, streams de conta privada e uma API REST completa para negociação, saques e consultas de mercado. Este guia cobre todos os métodos disponíveis nas versões spot e futuros, com detalhes de configuração e exemplos de código funcionais.
Índice
Spot WebSocket API
A Spot WebSocket API oferece streaming em tempo real para dados de mercado e eventos de conta privada. Os canais públicos estão disponíveis sem autenticação, enquanto os canais privados exigem credenciais de API válidas.
Canais Públicos
Os canais públicos transmitem dados de mercado para todos os clientes conectados sem exigir autenticação. Cada método de inscrição possui um método de cancelamento correspondente.
| Método |
Descrição |
SubscribeSymbolTicker |
Assina atualizações de ticker em tempo real para um símbolo de negociação específico. |
SubscribeAllSymbolsTicker |
Assina atualizações de ticker para todos os símbolos da exchange. |
SubscribeSymbolSnapshot |
Assina dados de snapshot para um símbolo específico, incluindo estatísticas de 24h. |
SubscribeMarketSnapshot |
Assina atualizações de snapshot do mercado como um todo. |
SubscribeLevel2MarketData |
Assina alterações no livro de ordens Level 2 (profundidade total). |
SubscribeLevel2_5BestAskBid |
Assina os 5 melhores níveis de venda e compra do livro de ordens. |
SubscribeLevel2_50BestAskBid |
Assina os 50 melhores níveis de venda e compra do livro de ordens. |
SubscribeKlines |
Assina dados de candlestick/kline para um símbolo no intervalo especificado. |
SubscribeMatchExecutionData |
Assina dados de execução de negociações em tempo real para um símbolo. |
SubscribeIndexPrice |
Assina atualizações de preço do índice para um símbolo. |
SubscribeMarkPrice |
Assina atualizações do preço de marcação para um símbolo. |
SubscribeOrderBookChanged |
Assina eventos de alteração no livro de ordens de um símbolo. |
Nota: Todo método Subscribe listado acima possui um método
UnSubscribe correspondente (ex.:
UnSubscribeSymbolTicker) para interromper o recebimento de atualizações daquele canal.
Canais Privados
Os canais privados exigem credenciais de API válidas e fornecem atualizações em tempo real sobre suas ordens, saldos, posições e atividades de margem.
| Método |
Descrição |
SubscribeTradeOrders |
Assina atualizações em tempo real das suas ordens de negociação (abertas, executadas, canceladas). |
SubscribeAccountBalance |
Assina alterações de saldo da conta em tempo real. |
SubscribePositionStatus |
Assina atualizações de status de posição para negociação com margem. |
SubscribeMarginTradeOrders |
Assina atualizações de ordens de negociação com margem. |
SubscribeStopOrder |
Assina atualizações de acionamento e status de ordens stop. |
Spot REST API
A Spot REST API é acessada pela propriedade REST_API de TsgcWSAPI_Kucoin. Todos os métodos retornam strings JSON. A API cobre contas, saques, gerenciamento de ordens, ordens stop e dados de mercado.
Contas
| Método |
Descrição |
GetAccounts |
Retorna uma lista de todas as contas (principal, negociação, margem). |
GetAccount |
Retorna detalhes de uma conta específica pelo ID da conta. |
GetAccountBalanceSubAccount |
Retorna o saldo de uma subconta. |
InnerTransfer |
Transfere fundos entre suas contas internas (ex.: da principal para a de negociação). |
Saques
| Método |
Descrição |
GetWithdrawalsList |
Retorna uma lista dos registros de saque recentes. |
GetHistoricalWithdrawalsList |
Retorna registros históricos de saques além da janela recente. |
GetWithdrawalsQuotas |
Retorna a cota e os limites de saque para uma determinada moeda. |
ApplyWithdraw |
Inicia um saque para um endereço externo. |
CancelWithdraw |
Cancela um saque pendente pelo seu ID. |
Ordens
| Método |
Descrição |
PlaceOrder |
Envia uma nova ordem spot (mercado ou limite, compra ou venda). |
PlaceMarginOrder |
Envia uma ordem de margem com fundos emprestados. |
CancelOrderByClientOid |
Cancela uma ordem usando o ID de ordem atribuído pelo cliente. |
GetOrder |
Retorna detalhes de uma ordem específica pelo ID atribuído pela exchange. |
GetOrderByClientOid |
Retorna detalhes de uma ordem específica pelo ID atribuído pelo cliente. |
ListFills |
Retorna uma lista de ordens executadas (negociações realizadas). |
GetRecentFills |
Retorna os registros de execução mais recentes. |
Ordens Stop
| Método |
Descrição |
PlaceStopOrder |
Envia uma ordem stop que é acionada quando o preço stop é atingido. |
PlaceStopMarketOrder |
Envia uma ordem stop-mercado que executa ao preço de mercado após ser acionada. |
PlaceStopLimitOrder |
Envia uma ordem stop-limite que cria uma ordem limite após ser acionada. |
CancelStopOrder |
Cancela uma ordem stop pelo ID atribuído pela exchange. |
CancelStopOrderByClientOid |
Cancela uma ordem stop pelo ID atribuído pelo cliente. |
CancelAllStopOrders |
Cancela todas as ordens stop ativas, com filtro opcional por símbolo. |
GetStopOrder |
Retorna detalhes de uma ordem stop específica pelo ID atribuído pela exchange. |
GetStopOrderByClientOid |
Retorna detalhes de uma ordem stop específica pelo ID atribuído pelo cliente. |
ListStopOrders |
Retorna uma lista de todas as ordens stop ativas. |
Dados de Mercado
| Método |
Descrição |
GetSymbolList |
Retorna uma lista de símbolos de negociação disponíveis. |
GetAllTickers |
Retorna dados de ticker para todos os pares de negociação. |
GetMarketList |
Retorna uma lista de mercados disponíveis. |
GetPartOrderBook100 |
Retorna as 100 principais entradas do livro de ordens de um símbolo. |
GetFullOrderBook |
Retorna o livro de ordens completo de um símbolo (dados Level 3). |
GetHistories |
Retorna o histórico de negociações recentes de um símbolo. |
GetKLines |
Retorna dados de candlestick/kline de um símbolo em um determinado intervalo. |
GetCurrencies |
Retorna uma lista de todas as moedas suportadas. |
GetCurrencyDetail |
Retorna detalhes de uma moeda específica (info de rede, precisão, etc.). |
GetFiatPrice |
Retorna o preço em moeda fiduciária para as moedas especificadas (ex.: valor em USD do BTC). |
Futures WebSocket API
A Futures WebSocket API é fornecida pelo componente TsgcWSAPI_Kucoin_Futures e oferece streaming em tempo real para dados de contratos futuros e eventos de conta privada.
Canais Públicos
| Método |
Descrição |
SubscribeSymbolTickerV2 |
Assina atualizações de ticker V2 para um símbolo de contrato futuro. |
SubscribeSymbolTicker |
Assina atualizações de ticker para um símbolo de contrato futuro. |
SubscribeLevel2MarketData |
Assina dados do livro de ordens Level 2 para um contrato futuro. |
SubscribeExecutionData |
Assina dados de execução de negociações de futuros em tempo real. |
SubscribeLevel2_5BestAskBid |
Assina os 5 melhores níveis de venda/compra para um contrato futuro. |
SubscribeLevel2_50BestAskBid |
Assina os 50 melhores níveis de venda/compra para um contrato futuro. |
SubscribeContractMarketData |
Assina dados de mercado no nível do contrato (taxa de financiamento, preço de marcação, etc.). |
SubscribeSystemAnnouncements |
Assina anúncios gerais do sistema e avisos de manutenção. |
SubscribeTransactionStatistics |
Assina estatísticas agregadas de transações para um contrato futuro. |
Nota: Todo método Subscribe listado nas tabelas de futuros possui um método
UnSubscribe correspondente para interromper o recebimento de atualizações daquele canal.
Canais Privados
| Método |
Descrição |
SubscribeTradeOrders |
Assina atualizações em tempo real das suas ordens de futuros. |
SubscribeStopOrder |
Assina atualizações de acionamento e status de ordens stop para futuros. |
SubscribeAccountBalance |
Assina alterações de saldo da conta de futuros em tempo real. |
SubscribePositionChange |
Assina eventos de alteração de posição (abertura, fechamento, liquidação). |
Futures REST API
A Futures REST API é acessada pela propriedade REST_API de TsgcWSAPI_Kucoin_Futures. Esses métodos cobrem gerenciamento de margem, limites de risco, histórico de financiamento e consultas ao livro de ordens.
| Método |
Descrição |
AddMarginManually |
Adiciona margem manualmente a uma posição de futuros. |
ObtainFuturesRiskLimitLevel |
Retorna o nível de limite de risco atual para um contrato futuro. |
AdjustRiskLimitLevel |
Ajusta o nível de limite de risco de um contrato futuro. |
GetFundingHistory |
Retorna o histórico de taxas de financiamento de um contrato futuro. |
GetPartOrderBook100 |
Retorna as 100 principais entradas do livro de ordens de futuros. |
GetFullOrderBook |
Retorna o livro de ordens de futuros completo. |
GetLevel2PullingMessages |
Retorna mensagens de pulling Level 2 para atualizações incrementais do livro de ordens. |
GetInterestRateList |
Retorna a lista de taxas de juros usadas nos cálculos de financiamento. |
GetIndexList |
Retorna a lista de composição do índice para um contrato futuro. |
Exemplo de Código
O exemplo a seguir demonstra como criar e configurar o componente TsgcWSAPI_Kucoin para negociação spot, autenticar-se na API, obter tickers via REST, enviar uma ordem e assinar um stream de ticker em tempo real via WebSocket.
var
oClient: TsgcWebSocketClient;
oKucoin: TsgcWSAPI_Kucoin;
begin
// Create the WebSocket client
oClient := TsgcWebSocketClient.Create(nil);
oKucoin := TsgcWSAPI_Kucoin.Create(nil);
oKucoin.Client := oClient;
// Configure API credentials
oKucoin.Kucoin.ApiKey := 'your_api_key';
oKucoin.Kucoin.ApiSecret := 'your_api_secret';
oKucoin.Kucoin.Passphrase := 'your_passphrase';
// Connect to KuCoin
oClient.Active := True;
// REST: Get all tickers
ShowMessage(oKucoin.REST_API.GetAllTickers);
// REST: Place a limit order
ShowMessage(oKucoin.REST_API.PlaceOrder(myOrder));
// WebSocket: Subscribe to BTC-USDT ticker
oKucoin.SubscribeSymbolTicker('BTC-USDT');
end;
Tratando Eventos WebSocket
Atribua um tratador de eventos para processar as mensagens recebidas. O evento fornece o tópico, o assunto e os dados JSON de cada atualização.
procedure TForm1.OnKucoinEvent(Sender: TObject;
const aTopic, aSubject, aData: string);
begin
// aTopic identifies the channel
// aSubject provides the specific symbol or identifier
// aData contains the JSON payload
Memo1.Lines.Add(aTopic + ' [' + aSubject + ']: ' + aData);
end;
Configuração e Notas
Propriedades de Configuração
Tanto o TsgcWSAPI_Kucoin (spot) quanto o TsgcWSAPI_Kucoin_Futures (futuros) compartilham as mesmas propriedades de autenticação, acessadas pela propriedade Kucoin.
| Propriedade |
Tipo |
Descrição |
Kucoin.ApiKey |
String |
Sua chave de API do KuCoin. Gere-a na página de Gerenciamento de API do KuCoin. |
Kucoin.ApiSecret |
String |
Seu segredo de API do KuCoin. Mantenha este valor seguro e nunca o exponha em código do lado do cliente. |
Kucoin.Passphrase |
String |
A frase secreta que você definiu ao criar a chave de API. Obrigatória em todas as requisições autenticadas. |
Notas Importantes
Segurança: Nunca inclua sua chave de API, segredo ou frase secreta diretamente no código de produção. Use um arquivo de configuração seguro ou variável de ambiente para armazenar as credenciais.
- Use
TsgcWSAPI_Kucoin para negociação spot e TsgcWSAPI_Kucoin_Futures para negociação de futuros. Cada componente se conecta a um endpoint diferente do KuCoin.
- A propriedade
Passphrase é obrigatória para o KuCoin e é definida durante a criação da chave de API no site do KuCoin.
- Todos os métodos REST retornam strings JSON. Use um parser JSON (como
TJSONObject de System.JSON) para processar as respostas.
- Os canais WebSocket públicos não exigem autenticação e podem ser usados para dados de mercado sem configurar credenciais de API.
- Os canais WebSocket privados e todos os métodos REST que modificam o estado da conta exigem credenciais de API válidas.
- O KuCoin impõe limites de taxa nas APIs REST e WebSocket. Consulte a documentação oficial do KuCoin para os limites atuais.
- As conexões WebSocket usam um sistema de autenticação baseado em token. O componente gerencia automaticamente a obtenção e a renovação do token.