Kraken API 업데이트 sgcWebSockets

· 기능
Kraken 현물 및 선물 API Delphi 통합

Kraken은 가장 오래 운영되고 신뢰받는 암호화폐 거래소 중 하나로, 현물과 선물 시장을 모두 제공해요. Delphi용 TsgcWSAPI_KrakenTsgcWSAPI_Kraken_Futures 컴포넌트는 Kraken의 WebSocket 및 REST API에 대한 완전한 접근을 제공하여 단일 코드베이스에서 실시간 시장 데이터 스트리밍, 계정 관리, 주문 실행, 선물 거래를 지원해요.

목차

개요

Kraken의 API는 각자의 컴포넌트가 있는 두 가지 구분된 플랫폼으로 나뉘어요:

컴포넌트 시장 설명
TsgcWSAPI_Kraken 현물 WebSocket 및 REST 지원으로 Kraken 현물 거래소에서 암호화폐를 거래해요.
TsgcWSAPI_Kraken_Futures 선물 레버리지 포지션으로 무기한 및 고정 만기 선물 계약을 거래해요.

두 컴포넌트는 모두 이중 채널 방식을 제공해요. 저지연 실시간 데이터 스트리밍을 위한 WebSocket 연결과, 잔액 조회, 주문 실행, 과거 데이터 조회 같은 요청/응답 작업을 위한 REST 엔드포인트가 그것이에요.

설정

현물과 선물 컴포넌트 모두 비공개(인증) 작업에 API 자격 증명이 필요해요. 시장 데이터 같은 공개 엔드포인트는 인증이 필요 없어요.

속성 유형 설명
Kraken.ApiKey 문자열 Kraken 계정 설정 페이지에서 생성한 Kraken API 키예요.
Kraken.ApiSecret 문자열 비공개 요청 서명에 사용되는 Kraken API 시크릿이에요.
참고: API 키는 kraken.com > Security > API에서 생성하세요. 애플리케이션에 필요한 권한만 할당하세요. 읽기 전용 대시보드에는 거래 및 출금 권한을 완전히 비활성화하세요.

현물 WebSocket API

현물 WebSocket API는 시장 데이터와 비공개 계정 이벤트를 실시간으로 스트리밍해요. 메서드는 공개 채널(인증 불필요)과 비공개 채널(유효한 WebSocket 토큰 필요)로 구분돼요.

공개 채널

메서드 설명
SubscribeTicker / UnSubscribeTicker 최우선 매수/매도, 24시간 거래량, 가격 통계를 포함한 실시간 시세 정보예요.
SubscribeOHLC / UnSubscribeOHLC 설정 가능한 간격으로 실시간 OHLC(캔들스틱) 데이터예요.
SubscribeTrade / UnSubscribeTrade 거래소의 모든 거래를 보여주는 실시간 체결 피드예요.
SubscribeBook / UnSubscribeBook 설정 가능한 깊이로 주문서 스냅샷과 증분 업데이트예요.
SubscribeSpread / UnSubscribeSpread 실시간 최우선 매수/매도 스프레드 업데이트예요.
SubscribeAll / UnSubscribeAll 특정 페어에 대해 모든 공개 채널을 한 번에 구독하거나 구독 취소해요

비공개 채널

메서드 설명
SubscribeOwnTrades / UnSubscribeOwnTrades 본인이 체결한 거래의 실시간 피드예요.
SubscribeOpenOrders / UnSubscribeOpenOrders 오픈 주문의 실시간 업데이트(신규, 수정, 취소, 체결)예요.
AddOrder WebSocket을 통해 새 주문을 실행해요(REST보다 낮은 지연 시간).
CancelOrder WebSocket을 통해 기존 주문을 취소해요.
// Subscribe to public ticker data for BTC/USD
oKraken.SubscribeTicker('XBT/USD');
// Subscribe to the order book with 10-level depth
oKraken.SubscribeBook('XBT/USD');
// Subscribe to real-time trades
oKraken.SubscribeTrade('ETH/USD');
// Subscribe to private channels (requires API key)
oKraken.SubscribeOwnTrades;
oKraken.SubscribeOpenOrders;

