Apidog

Plataforma Colaborativa All-in-one para Desenvolvimento de API

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Como Usar a API do Kraken para Negociação de Criptomoedas Sem Fricções

@apidog

@apidog

Updated on março 28, 2025

A API do Kraken fornece aos desenvolvedores uma interface poderosa para uma das principais exchanges de criptomoedas do mundo. Se você está construindo aplicações de negociação, monitorando mercados ou gerenciando portfólios de criptomoedas, este guia ajudará você a navegar pelos aspectos essenciais das capacidades da API do Kraken e das abordagens de implementação.

💡
Antes de mergulhar na API do Kraken, confira Apidog—uma ferramenta gratuita que simplifica o teste e a integração de APIs. A interface amigável do Apidog torna fácil depurar e otimizar seus fluxos de trabalho de API, economizando tempo e esforço.
botão

O que é a API do Kraken?

A API do Kraken permite que os desenvolvedores acessem programaticamente a funcionalidade da exchange através de uma interface RESTful. Com esta API, você pode:

  • Acessar dados de mercado em tempo real (preços, livros de ordens, negociações)
  • Fazer e gerenciar ordens de negociação
  • Monitorar saldos e posições de conta
  • Processar depósitos e retiradas
  • Acessar dados históricos de negociação

Configurando o Acesso à API

Criando Sua Conta Kraken

Antes de usar a API, você precisará:

  1. Criar uma conta no Kraken em kraken.com
  2. Completar os requisitos de verificação com base em suas necessidades de uso
  3. Ativar a autenticação de dois fatores (2FA) para maior segurança

Gerando Chaves de API

Para interagir com a API, crie chaves de API com permissões adequadas:

  1. Faça login na sua conta do Kraken
  2. Navegue até Conexão & API

3. Clique em Gerar Nova Chave

4. Defina as permissões apropriadas:

  • Consulta: Acesso somente leitura às informações da conta
  • Negociação: Capacidade de fazer e cancelar ordens
  • Depositar: Gerar endereços de depósito
  • Retirar: Criar solicitações de retirada
⚠️ AVISO DE SEGURANÇA
- Armazene as chaves da API com segurança e nunca compartilhe sua chave privada
- Restrinja as permissões da chave da API apenas ao que for necessário
- Considere implementar restrições de endereço IP

Compreendendo a Estrutura da API

A API do Kraken está organizada em uma estrutura lógica:

URL Base da API e Endpoints

Todos os pedidos de API começam com a URL base: https://api.kraken.com

A versão atual da API é designada por /0/ no caminho da URL, seguida por:

  • /public/ - Endpoints que não exigem autenticação
  • /private/ - Endpoints que requerem autenticação com sua chave de API

Formato da Resposta

Todas as respostas da API seguem um formato JSON padrão:

{
  "error": [],
  "result": { /* Dados da resposta */ }
}

Fazendo Suas Primeiras Solicitações à API

Solicitações Públicas à API

Os endpoints públicos fornecem dados do mercado sem exigir autenticação.

Exemplo: Obtendo Informações do Ticker

import requests

# Obter informações do ticker para Bitcoin em USD
response = requests.get('https://api.kraken.com/0/public/Ticker?pair=XBTUSD')
ticker_data = response.json()

if not ticker_data['error']:
    btc_data = ticker_data['result']['XXBTZUSD']
    print(f"Preço da Última Negociação BTC/USD: {btc_data['c'][0]}")
    print(f"Volume 24h BTC/USD: {btc_data['v'][1]}")
else:
    print(f"Erro: {ticker_data['error']}")

Exemplo: Dados do Livro de Ordens

fetch('https://api.kraken.com/0/public/Depth?pair=ETHUSD&count=5')
  .then(response => response.json())
  .then(data => {
    if (data.error.length === 0) {
      const orderbook = data.result.XETHZUSD;
      console.log("Ofertas Top 5 ETH/USD:", orderbook.bids);
      console.log("Pedidos Top 5 ETH/USD:", orderbook.asks);
    }
  });

Autenticação de API Privada

Os endpoints privados requerem autenticação com suas chaves de API através de um processo envolvendo:

  1. Gerar um nonce (número crescente)
  2. Criar uma assinatura de solicitação usando HMAC-SHA512
  3. Enviar a solicitação com sua chave de API e assinatura

Implementação de Autenticação

import time
import base64
import hashlib
import hmac
import urllib.parse
import requests

