Kraken 현물 및 선물 API Delphi 통합
Kraken은 가장 오래 운영되고 신뢰받는 암호화폐 거래소 중 하나로, 현물과 선물 시장을 모두 제공해요. Delphi용 TsgcWSAPI_Kraken과 TsgcWSAPI_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_Futures의 REST_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로 모든 사용 가능한 페어의 정확한 이름을 확인하세요.