Apidog

Nền tảng phát triển API hợp tác tất cả trong một

Thiết kế API

Tài liệu API

Gỡ lỗi API

Giả lập API

Kiểm thử API tự động

Cách Sử Dụng API Kraken để Giao Dịch Crypto Mượt Mà

中村 拓也

中村 拓也

Updated on tháng 3 28, 2025

API Kraken cung cấp cho các nhà phát triển một giao diện mạnh mẽ đến một trong những sàn giao dịch tiền điện tử hàng đầu thế giới. Dù bạn đang xây dựng các ứng dụng giao dịch, giám sát thị trường hay quản lý danh mục tiền điện tử, hướng dẫn này sẽ giúp bạn điều hướng những điều cơ bản về khả năng và phương pháp triển khai API của Kraken.

💡
Trước khi bắt đầu tìm hiểu về API Kraken, hãy xem qua Apidog—một công cụ miễn phí giúp đơn giản hóa việc kiểm tra và tích hợp API. Giao diện thân thiện với người dùng của Apidog giúp dễ dàng gỡ lỗi và tối ưu hóa quy trình công việc API của bạn, tiết kiệm thời gian và công sức.
button

API Kraken là gì?

API của Kraken cho phép các nhà phát triển truy cập chức năng của sàn giao dịch một cách lập trình thông qua một giao diện RESTful. Với API này, bạn có thể:

  • Truy cập dữ liệu thị trường theo thời gian thực (giá cả, sổ lệnh, giao dịch)
  • Đặt và quản lý các đơn đặt hàng giao dịch
  • Theo dõi số dư và vị trí tài khoản
  • Xử lý các khoản tiền gửi và rút tiền
  • Truy cập dữ liệu giao dịch lịch sử

Thiết lập truy cập API

Tạo tài khoản Kraken của bạn

Trước khi sử dụng API, bạn cần:

  1. Đăng ký tài khoản Kraken tại kraken.com
  2. Hoàn tất các yêu cầu xác minh dựa trên nhu cầu sử dụng của bạn
  3. Kích hoạt xác thực hai yếu tố (2FA) để tăng cường bảo mật

Tạo khóa API

Để tương tác với API, hãy tạo các khóa API với quyền hạn phù hợp:

  1. Đăng nhập vào tài khoản Kraken của bạn
  2. Đi tới Kết nối & API

3. Nhấp vào Generate New Key

4. Đặt quyền hạn phù hợp:

  • Query: Quyền truy cập chỉ đọc vào thông tin tài khoản
  • Trade: Khả năng đặt và hủy các đơn đặt hàng
  • Deposit: Tạo địa chỉ gửi tiền
  • Withdraw: Tạo yêu cầu rút tiền
⚠️ CẢNH BÁO BẢO MẬT
- Lưu trữ khóa API một cách an toàn và không bao giờ chia sẻ khóa riêng của bạn
- Hạn chế quyền truy cập của khóa API chỉ còn những gì cần thiết
- Xem xét việc thực hiện các hạn chế địa chỉ IP

Hiểu cấu trúc API

API Kraken được tổ chức thành một cấu trúc logic:

URL cơ bản của API và các điểm cuối

Tất cả các yêu cầu API bắt đầu với URL cơ bản: https://api.kraken.com

Phiên bản API hiện tại được xác định bởi /0/ trong đường dẫn URL, theo sau là một trong hai:

  • /public/ - Các điểm cuối không yêu cầu xác thực
  • /private/ - Các điểm cuối yêu cầu xác thực với khóa API của bạn

Định dạng phản hồi

Tất cả các phản hồi API tuân theo định dạng JSON tiêu chuẩn:

{
  "error": [],
  "result": { /* Dữ liệu phản hồi */ }
}

Thực hiện các yêu cầu API đầu tiên của bạn

Yêu cầu API công khai

Các điểm cuối công khai cung cấp dữ liệu thị trường mà không yêu cầu xác thực.

Ví dụ: Lấy thông tin Ticker

import requests

# Lấy thông tin ticker cho Bitcoin bằng 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"Giá giao dịch cuối cùng BTC/USD: {btc_data['c'][0]}")
    print(f"Khối lượng 24h BTC/USD: {btc_data['v'][1]}")
else:
    print(f"Lỗi: {ticker_data['error']}")

Ví dụ: Dữ liệu sổ lệnh

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("5 đơn đặt hàng cao nhất ETH/USD:", orderbook.bids);
      console.log("5 yêu cầu mua ETH/USD:", orderbook.asks);
    }
  });

Xác thực API riêng tư

Các điểm cuối riêng tư yêu cầu xác thực với các khóa API của bạn qua một quy trình bao gồm:

  1. Tạo một nonce (số tăng dần)
  2. Tạo một chữ ký yêu cầu bằng HMAC-SHA512
  3. Gửi yêu cầu với khóa API và chữ ký của bạn