def kraken_request(api_key, api_sec, endpoint, data=None):
    """Fazer uma solicitação autenticada à API do Kraken"""
    if data is None:
        data = {}
        
    api_url = "https://api.kraken.com"
    
    # Adicionar nonce aos dados
    data['nonce'] = str(int(time.time() * 1000))
    
    # Codificar dados para a assinatura
    encoded_data = urllib.parse.urlencode(data)
    
    # Criar assinatura
    signature_data = (data['nonce'] + encoded_data).encode()
    message = endpoint.encode() + hashlib.sha256(signature_data).digest()
    signature = hmac.new(base64.b64decode(api_sec), message, hashlib.sha512)
    signature_digest = base64.b64encode(signature.digest()).decode()
    
    # Configurar cabeçalhos
    headers = {
        'API-Key': api_key,
        'API-Sign': signature_digest
    }
    
    # Enviar solicitação
    response = requests.post(api_url + endpoint, headers=headers, data=data)
    return response.json()

Funcionalidade Central da API

Informações da Conta

Verificando o Saldo da Conta

balance = kraken_request(api_key, api_secret, "/0/private/Balance")

if not balance['error']:
    for asset, amount in balance['result'].items():
        print(f"{asset}: {amount}")

Gerenciamento de Ordens

Fazendo uma Ordem de Mercado

# Parâmetros para comprar 0.01 BTC ao preço de mercado
order_params = {
    'pair': 'XBTUSD',
    'type': 'buy',
    'ordertype': 'market',
    'volume': '0.01'
}

order_result = kraken_request(api_key, api_secret, "/0/private/AddOrder", order_params)

if not order_result['error']:
    print(f"Ordem realizada! ID da Transação: {order_result['result']['txid'][0]}")

Fazendo uma Ordem Limite

# Parâmetros para vender 0.01 BTC a $50.000
limit_params = {
    'pair': 'XBTUSD',
    'type': 'sell',
    'ordertype': 'limit',
    'price': '50000',
    'volume': '0.01'
}

limit_result = kraken_request(api_key, api_secret, "/0/private/AddOrder", limit_params)

Consultando Ordens Abertas

open_orders = kraken_request(api_key, api_secret, "/0/private/OpenOrders")

if not open_orders['error']:
    orders = open_orders['result']['open']
    for order_id, details in orders.items():
        print(f"ID: {order_id}")
        print(f"Tipo: {details['descr']['type']} {details['descr']['ordertype']}")

Usando o APIdog com a API do Kraken

APIdog oferece uma plataforma poderosa para desenvolver, testar e documentar suas integrações com a API do Kraken. Veja como aproveitar o APIdog para um desenvolvimento simplificado:

Configurando a API do Kraken no APIdog

Crie um Novo Projeto

  • Inicie o APIdog e crie um novo projeto
  • Configure um ambiente para testes da API do Kraken

Configurar Variáveis de Ambiente

  • Crie variáveis para API_KEY, API_SECRET e API_URL
  • Defina o API_URL como https://api.kraken.com

Importar ou Criar Endpoints

  • Importe a especificação da API do Kraken ou crie coleções manualmente
  • Organize os endpoints em pastas lógicas (Dados de Mercado, Negociação, Conta, etc.)

Implementando a Autenticação do Kraken no APIdog

O APIdog facilita a configuração da autenticação personalizada do Kraken:

  1. Crie um Script de Pré-solicitação para gerar a autenticação necessária:
// Script de pré-solicitação para autenticação do Kraken
const crypto = require('crypto-js');

// Obter variáveis de ambiente
const apiKey = pm.environment.get("API_KEY");
const apiSecret = pm.environment.get("API_SECRET");

// Adicionar nonce ao corpo da solicitação
const nonce = Date.now() * 1000;
pm.request.body.update({
    mode: 'urlencoded',
    urlencoded: [
        ...pm.request.body.urlencoded.all(),
        {key: 'nonce', value: nonce.toString()}
    ]
});

// Obter o caminho da solicitação
const path = pm.request.url.getPathWithQuery().replace(/\?.*/, '');

// Criar assinatura
const postData = pm.request.body.urlencoded.toString();
const message = path + crypto.SHA256(nonce.toString() + postData).toString();
const signature = crypto.enc.Base64.stringify(
    crypto.HmacSHA512(message, crypto.enc.Base64.parse(apiSecret))
);

// Definir cabeçalhos
pm.request.headers.add({key: 'API-Key', value: apiKey});
pm.request.headers.add({key: 'API-Sign', value: signature});

Testando e Documentando com o APIdog

Crie Solicitações de Teste

  • Configure solicitações para operações comuns, como obter dados do ticker, fazer ordens, etc.
  • Use o construtor de solicitações para configurar os parâmetros adequados

Adicionar Scripts de Teste

  • Valide as respostas da API com scripts de teste
  • Verifique erros e estruturas de dados esperadas
// Exemplo de script de teste para o endpoint de saldo
pm.test("O status da resposta é 200", () => {
  pm.response.to.have.status(200);
});

pm.test("Nenhum erro retornado", () => {
  const response = pm.response.json();
  pm.expect(response.error).to.be.an('array').that.is.empty;
});

pm.test("Os dados do saldo existem", () => {
  const response = pm.response.json();
  pm.expect(response.result).to.exist.and.to.be.an('object');
});

Gerar Documentação

  • Use as ferramentas de documentação do APIdog para criar guias abrangentes de API
  • Inclua exemplos, descrições e amostras de resposta

Compartilhar e Colaborar

  • Compartilhe sua coleção da API do Kraken com os membros da equipe
  • Use os recursos de colaboração do APIdog para desenvolvimento em equipe

Servidores Mock do APIdog para Desenvolvimento

Durante o desenvolvimento, você pode usar os servidores mock do APIdog para simular respostas da API do Kraken:

  1. Crie respostas de exemplo para cada endpoint
  2. Configure regras de resposta com base em parâmetros de solicitação
  3. Teste seu aplicativo contra respostas mock antes de ir ao ar

Essa abordagem permite ciclos de desenvolvimento mais rápidos e protege você de atingir os limites de taxa da API durante o desenvolvimento.

Melhores Práticas para Integração com a API do Kraken

Limitação de Taxa e Otimização

A Kraken implementa limites de taxa específicos:

  • Endpoints públicos: 1 solicitação por segundo
  • Endpoints privados: 15-20 solicitações por minuto

Para lidar com isso de forma eficaz:

  • Implemente controle de taxa em seu código
  • Use WebSockets para dados em tempo real em vez de chamadas frequentes à API REST
  • Faça consultas em lote sempre que possível

Manipulação de Erros

Implemente uma manipulação robusta de erros para interações com a API:

def safe_api_call(api_function, max_retries=3):
    """Wrapper para chamadas de API com lógica de repetição"""
    retries = 0
    while retries < max_retries:
        try:
            response = api_function()
            
            if 'error' in response and response['error']:
                error = response['error'][0]
                
                # Lidar com limitação de taxa
                if 'EAPI:Rate limit' in error:
                    sleep_time = (2 ** retries)  # Avaliação reversa exponencial
                    time.sleep(sleep_time)
                    retries += 1
                    continue
                else:
                    return None
            
            return response['result']
            
        except Exception as e:
            time.sleep(2 ** retries)
            retries += 1
    
    return None

Considerações de Segurança

  1. Armazene credenciais da API com segurança - Nunca as codifique diretamente em seus aplicativos
  2. Implemente restrições de IP nas configurações de chave da API do Kraken
  3. Use as permissões mínimas necessárias para cada chave de API
  4. Monitore o uso da API para acesso não autorizado
  5. Gire as chaves da API periodicamente

Casos de Uso Comuns

Monitoramento de Dados do Mercado

def monitor_price(pair, interval=60):
    """Monitore o preço em intervalos regulares"""
    while True:
        response = requests.get(f'https://api.kraken.com/0/public/Ticker?pair={pair}')
        data = response.json()
        
        if not data['error']:
            for p, info in data['result'].items():
                price = info['c'][0]
                print(f"Preço atual de {pair}: {price}")
        
        time.sleep(interval)

Bot de Negociação Simples

def simple_trading_strategy(pair, api_key, api_secret):
    """Exemplo de uma estratégia de negociação simples"""
    # Obter saldo da conta
    balance = kraken_request(api_key, api_secret, "/0/private/Balance")
    
    # Obter preço atual
    ticker = requests.get(f'https://api.kraken.com/0/public/Ticker?pair={pair}')
    ticker_data = ticker.json()
    
    if not ticker_data['error']:
        current_price = float(ticker_data['result'][pair]['c'][0])
        
        # Estratégia simples: comprar se o preço caiu 5% em relação ao dia anterior
        yesterday_close = float(ticker_data['result'][pair]['o'])
        
        if current_price < yesterday_close * 0.95:
            print(f"O preço caiu mais de 5% - oportunidade de compra")
            # Implementar lógica de compra

Conclusão

A API do Kraken fornece ferramentas poderosas para negociação de criptomoedas e gerenciamento de portfólios. Este guia abordou os aspectos essenciais do acesso à API, autenticação e operações comuns. Ao aproveitar ferramentas como o APIdog para desenvolvimento e testes, você pode construir aplicações robustas que interagem de maneira fluida com a exchange do Kraken.

Lembre-se de sempre consultar a documentação oficial da API do Kraken para obter informações mais atualizadas e referências detalhadas de endpoints. À medida que você se sentir mais confortável com os fundamentos, pode explorar recursos avançados como conexões WebSocket para dados em tempo real e estratégias de negociação mais sofisticadas.

Seja construindo um rastreador de portfólio pessoal, implementando negociação algorítmica ou criando soluções de criptomoeda de nível empresarial, dominar a API do Kraken abre possibilidades significativas no ecossistema de ativos digitais.