현물 REST API

현물 REST API는 TsgcWSAPI_Kraken 컴포넌트의 REST_API 속성을 통해 접근해요. 시장 데이터 조회, 계정 관리, 거래, 자금 운용을 위한 포괄적인 엔드포인트 세트를 제공해요.

공개 REST 메서드

메서드 설명
GetServerTime 서버의 현재 시간을 반환해요(클럭 동기화에 유용해요).
GetAssets 사용 가능한 모든 자산과 속성(소수점 자릿수, 표시 이름)을 나열해요.
GetAssetPairs 수수료 구조와 마진 정보가 포함된 모든 거래 가능한 자산 쌍을 나열해요.
GetTicker 하나 이상의 페어에 대한 시세 데이터(매수, 매도, 최근, 거래량, VWAP)를 반환해요.
GetOHLC 특정 페어와 간격에 대한 OHLC 캔들 데이터를 반환해요.
GetOrderBook 특정 페어의 현재 주문서를 지정된 깊이로 반환해요.
GetTrades 특정 페어의 최근 거래 내역을 반환해요.
GetSpread 특정 페어의 최근 스프레드 데이터를 반환해요.

비공개 REST 메서드 - 계정 및 거래

메서드 설명
GetAccountBalance 계정의 모든 자산 잔액을 반환해요.
GetTradeBalance 거래 잔액 정보(자기자본, 마진, 가용 마진, 손익)를 반환해요.
GetOpenOrders 현재 오픈된 모든 주문을 반환해요.
GetClosedOrders 최근 종료된 주문을 반환해요.
QueryOrders 거래 ID로 특정 주문을 조회해요.
GetTradesHistory 거래 내역을 반환해요.
QueryTrades 거래 ID로 특정 거래를 조회해요.
GetLedgers 원장 항목(입금, 출금, 거래, 수수료)을 반환해요.
QueryLedgers ID로 특정 원장 항목을 조회해요.
GetTradeVolume 30일 거래량과 수수료 단계를 반환해요.
AddOrder REST를 통해 새 주문을 실행해요.
CancelOrder REST를 통해 기존 주문을 취소해요.
GetWebSocketsToken 비공개 WebSocket 구독에 필요한 토큰을 생성해요.

비공개 REST 메서드 - 내보내기 및 보고

메서드 설명
AddExport 데이터 내보내기를 요청해요(거래 또는 원장 항목).
ExportStatus 보류 중인 내보내기 요청 상태를 확인해요.
RetrieveExport 완료된 내보내기 파일을 다운로드해요.
RemoveExport 내보내기 보고서를 삭제해요.

비공개 REST 메서드 - 자금 운용

메서드 설명
GetDepositMethods 특정 자산의 사용 가능한 입금 방법을 반환해요.
GetDepositAddresses 특정 자산과 방법의 입금 주소를 반환해요.
GetStatusOfRecentDeposits 최근 입금 트랜잭션 상태를 반환해요.
GetWithdrawalInformation 특정 자산의 출금 세부 정보(수수료, 최소값, 한도)를 반환해요.
WithdrawFunds 외부 주소로의 출금을 시작해요.
GetStatusOfRecentWithdraws 최근 출금 트랜잭션 상태를 반환해요.
RequestWithdrawalCancelation 보류 중인 출금 취소를 시도해요.
RequestWalletTransfer Kraken 지갑 간에 자금을 이체해요(예: 현물 → 선물).
// Public REST: Get ticker data
ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
// Public REST: Get OHLC data
ShowMessage(oKraken.REST_API.GetOHLC('XBTUSD'));
// Private REST: Get account balance
ShowMessage(oKraken.REST_API.GetAccountBalance);
// Private REST: Get open orders
ShowMessage(oKraken.REST_API.GetOpenOrders);

선물 WebSocket API

TsgcWSAPI_Kraken_Futures 컴포넌트는 무기한 계약과 고정 만기 선물을 포함한 Kraken 선물 시장의 실시간 스트리밍을 제공해요.