Triển khai xác thực

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

def kraken_request(api_key, api_sec, endpoint, data=None):
    """Thực hiện một yêu cầu được xác thực đến API Kraken"""
    if data is None:
        data = {}
        
    api_url = "https://api.kraken.com"
    
    # Thêm nonce vào dữ liệu
    data['nonce'] = str(int(time.time() * 1000))
    
    # Mã hóa dữ liệu cho chữ ký
    encoded_data = urllib.parse.urlencode(data)
    
    # Tạo chữ ký
    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()
    
    # Đặt tiêu đề
    headers = {
        'API-Key': api_key,
        'API-Sign': signature_digest
    }
    
    # Gửi yêu cầu
    response = requests.post(api_url + endpoint, headers=headers, data=data)
    return response.json()

Chức năng cốt lõi của API

Thông tin tài khoản

Kiểm tra số dư tài khoản

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

Quản lý đơn đặt hàng

Đặt đơn hàng thị trường

# Tham số để mua 0.01 BTC với giá thị trường
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"Đơn đặt hàng đã được đặt! ID giao dịch: {order_result['result']['txid'][0]}")

Đặt đơn hàng giới hạn

# Tham số để bán 0.01 BTC với giá $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)

Tra cứu các đơn hàng mở

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"Loại: {details['descr']['type']} {details['descr']['ordertype']}")

Sử dụng APIdog với API Kraken

APIdog cung cấp một nền tảng mạnh mẽ để phát triển, kiểm tra và tài liệu hóa sự tích hợp API của bạn với Kraken. Dưới đây là cách tận dụng APIdog để phát triển hiệu quả:

Thiết lập API Kraken trong APIdog

Tạo một dự án mới

  • Khởi chạy APIdog và tạo một dự án mới
  • Thiết lập một môi trường để kiểm tra API Kraken

Cấu hình biến môi trường

  • Tạo các biến cho API_KEY, API_SECRET, và API_URL
  • Đặt API_URL thành https://api.kraken.com

Nhập hoặc tạo các điểm cuối

  • Hoặc nhập thông số kỹ thuật API Kraken hoặc tự tạo các bộ sưu tập một cách thủ công
  • Phân loại các điểm cuối thành các thư mục logic (Dữ liệu Thị trường, Giao dịch, Tài khoản, v.v.)

Triển khai xác thực Kraken trong APIdog

APIdog giúp dễ dàng thiết lập xác thực tùy chỉnh của Kraken:

  1. Tạo một Script trước yêu cầu cho việc tạo xác thực cần thiết:
// Script trước yêu cầu cho xác thực Kraken
const crypto = require('crypto-js');

// Lấy biến môi trường
const apiKey = pm.environment.get("API_KEY");
const apiSecret = pm.environment.get("API_SECRET");

// Thêm nonce vào thân yêu cầu
const nonce = Date.now() * 1000;
pm.request.body.update({
    mode: 'urlencoded',
    urlencoded: [
        ...pm.request.body.urlencoded.all(),
        {key: 'nonce', value: nonce.toString()}
    ]
});

// Lấy đường dẫn yêu cầu
const path = pm.request.url.getPathWithQuery().replace(/\?.*/, '');

// Tạo chữ ký
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))
);

// Đặt tiêu đề
pm.request.headers.add({key: 'API-Key', value: apiKey});
pm.request.headers.add({key: 'API-Sign', value: signature});

Kiểm tra và tài liệu hóa với APIdog

Tạo yêu cầu kiểm tra

  • Thiết lập yêu cầu cho các thao tác phổ biến như lấy dữ liệu ticker, đặt đơn hàng, v.v.
  • Sử dụng trình xây dựng yêu cầu để cấu hình các tham số phù hợp

Thêm Script kiểm tra

  • Xác thực phản hồi API với các script kiểm tra
  • Kiểm tra lỗi và các cấu trúc dữ liệu như mong đợi
// Ví dụ về script kiểm tra cho điểm cuối số dư
pm.test("Trạng thái phản hồi là 200", () => {
  pm.response.to.have.status(200);
});

pm.test("Không có lỗi quay lại", () => {
  const response = pm.response.json();
  pm.expect(response.error).to.be.an('array').that.is.empty;
});

pm.test("Dữ liệu số dư tồn tại", () => {
  const response = pm.response.json();
  pm.expect(response.result).to.exist.and.to.be.an('object');
});

Tạo tài liệu

  • Sử dụng các công cụ tài liệu của APIdog để tạo các hướng dẫn API toàn diện
  • Bao gồm các ví dụ, mô tả và mẫu phản hồi

