Kraken API Kullanımı: Eksiksiz Alım Satım Rehberi

Ashley Goolam

Ashley Goolam

6 February 2026

Kraken API Kullanımı: Eksiksiz Alım Satım Rehberi

Vadeli işlem sözleşmelerini ve spot ticareti yöneten, denenmiş ve gerçek bir API aracılığıyla dünyanın en likit kripto para borsalarından birine erişiminiz olduğunu hayal edin. Kraken, 2011 yılında kurulmuş ve 190 ülkede 10 milyondan fazla kullanıcıya 200'den fazla işlem çiftinde kapsamlı likidite ile hizmet veren bir borsa için WebSocket ve REST arayüzleri sunarak tam da bunu sağlar.

Kripto para alım satım API'leri iki kategoriye ayrılır: perakende kolaylığı için tasarlanmış olanlar ve kurumsal güvenilirlik için oluşturulmuş olanlar. Birçok borsa, API istikrarına kıyasla mobil uygulamalara öncelik verir, bu da algoritmik stratejileri kısıtlayan hız limitlerine ve özellik yayınlarının gerisinde kalan belgelere yol açar. Kraken, işlem hacmine dayalı kademeli API erişimi, kapsamlı sanal alan ortamları ve yüksek frekanslı tüccarlar için özel uç noktalar sunarak bu sürtünme noktalarını ortadan kaldırır. Hobi amaçlı komut dosyalarından kurumsal düzeyde sistemlere kadar ölçeklenebilen otomatik stratejiler oluşturursunuz.

İçindekiler:

💡
Otomatik kripto alım satım sistemleri oluşturmak, REST ve WebSocket uç noktalarında güvenilir API testi gerektirir. Apidog, görsel API testi, otomatik belge oluşturma ve özellikle kripto para borsaları için tasarlanmış ekip işbirliği özelliklerini sunar. Kraken API geliştirmenizi kolaylaştırmak için Apidog'u ücretsiz deneyin—kredi kartı gerekmez.
düğme

Kraken'ın API Mimarisini Anlamak

Kraken, üç farklı API ekosistemi işletmektedir: Spot REST, Futures REST ve WebSocket. Bu mimarileri anlamak, doğru entegrasyon yolunu seçmenize yardımcı olur.

Spot REST API

Spot REST API, Kraken'ın temel borsa işlevselliğine erişim sağlar. Genel uç noktalara (piyasa verileri, ticker bilgileri, emir defteri derinliği) ve özel uç noktalara (hesap bakiyesi, emir yönetimi, fonlama) ayrılmıştır. Tüm istekler TLS 1.2 veya üstü HTTPS kullanır.

Temel URL: https://api.kraken.com/0

Genel uç noktalar kimlik doğrulama gerektirmez. Özel uç noktalar, API anahtarlarıyla HMAC-SHA512 istek imzalama kullanır. Yanıt biçimleri farklılık gösterir—bazı uç noktalar ilk öğesi bir hata dizesi olan diziler (eski tasarım) döndürürken, daha yeni uç noktalar standart JSON nesneleri kullanır.

Vadeli İşlemler REST API

Kraken Futures, spot borsadan ayrı olarak kendi API altyapısı ile çalışır. Kripto paralar üzerinde 50x'e kadar kaldıraçla sürekli takasları ve sabit vadeli vadeli işlemleri destekler.

Temel URL'ler:

Vadeli İşlemler API'si, Spot'a kıyasla farklı kimlik doğrulama mekanizmaları ve uç nokta yapıları kullanır. Spot alım satım kimlik bilgilerinizden farklı olarak futures.kraken.com adresinde ayrı API anahtarları oluşturmanız gerekir.

WebSocket API

Kraken, iki WebSocket sunucusu aracılığıyla gerçek zamanlı veri akışları sağlar:

REST sorgulamasından farklı olarak, WebSocket bağlantıları verileri kullanılabilir hale geldikçe iletir, bu da gecikmeyi yüzlerce milisaniyeden onlarca milisaniyeye düşürür. Genel sunucu kimlik doğrulama gerektirmez; özel sunucu, REST API aracılığıyla alınan bir WebSocket belirteci gerektirir.

Hız Limiti

Kraken, katman tabanlı hız limitleri uygular:

Limitlerin aşılması, isteklerinize ne zaman devam edebileceğinizi belirten Retry-After başlıklarıyla HTTP 429 hatalarıyla sonuçlanır.

kraken kripto alım satım api

Kimlik Doğrulama ve API Anahtarı Kurulumu

Kraken, nonce tabanlı tekrar oynatma koruması ile HMAC-SHA512 kimlik doğrulaması kullanır. Bu, çok iş parçacıklı uygulamalarda yaygın olan "Geçersiz nonce" hatalarından kaçınmak için dikkatli uygulama gerektirir.