공개 채널

메서드 설명
SubscribeTicker / UnSubscribeTicker 마크 가격, 지수 가격, 펀딩 비율을 포함한 실시간 선물 시세 데이터예요.
SubscribeTrade / UnSubscribeTrade 선물 시장의 실시간 체결 피드예요.
SubscribeBook / UnSubscribeBook 선물 계약의 주문서 스냅샷과 증분 업데이트예요.
SubscribeHeartBeat / UnSubscribeHeartBeat 주기적 하트비트 메시지를 통한 연결 상태 모니터링이에요.
SubscribeTickerLite / UnSubscribeTickerLite 고빈도 모니터링을 위한 축소된 페이로드의 경량 시세예요.

비공개 채널

메서드 설명
SubscribeOpenOrdersVerbose / UnSubscribeOpenOrdersVerbose 전체 주문 정보가 포함된 상세한 실시간 오픈 주문 업데이트예요.
SubscribeOpenPositions / UnSubscribeOpenPositions 오픈 선물 포지션의 실시간 업데이트예요.
SubscribeAccountLog / UnSubscribeAccountLog 실시간 계정 활동 로그(펀딩, 청산 등)예요.
SubscribeFills / UnSubscribeFills 선물 주문의 실시간 체결 알림이에요.
SubscribeOpenOrders / UnSubscribeOpenOrders 경량 오픈 주문 상태 업데이트예요.
SubscribeAccountBalanceAndMargins / UnSubscribeAccountBalanceAndMargins 선물 계정의 실시간 잔액 및 마진 업데이트예요.
SubscribeNotifications / UnSubscribeNotifications 계정에 대한 시스템 알림이에요.

선물 REST API

선물 REST API는 TsgcWSAPI_Kraken_FuturesREST_API 속성을 통해 접근해요. 시장 데이터, 주문 관리, 계정 조회, 자금 이체를 위한 엔드포인트를 제공해요.

공개 REST 메서드

메서드 설명
GetFeeSchedules 선물 거래의 현재 수수료 일정을 반환해요.
GetHistory 선물 계약의 과거 시장 데이터를 반환해요.
GetInstruments 사용 가능한 모든 선물 상품과 계약 사양을 나열해요.
GetTickers 모든 선물 계약의 시세 데이터를 반환해요.

비공개 REST 메서드 - 계정 및 주문

메서드 설명
GetAccounts 선물 계정 잔액과 마진 정보를 반환해요.
GetFills 선물 주문의 최근 체결 내역을 반환해요.
GetHistoricalExecutions 과거 주문 체결 내역을 반환해요.
GetHistoricalOrders 과거 주문 데이터를 반환해요.
GetHistoricalTriggers 조건부 주문의 과거 트리거 이벤트를 반환해요.
GetOpenPositions 현재 오픈된 모든 선물 포지션을 반환해요.
GetNotifications 계정 알림을 반환해요.

비공개 REST 메서드 - 주문 관리

메서드 설명
SendMarketOrder 현재 최우선 가격으로 시장가 주문을 실행해요.
SendLimitOrder 지정된 가격으로 지정가 주문을 실행해요.
SendStopOrder 지정된 가격에서 트리거되는 스톱 주문을 실행해요.
SendTakeProfit 이익 실현 주문을 실행해요.
CancelAllOrders 모든 오픈 선물 주문을 한 번에 취소해요.
CancelOrderByOrderId Kraken 주문 ID로 특정 주문을 취소해요.
CancelOrderByCliOrderId 클라이언트 주문 ID로 특정 주문을 취소해요.
EditOrderByOrderId Kraken 주문 ID로 기존 주문을 수정해요.
EditOrderByCliOrderId 클라이언트 주문 ID로 기존 주문을 수정해요.

비공개 REST 메서드 - 이체 및 보고

메서드 설명
Transfer 선물 서브 계정 간에 자금을 이체해요.
WalletTransfer 지갑 유형 간에 이체해요.
SubAccountTransfer 서브 계정 간에 이체해요.
WithdrawalToSpotWallet 선물 지갑에서 현물 지갑으로 자금을 이동해요.
GetFeeScheduleVolumes 수수료 단계 계산을 위한 거래량을 반환해요.
GetAccountLogCSV 계정 활동 로그를 CSV 파일로 다운로드해요.

