Apidog

Plataforma de desarrollo de API colaborativa todo en uno

Diseño de API

Documentación de API

Depuración de API

Simulación de API

Prueba automatizada de API

Cómo usar la API de Kraken para un trading de criptomonedas fluido

Esta guía cubre funciones clave, apps de trading, monitoreo del mercado y gestión de portafolio con la API de Kraken.

Daniel Costa

Daniel Costa

Updated on April 15, 2025

La API de Kraken proporciona a los desarrolladores una interfaz potente para uno de los principales exchanges de criptomonedas del mundo. Tanto si estás creando aplicaciones de trading, monitorizando mercados o gestionando carteras de criptomonedas, esta guía te ayudará a navegar por los aspectos esenciales de las capacidades de la API de Kraken y los enfoques de implementación.

💡
Antes de sumergirte en la API de Kraken, echa un vistazo a Apidog, una herramienta gratuita que simplifica las pruebas e integración de la API. La interfaz fácil de usar de Apidog facilita la depuración y optimización de tus flujos de trabajo de API, ahorrándote tiempo y esfuerzo.
button

¿Qué es la API de Kraken?

La API de Kraken permite a los desarrolladores acceder mediante programación a la funcionalidad del exchange a través de una interfaz RESTful. Con esta API, puedes:

  • Acceder a datos de mercado en tiempo real (precios, libros de órdenes, operaciones)
  • Colocar y gestionar órdenes de trading
  • Monitorizar saldos y posiciones de la cuenta
  • Procesar depósitos y retiradas
  • Acceder a datos históricos de trading

Configuración para el acceso a la API

Creación de tu cuenta de Kraken

Antes de usar la API, necesitarás:

  1. Registrarte para obtener una cuenta de Kraken en kraken.com
  2. Completar los requisitos de verificación según tus necesidades de uso
  3. Activar la autenticación de dos factores (2FA) para mejorar la seguridad

Generación de claves API

Para interactuar con la API, crea claves API con los permisos apropiados:

  1. Inicia sesión en tu cuenta de Kraken
  2. Navega a Connection & API

3. Haz clic en Generate New Key

4. Establece los permisos apropiados:

  • Query: Acceso de solo lectura a la información de la cuenta
  • Trade: Capacidad para colocar y cancelar órdenes
  • Deposit: Generar direcciones de depósito
  • Withdraw: Crear solicitudes de retirada
⚠️ ADVERTENCIA DE SEGURIDAD
- Almacena las claves API de forma segura y nunca compartas tu clave privada
- Restringe los permisos de la clave API solo a lo necesario
- Considera la posibilidad de implementar restricciones de dirección IP

Comprensión de la estructura de la API

La API de Kraken está organizada en una estructura lógica:

URL base y endpoints de la API

Todas las solicitudes de la API comienzan con la URL base: https://api.kraken.com

La versión actual de la API está designada por /0/ en la ruta de la URL, seguida de:

  • /public/ - Endpoints que no requieren autenticación
  • /private/ - Endpoints que requieren autenticación con tu clave API

Formato de respuesta

Todas las respuestas de la API siguen un formato JSON estándar:

{
  "error": [],
  "result": { /* Datos de la respuesta */ }
}

Realización de tus primeras solicitudes a la API

Solicitudes de la API pública

Los endpoints públicos proporcionan datos de mercado sin necesidad de autenticación.

Ejemplo: Obtención de información del ticker

import requests

# Obtener información del ticker para Bitcoin en 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"Precio de la última operación de BTC/USD: {btc_data['c'][0]}")
    print(f"Volumen de BTC/USD en 24h: {btc_data['v'][1]}")
else:
    print(f"Error: {ticker_data['error']}")

Ejemplo: Datos del libro de órdenes

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("Libro de órdenes de ETH/USD 5 mejores ofertas:", orderbook.bids);
      console.log("Libro de órdenes de ETH/USD 5 mejores peticiones:", orderbook.asks);
    }
  });

Autenticación de la API privada

Los endpoints privados requieren autenticación con tus claves API a través de un proceso que implica:

  1. Generar un nonce (número creciente)
  2. Crear una firma de solicitud utilizando HMAC-SHA512
  3. Enviar la solicitud con tu clave API y firma

Implementación de la autenticación

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