Chia sẻ và hợp tác

  • Chia sẻ bộ sưu tập API Kraken của bạn với các thành viên trong nhóm
  • Sử dụng các tính năng hợp tác của APIdog cho phát triển nhóm

Máy chủ giả lập APIdog cho phát triển

Khi phát triển, bạn có thể sử dụng các máy chủ giả lập của APIdog để mô phỏng phản hồi từ API Kraken:

  1. Tạo phản hồi ví dụ cho mỗi điểm cuối
  2. Cấu hình quy tắc phản hồi dựa trên các tham số yêu cầu
  3. Kiểm tra ứng dụng của bạn với các phản hồi giả trước khi ra mắt

Cách tiếp cận này cho phép chu kỳ phát triển nhanh hơn và bảo vệ bạn khỏi việc vượt quá giới hạn tốc độ API trong quá trình phát triển.

Các thực tiễn tốt nhất cho tích hợp API Kraken

Giới hạn tốc độ và tối ưu hóa

Kraken thực hiện các giới hạn tốc độ cụ thể:

  • Các điểm cuối công khai: 1 yêu cầu mỗi giây
  • Các điểm cuối riêng tư: 15-20 yêu cầu mỗi phút

Để xử lý hiệu quả các yêu cầu này:

  • Triển khai việc kiểm soát tốc độ trong mã của bạn
  • Sử dụng WebSocket cho dữ liệu theo thời gian thực thay vì các cuộc gọi REST API thường xuyên
  • Gộp các truy vấn khi có thể

Xử lý lỗi

Triển khai xử lý lỗi mạnh mẽ cho các tương tác API:

def safe_api_call(api_function, max_retries=3):
    """Bọc cho các cuộc gọi API với logic thử lại"""
    retries = 0
    while retries < max_retries:
        try:
            response = api_function()
            
            if 'error' in response and response['error']:
                error = response['error'][0]
                
                # Xử lý việc giới hạn tốc độ
                if 'EAPI:Rate limit' in error:
                    sleep_time = (2 ** retries)  # nghỉ ngơi tăng dần
                    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

Các lưu ý về bảo mật

  1. Lưu trữ thông tin xác thực API một cách an toàn - Không bao giờ mã hóa chúng trong ứng dụng của bạn
  2. Triển khai các hạn chế IP trong cài đặt khóa API của bạn với Kraken
  3. Sử dụng quyền hạn tối thiểu cần thiết cho mỗi khóa API
  4. Theo dõi việc sử dụng API để phát hiện truy cập không hợp pháp
  5. Thay đổi khóa API định kỳ

Các trường hợp sử dụng phổ biến

Giám sát dữ liệu thị trường

def monitor_price(pair, interval=60):
    """Giám sát giá theo các khoảng thời gian định kỳ"""
    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"Gía hiện tại của {pair}: {price}")
        
        time.sleep(interval)

Bot giao dịch đơn giản

def simple_trading_strategy(pair, api_key, api_secret):
    """Ví dụ về một chiến lược giao dịch đơn giản"""
    # Lấy số dư tài khoản
    balance = kraken_request(api_key, api_secret, "/0/private/Balance")
    
    # Lấy giá hiện tại
    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])
        
        # Chiến lược đơn giản: mua nếu giá giảm 5% so với ngày hôm trước
        yesterday_close = float(ticker_data['result'][pair]['o'])
        
        if current_price < yesterday_close * 0.95:
            print(f"Gía giảm hơn 5% - cơ hội mua vào")
            # Thực hiện logic mua vào

Kết luận

API Kraken cung cấp các công cụ mạnh mẽ cho giao dịch tiền điện tử và quản lý danh mục. Hướng dẫn này đã đề cập đến những điều cơ bản của việc truy cập API, xác thực, và các thao tác phổ biến. Bằng cách tận dụng các công cụ như APIdog cho phát triển và kiểm tra, bạn có thể xây dựng các ứng dụng robust tương tác mượt mà với sàn giao dịch Kraken.

Hãy nhớ luôn tham khảo tài liệu chính thức của API Kraken để có thông tin cập nhật nhất và tham khảo chi tiết các điểm cuối. Khi bạn trở nên quen thuộc với các khái niệm cơ bản, bạn có thể khám phá các tính năng nâng cao như kết nối WebSocket cho dữ liệu theo thời gian thực và các chiến lược giao dịch tinh vi hơn.

Dù bạn đang xây dựng một trình theo dõi danh mục cá nhân, thực hiện giao dịch định lượng, hay tạo ra các giải pháp tiền điện tử quy mô doanh nghiệp, việc thuần thục API Kraken mở ra nhiều khả năng trong hệ sinh thái tài sản kỹ thuật số.