API Anahtarları Oluşturma

Kraken kontrol panelinizde Hesap → Güvenlik → API'ye gidin:

  1. "Yeni Anahtar Oluştur"a tıklayın
  2. İzinleri seçin:

3. IP beyaz listesini belirtin (üretim için önerilir)

4. API Anahtarını ve Özel Anahtarı güvenli bir şekilde saklayın—Kraken Özel Anahtarı bir daha asla göstermez

Vadeli işlemler için bu işlemi futures.kraken.com/settings/api adresinde tekrarlayın. demo-futures.kraken.com adresindeki sanal alan ortamı ayrı kimlik bilgileri kullanır.

bir API anahtarı oluştur

HMAC-SHA512 İmzalama (Manuel Uygulama)

SDK kullanmıyorsanız, kimlik doğrulamayı aşağıdaki gibi uygulayın:

import requests
import hmac
import hashlib
import base64
import time
import json

class KrakenAuth:
    def __init__(self, api_key, api_secret):
        self.api_key = api_key
        self.api_secret = base64.b64decode(api_secret)
        self.base_url = "https://api.kraken.com"
    
    def generate_signature(self, urlpath, data):
        # Nonce must be higher than any previous nonce used
        nonce = str(int(time.time() * 1000))
        data['nonce'] = nonce
        
        # Create message: nonce + POST data
        message = nonce + json.dumps(data, separators=(',', ':'))
        
        # Create HMAC-SHA512 signature
        signature = hmac.new(
            self.api_secret,
            urlpath.encode() + hashlib.sha256(message.encode()).digest(),
            hashlib.sha512
        ).hexdigest()
        
        return {
            'API-Key': self.api_key,
            'API-Sign': signature,
            'Content-Type': 'application/x-www-form-urlencoded'
        }, data
    
    def private_request(self, method, params=None):
        urlpath = f'/0/private/{method}'
        data = params or {}
        
        headers, signed_data = self.generate_signature(urlpath, data)
        
        response = requests.post(
            f"{self.base_url}{urlpath}",
            headers=headers,
            data=signed_data
        )
        
        return response.json()

# Usage
kraken = KrakenAuth(
    api_key="YOUR_API_KEY",
    api_secret="YOUR_BASE64_ENCODED_PRIVATE_KEY"
)

# Get account balance
balance = kraken.private_request('Balance')
print(balance)

Kritik: Nonce Yönetimi

Kraken, her API anahtarı için kesinlikle artan noncelar gerektirir. Aynı anahtarı kullanan birden fazla iş parçacığınız veya süreciniz varsa, bunlar çakışacak ve "EAPI:Geçersiz nonce" hataları üretecektir. Çözümler:

  1. Her alım satım algoritması veya hizmeti için farklı API anahtarları kullanın
  2. Anahtarları paylaşmak kaçınılmazsa, Redis veya veritabanı aracılığıyla nonce senkronizasyonu uygulayın
  3. Çarpışma olasılığını azaltmak için mikrosaniye hassasiyetinde zaman damgaları kullanın (Unix zamanını 1000 ile çarpın)

Resmi SDK'lar

Kraken, Go, Rust, Julia ve diğer diller için topluluk SDK'larıyla birlikte resmi Python ve Node.js SDK'ları sağlar:

# Python
pip install python-kraken-sdk

# Node.js
npm install @kraken-api/sdk

Resmi SDK'lar kimlik doğrulama, nonce yönetimi ve hata ayrıştırmayı otomatik olarak halleder. Özel HTTP işleme için belirli gereksinimleriniz yoksa bunları kullanın.

kraken python sdk

REST API ile Spot Ticaret

Spot REST API, iyi belgelenmiş uç noktalar aracılığıyla kapsamlı alım satım işlevselliği sağlar.

Piyasa Verileri (Genel)

Mevcut alım satım çiftlerini alın:

curl "https://api.kraken.com/0/public/AssetPairs"

Ticker bilgisini alın:

curl "https://api.kraken.com/0/public/Ticker?pair=XBTUSD"

Kraken, Bitcoin için BTC yerine XBT, bazı eski uç noktalarda XXBT, USD yerine ZUSD gibi standart dışı çift sembolleri kullanır. Alım satım yapmadan önce AssetPairs uç noktasını kullanarak varlık kodlarını her zaman doğrulayın.

Emir defteri derinliğini alın:

curl "https://api.kraken.com/0/public/Depth?pair=XBTUSD&count=10"

Hesap Bakiyesi (Özel)

balance = kraken.private_request('Balance')
print(balance)

Yanıt formatı, anahtar olarak varlık kodlarını kullanır (USD için ZUSD, Bitcoin için XXBT):