def kraken_request(api_key, api_sec, endpoint, data=None):
    """Realizar una solicitud autenticada a la API de Kraken"""
    if data is None:
        data = {}
        
    api_url = "https://api.kraken.com"
    
    # Añadir nonce a los datos
    data['nonce'] = str(int(time.time() * 1000))
    
    # Codificar los datos para la firma
    encoded_data = urllib.parse.urlencode(data)
    
    # Crear firma
    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()
    
    # Establecer encabezados
    headers = {
        'API-Key': api_key,
        'API-Sign': signature_digest
    }
    
    # Enviar solicitud
    response = requests.post(api_url + endpoint, headers=headers, data=data)
    return response.json()

Funcionalidad principal de la API

Información de la cuenta

Comprobación del saldo de la cuenta

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}")

Gestión de órdenes

Colocación de una orden de mercado

# Parámetros para comprar 0.01 BTC al precio 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"¡Orden colocada! ID de transacción: {order_result['result']['txid'][0]}")

Colocación de una orden limitada

# 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)

Consulta de órdenes abiertas

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']}")
        print(f"Par: {details['descr']['pair']}")

Uso de APIdog con la API de Kraken

APIdog ofrece una plataforma potente para desarrollar, probar y documentar tus integraciones de la API de Kraken. Aquí te mostramos cómo aprovechar APIdog para un desarrollo optimizado:

Configuración de la API de Kraken en APIdog

Crear un nuevo proyecto

  • Inicia APIdog y crea un nuevo proyecto
  • Configura un entorno para las pruebas de la API de Kraken

Configurar variables de entorno

  • Crea variables para API_KEY, API_SECRET y API_URL
  • Establece la API_URL en https://api.kraken.com

Importar o crear endpoints

  • Importa la especificación de la API de Kraken o crea colecciones manualmente
  • Organiza los endpoints en carpetas lógicas (Datos de mercado, Trading, Cuenta, etc.)

Implementación de la autenticación de Kraken en APIdog

APIdog facilita la configuración de la autenticación personalizada de Kraken:

  1. Crea un Script de pre-solicitud para generar la autenticación necesaria:
// Script de pre-solicitud para la autenticación de Kraken
const crypto = require('crypto-js');

// Obtener variables de entorno
const apiKey = pm.environment.get("API_KEY");
const apiSecret = pm.environment.get("API_SECRET");

// Añadir nonce al cuerpo de la solicitud
const nonce = Date.now() * 1000;
pm.request.body.update({
    mode: 'urlencoded',
    urlencoded: [
        ...pm.request.body.urlencoded.all(),
        {key: 'nonce', value: nonce.toString()}
    ]
});

// Obtener la ruta de la solicitud
const path = pm.request.url.getPathWithQuery().replace(/\?.*/, '');

// Crear firma
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))
);

// Establecer encabezados
pm.request.headers.add({key: 'API-Key', value: apiKey});
pm.request.headers.add({key: 'API-Sign', value: signature});

Pruebas y documentación con APIdog

Crear solicitudes de prueba

  • Configura solicitudes para operaciones comunes como obtener datos del ticker, colocar órdenes, etc.
  • Utiliza el constructor de solicitudes para configurar los parámetros adecuados

Añadir scripts de prueba

  • Valida las respuestas de la API con scripts de prueba
  • Comprueba si hay errores y estructuras de datos esperadas
// Ejemplo de script de prueba para el endpoint de saldo
pm.test("El estado de la respuesta es 200", () => {
  pm.response.to.have.status(200);
});

pm.test("No se devuelven errores", () => {
  const response = pm.response.json();
  pm.expect(response.error).to.be.an('array').that.is.empty;
});

pm.test("Existen datos de saldo", () => {
  const response = pm.response.json();
  pm.expect(response.result).to.exist.and.to.be.an('object');
});

Generar documentación

  • Utiliza las herramientas de documentación de APIdog para crear guías completas de la API
  • Incluye ejemplos, descripciones y muestras de respuestas

Compartir y colaborar

  • Comparte tu colección de la API de Kraken con los miembros del equipo
  • Utiliza las funciones de colaboración de APIdog para el desarrollo en equipo

Servidores Mock de APIdog para el desarrollo

Durante el desarrollo, puedes utilizar los servidores mock de APIdog para simular las respuestas de la API de Kraken:

  1. Crea respuestas de ejemplo para cada endpoint
  2. Configura reglas de respuesta basadas en los parámetros de la solicitud
  3. Prueba tu aplicación con respuestas mock antes de ponerla en marcha

Este enfoque permite ciclos de desarrollo más rápidos y te protege de alcanzar los límites de velocidad de la API durante el desarrollo.

Mejores prácticas para la integración de la API de Kraken

Limitación de velocidad y optimización

Kraken implementa límites de velocidad específicos:

  • Endpoints públicos: 1 solicitud por segundo
  • Endpoints privados: 15-20 solicitudes por minuto

Para gestionarlos eficazmente:

  • Implementa la limitación en tu código
  • Utiliza WebSockets para datos en tiempo real en lugar de llamadas frecuentes a la API REST
  • Procesa las consultas por lotes cuando sea posible

Manejo de errores

Implementa un manejo de errores robusto para las interacciones de la API:

def safe_api_call(api_function, max_retries=3):
    """Wrapper para llamadas a la API con lógica de reintento"""
    retries = 0
    while retries < max_retries:
        try:
            response = api_function()
            
            if 'error' in response and response['error']:
                error = response['error'][0]
                
                # Manejar la limitación de velocidad
                if 'EAPI:Rate limit' in error:
                    sleep_time = (2 ** retries)  # Retroceso 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

Consideraciones de seguridad

  1. Almacena las credenciales de la API de forma segura - Nunca las codifiques en tus aplicaciones
  2. Implementa restricciones de IP en la configuración de tu clave API de Kraken
  3. Utiliza los permisos mínimos requeridos para cada clave API
  4. Monitoriza el uso de la API para detectar accesos no autorizados
  5. Rota las claves API periódicamente

Casos de uso comunes

Monitorización de datos de mercado

def monitor_price(pair, interval=60):
    """Monitorizar el precio a 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"{pair} precio actual: {price}")
        
        time.sleep(interval)

Bot de trading simple

def simple_trading_strategy(pair, api_key, api_secret):
    """Ejemplo de una estrategia de trading simple"""
    # Obtener el saldo de la cuenta
    balance = kraken_request(api_key, api_secret, "/0/private/Balance")
    
    # Obtener el precio actual
    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])
        
        # Estrategia simple: comprar si el precio ha bajado un 5% desde ayer
        yesterday_close = float(ticker_data['result'][pair]['o'])
        
        if current_price < yesterday_close * 0.95:
            print(f"El precio ha bajado más de un 5% - oportunidad de compra")
            # Implementar la lógica de compra

Conclusión

La API de Kraken proporciona herramientas potentes para el trading de criptomonedas y la gestión de carteras. Esta guía ha cubierto los aspectos esenciales del acceso a la API, la autenticación y las operaciones comunes. Al aprovechar herramientas como APIdog para el desarrollo y las pruebas, puedes crear aplicaciones robustas que interactúen a la perfección con el exchange de Kraken.

Recuerda consultar siempre la documentación oficial de la API de Kraken para obtener la información más actualizada y referencias detalladas de los endpoints. A medida que te sientas más cómodo con los conceptos básicos, puedes explorar funciones avanzadas como las conexiones WebSocket para datos en tiempo real y estrategias de trading más sofisticadas.

Tanto si estás creando un rastreador de cartera personal, implementando trading algorítmico o creando soluciones de criptomonedas de nivel empresarial, dominar la API de Kraken abre importantes posibilidades en el ecosistema de activos digitales.

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con OllamaPunto de vista

Cómo usar Ollama: Guía Completa para Principiantes sobre LLMs Locales con Ollama

El panorama de la inteligencia artificial evoluciona constantemente, y los Grandes Modelos de Lenguaje (LLM) se vuelven cada vez más potentes y accesibles. Aunque muchos interactúan con estos modelos a través de servicios basados en la nube, existe un movimiento creciente enfocado en ejecutarlos directamente en computadoras personales. Aquí es donde entra Ollama. Ollama es una herramienta potente pero fácil de usar, diseñada para simplificar drásticamente el complejo proceso de descargar, config

Mikael Svenson

April 28, 2025

¿Dónde Descargar Swagger UI en Español Gratis?Punto de vista

¿Dónde Descargar Swagger UI en Español Gratis?

¿Necesitas Swagger UI en español? Este artículo explica por qué no existe una descarga oficial gratuita y cómo habilitar la traducción. Explora las características de Swagger y por qué Apidog es la alternativa superior para diseño, pruebas y documentación API integrados.

Oliver Kingsley

April 23, 2025

¿Dónde Descargar Postman en Español Gratis?Punto de vista

¿Dónde Descargar Postman en Español Gratis?

¿Puedes descargar Postman en español gratis? Aunque Postman carece de soporte nativo en español, existen soluciones. Explóralas y descubre Apidog, una potente alternativa unificada a Postman diseñada para optimizar todo tu flujo de trabajo de API, sin importar el idioma.

Oliver Kingsley

April 22, 2025