Интеграция бота с API Kraken
Kraken — одна из старейших и наиболее регулируемых криптобирж. API хорошо задокументировано, стабильное, с поддержкой продвинутых ордеров. Особенность Kraken: нестандартные названия пар (XXBTZUSD вместо BTC/USDT) и специфика nonce для REST запросов.
Особенности Kraken API
Аутентификация: каждый приватный запрос подписывается HMAC-SHA512. Kraken требует nonce — монотонно возрастающее число (обычно timestamp в миллисекундах). Важно: nonce должен быть строго больше предыдущего, иначе EAPI:Invalid nonce.
import ccxt
exchange = ccxt.kraken({
'apiKey': API_KEY,
'secret': API_SECRET,
})
# CCXT обрабатывает nonce и подпись автоматически
ticker = exchange.fetch_ticker('BTC/USD')
print(f"Last price: {ticker['last']}")
# Размещение limit ордера
order = exchange.create_order(
symbol='BTC/USD',
type='limit',
side='buy',
amount=0.001,
price=60000,
params={'oflags': 'post'} # post-only flag
)
WebSocket API v2
Kraken имеет WebSocket API v2 для реалтайм данных:
import websockets
import json
async def subscribe_kraken():
async with websockets.connect('wss://ws.kraken.com/v2') as ws:
await ws.send(json.dumps({
"method": "subscribe",
"params": {
"channel": "ticker",
"symbol": ["BTC/USD", "ETH/USD"]
}
}))
async for message in ws:
data = json.loads(message)
if data.get('channel') == 'ticker':
process_ticker(data['data'])
Rate limits
Kraken использует tier-based rate limiting. Базовый tier: 15 единиц, восстановление 0.33/сек. Разные вызовы стоят разное количество единиц (order placement = 1, cancel = 0). При превышении — EAPI:Rate limit exceeded.
Mitigation: CCXT встроенный rate limiter, плюс отдельная логика для критических операций.
Интеграция с Kraken API для торгового бота: 1–2 недели с учётом тестирования на sandbox среде и обработки специфических ошибок биржи.