{
  "error": [],
  "result": {
    "ZUSD": "1000.50",
    "XXBT": "0.2500"
  }
}

Emir Verme

Bir limit alım emri verin:

order = kraken.private_request('AddOrder', {
    'pair': 'XBTUSD',
    'type': 'buy',
    'ordertype': 'limit',
    'price': '65000.00',
    'volume': '0.01',
    'oflags': 'post'  # Post-only flag
})

print(order)

Emir türleri şunları içerir:

Emir Yönetimi

Açık emirleri listele:

open_orders = kraken.private_request('OpenOrders')
print(open_orders)

Bir emri iptal et:

kraken.private_request('CancelOrder', {
    'txid': 'XXXXXX-XXXXXX-XXXXXX'
})

Tüm emirleri iptal et (acil durdurma):

kraken.private_request('CancelAll')

İşlem Geçmişi

Gerçekleştirilen işlemleri sorgula:

trades = kraken.private_request('TradesHistory', {
    'start': '1704067200',  # Unix timestamp
    'end': '1706659200'
})
İpucuApidog
Apidog ile API uç noktalarını test etme
Apidog ile API uç noktalarını test etme

WebSocket ile Gerçek Zamanlı Veri

REST sorgulaması, algoritmik alım satım için kabul edilemez gecikme süreleri getirir. Kraken'ın WebSocket API'si gerçek zamanlı emir defteri güncellemeleri, işlemler ve hesap olayları akışı sağlar.

Genel WebSocket'e Bağlanma

const WebSocket = require('ws');

const ws = new WebSocket('wss://ws.kraken.com');

ws.on('open', () => {
  console.log('Connected to Kraken public WebSocket');
  
  // Subscribe to ticker for BTC/USD
  ws.send(JSON.stringify({
    event: 'subscribe',
    pair: ['XBT/USD'],
    subscription: {
      name: 'ticker'
    }
  }));
});

ws.on('message', (data) => {
  const message = JSON.parse(data);
  
  // Ticker format: [channelID, tickerData, pair, channelName]
  if (Array.isArray(message) && message[2] === 'XBT/USD') {
    const [channelID, ticker, pair, channelName] = message;
    console.log(`BTC Price: Bid ${ticker.b[0]}, Ask ${ticker.a[0]}`);
  }
});

// Heartbeat every 30 seconds
setInterval(() => {
  ws.send(JSON.stringify({ event: 'ping' }));
}, 30000);

WebSocket abonelikleri, sayısal kanal kimlikleriyle dizi biçiminde veri döndürür. Verileri doğru bir şekilde yönlendirmek için bu kimlikleri aboneliklerinizle eşleştirin.

Emir Defteri Akışı

Seviye 2 emir defteri verilerine abone olun:

ws.send(JSON.stringify({
  event: 'subscribe',
  pair: ['XBT/USD'],
  subscription: {
    name: 'book',
    depth: 25  // 25, 100, 500, or 1000 levels
  }
}));

Kitap akışı anlık görüntüler ve ardından artımlı güncellemeler gönderir. Deltaları uygulayarak yerel emir defteri durumunu koruyun:

let orderBook = { asks: {}, bids: {} };

ws.on('message', (data) => {
  const message = JSON.parse(data);
  
  if (message[1] === 'as' || message[1] === 'bs') {
    // Snapshot: initialize order book
    const [channelID, type, asks, bids] = message;
    orderBook.asks = Object.fromEntries(asks.map(([price, volume]) => [price, volume]));
    orderBook.bids = Object.fromEntries(bids.map(([price, volume]) => [price, volume]));
  } else if (message[1] === 'a' || message[1] === 'b') {
    // Update: apply delta
    const [channelID, type, delta] = message;
    const side = type === 'a' ? 'asks' : 'bids';
    
    delta.forEach(([price, volume]) => {
      if (volume === '0.00000000') {
        delete orderBook[side][price];
      } else {
        orderBook[side][price] = volume;
      }
    });
  }
});

Özel WebSocket Kimlik Doğrulaması

REST aracılığıyla bir WebSocket belirteci alın:

token_response = kraken.private_request('GetWebSocketsToken')
token = token_response['result']['token']

Özel WebSocket'e bağlanın:

const privateWs = new WebSocket('wss://ws-auth.kraken.com');

privateWs.on('open', () => {
  // Authenticate
  privateWs.send(JSON.stringify({
    event: 'subscribe',
    subscription: {
      name: 'ownTrades',
      token: 'YOUR_WEBSOCKET_TOKEN'
    }
  }));
});

privateWs.on('message', (data) => {
  const message = JSON.parse(data);
  
  if (message[1] === 'ownTrades') {
    console.log('Your trade executed:', message[0]);
  }
});

Özel WebSocket belirteçleri 15 dakika sonra sona erer. Üretim sistemleri için otomatik belirteç yenileme ve yeniden bağlantı mantığını uygulayın.