전체 코드 예제

다음 예제는 Kraken 현물 API에 연결하고, REST를 통해 시장 데이터를 가져오고, 계정 잔액을 조회하고, WebSocket을 통해 실시간 시세 피드를 구독하는 방법을 보여줘요.

var
  oClient: TsgcWebSocketClient;
  oKraken: TsgcWSAPI_Kraken;
begin
  // Create and configure the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  oKraken := TsgcWSAPI_Kraken.Create(nil);
  oKraken.Client := oClient;
  // Configure API credentials for private endpoints
  oKraken.Kraken.ApiKey := 'your_api_key';
  oKraken.Kraken.ApiSecret := 'your_api_secret';
  // Connect to Kraken
  oClient.Active := True;
  // REST: Get ticker data for BTC/USD
  ShowMessage(oKraken.REST_API.GetTicker('XBTUSD'));
  // REST: Get account balance (requires API key)
  ShowMessage(oKraken.REST_API.GetAccountBalance);
  // WebSocket: Subscribe to real-time ticker
  oKraken.SubscribeTicker('XBT/USD');
end;

선물 예제

선물 컴포넌트 설정은 TsgcWSAPI_Kraken_Futures를 사용하는 동일한 패턴을 따라요:

var
  oClient: TsgcWebSocketClient;
  oFutures: TsgcWSAPI_Kraken_Futures;
begin
  oClient := TsgcWebSocketClient.Create(nil);
  oFutures := TsgcWSAPI_Kraken_Futures.Create(nil);
  oFutures.Client := oClient;
  // Configure API credentials
  oFutures.Kraken.ApiKey := 'your_futures_api_key';
  oFutures.Kraken.ApiSecret := 'your_futures_api_secret';
  oClient.Active := True;
  // REST: Get all available futures instruments
  ShowMessage(oFutures.REST_API.GetInstruments);
  // REST: Get account information
  ShowMessage(oFutures.REST_API.GetAccounts);
  // WebSocket: Subscribe to futures ticker
  oFutures.SubscribeTicker('PI_XBTUSD');
  // WebSocket: Subscribe to private account updates
  oFutures.SubscribeOpenPositions;
  oFutures.SubscribeAccountBalanceAndMargins;
end;

참고 사항 및 모범 사례

현물 vs. 선물 API 키

Kraken은 현물과 선물 거래에 별도의 API 키를 사용해요. Kraken 설정 페이지에서 각 플랫폼에 대한 전용 키를 발급받으세요. 두 컴포넌트에 같은 키를 재사용하지 마세요.

비공개 채널을 위한 WebSocket 토큰

현물 거래소의 비공개 WebSocket 구독은 GetWebSocketsToken REST 메서드로 얻은 임시 토큰이 필요해요. 컴포넌트가 API 자격 증명이 설정되면 자동으로 처리하지만, 토큰이 만료되면 필요에 따라 갱신돼요.

요청 제한

Kraken은 REST 및 WebSocket API 모두에 요청 제한을 적용해요. REST 엔드포인트는 각 호출이 카운터를 증가시키고 시간이 지나면 카운터가 감소하는 카운터 기반 시스템을 사용해요. 제한을 초과하면 일시적인 잠금이 발생해요. REST 엔드포인트를 폴링하는 대신 실시간 데이터에는 WebSocket 구독을 사용하세요.

자산 쌍 명명

참고: Kraken은 REST와 WebSocket API에 서로 다른 명명 규칙을 사용해요. REST 엔드포인트는 보통 XBTUSD 같은 연결된 이름을 사용하고, WebSocket 채널은 XBT/USD 같은 슬래시 구분 형식을 사용해요. 컴포넌트가 이 차이를 처리하지만 응답을 처리할 때 염두에 두세요. GetAssetPairs로 모든 사용 가능한 페어의 정확한 이름을 확인하세요.