Vadeli İşlemler ve Gelişmiş Özellikler

Kraken Futures, gelişmiş emir türleri ve portföy marjı ile türev işlemleri için ayrı bir altyapı sağlar.

Vadeli İşlemler Kimlik Doğrulaması

Vadeli işlemler, Spot HMAC'ten farklı Taşıyıcı belirteç kimlik doğrulaması kullanır:

import requests
import hmac
import hashlib
import base64
import json

class KrakenFuturesAuth:
    def __init__(self, api_key, api_secret):
        self.api_key = api_key
        self.api_secret = api_secret
        self.base_url = "https://futures.kraken.com/api/v3"
    
    def generate_signature(self, endpoint, method, body=None):
        nonce = str(int(time.time() * 1000))
        message = endpoint + method + nonce
        
        if body:
            message += json.dumps(body, separators=(',', ':'))
        
        signature = base64.b64encode(
            hmac.new(
                base64.b64decode(self.api_secret),
                message.encode(),
                hashlib.sha256
            ).digest()
        ).decode()
        
        return {
            'APIKey': self.api_key,
            'Nonce': nonce,
            'Authent': signature,
            'Content-Type': 'application/json'
        }
    
    def request(self, endpoint, method='GET', body=None):
        url = f"{self.base_url}{endpoint}"
        headers = self.generate_signature(endpoint, method, body)
        
        if method == 'GET':
            response = requests.get(url, headers=headers)
        else:
            response = requests.post(url, headers=headers, json=body)
        
        return response.json()

# Usage
futures = KrakenFuturesAuth('FUTURES_API_KEY', 'FUTURES_SECRET')

Vadeli İşlemler Emir Yerleştirme

Bitcoin perpetual üzerinde bir limit emri verin:

order = futures.request('/sendorder', 'POST', {
    'orderType': 'lmt',
    'side': 'buy',
    'size': 1,
    'limitPrice': 65000,
    'symbol': 'PI_XBTUSD'  # Perpetual Inverse BTC/USD
})

Vadeli işlem sembolleri farklı kurallar kullanır:

Toplu İşlemler

Vadeli İşlemler API'si toplu emir gönderimini destekler:

batch = futures.request('/batchorder', 'POST', {
    'batchOrder': [
        {
            'order': 'send',
            'order_tag': '1',
            'orderType': 'lmt',
            'symbol': 'PI_XBTUSD',
            'side': 'buy',
            'size': 1,
            'limitPrice': 64000
        },
        {
            'order': 'send',
            'order_tag': '2',
            'orderType': 'lmt',
            'symbol': 'PI_XBTUSD',
            'side': 'sell',
            'size': 1,
            'limitPrice': 66000
        }
    ]
})

Gelişmiş Emir Özellikleri

Dead Man's Switch (Ölü Adam Anahtarı)

Bağlantı kesilirse tüm emirleri iptal et:

# Set 60-second timeout
kraken.private_request('CancelAllOrdersAfter', {
    'timeout': 60
})

Bu, sunucu tarafında bir zamanlayıcı oluşturur—60 saniye içinde bir kalp atışı göndermezseniz, Kraken tüm açık emirleri otomatik olarak iptal eder.

Sonuç

Kraken'ın API'si, REST, WebSocket ve özel Vadeli İşlemler arayüzleri aracılığıyla kripto para piyasalarına kurumsal düzeyde erişim sağlar. HMAC-SHA512 imzalarıyla kimlik doğrulaması yapar, nonce dizilerini dikkatlice yönetir ve spot ticaretten kaldıraçlı vadeli işlemlere kadar ölçeklendirme yaparsınız. Kademeli hız limitleri, gündelik portföy dengelemeden yüksek frekanslı piyasa yapımına kadar stratejilere olanak tanır.

Kimlik doğrulama ve emir yerleştirmeyi test etmek için sanal alan ortamıyla başlayın. Nonce çakışmalarını önlemek için her alım satım stratejisi için ayrı API anahtarları kullanın. Gerçek zamanlı veriler için WebSocket bağlantıları ve risk yönetimi için dead man's switch'ler uygulayın. Hız limiti başlıklarını izleyin ve 429 hataları için üstel geri çekilme uygulayın.

Kripto alım satım uygulamaları oluştururken—Kraken uç noktalarını test ederken, kimlik doğrulama imzalarında hata ayıklarken veya birden fazla API entegrasyonunu yönetirken—geliştirme iş akışınızı Apidog ile kolaylaştırın. Görsel API testi, otomatik belge oluşturma ve ekip işbirliğini ele alır, böylece HMAC imzalarıyla uğraşmak yerine alım satım mantığına odaklanabilirsiniz.

düğme

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin