CEX.IO is a well-established cryptocurrency exchange offering real-time market data and trading capabilities through its WebSocket API. The TsgcWSAPI_Cex component provides a native Delphi interface for connecting to CEX.IO, enabling developers to subscribe to live ticker updates, manage order books, place and cancel orders, and handle account positions — all over a persistent WebSocket connection.
Table of Contents
개요
CEX.IO WebSocket API는 두 가지 범주의 기능을 제공해요: 인증 없이 시장 데이터를 스트리밍하는 공개 채널과 거래 및 계좌 관리에 API 키 인증이 필요한 비공개 메서드예요. TsgcWSAPI_Cex 컴포넌트는 두 범주를 모두 포함하여 실시간 가격 피드부터 주문 실행까지 모든 것을 처리하는 단일 Delphi 컴포넌트를 제공해요.
시작하기
CEX.IO에 연결하려면 폼에 TsgcWebSocketClient와 TsgcWSAPI_Cex 컴포넌트를 놓거나 코드에서 생성해요. 클라이언트를 API 컴포넌트에 할당하고 인증 정보를 설정한 후 연결을 활성화하세요.
oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
참고: 티커 구독 같은 공개 메서드는 API 인증 정보가 필요하지 않아요. 주문 접수나 잔고 확인 같은 비공개(인증) 메서드를 사용하려는 경우에만 ApiKey와 ApiSecret을 설정하면 돼요.
공개 WebSocket 메서드
공개 메서드를 사용하면 인증 없이 실시간 시장 데이터를 받을 수 있어요. 대시보드, 차트 도구, 가격 알림 시스템을 만들 때 적합해요.
| Method | Description |
|---|---|
SubscribeTickers |
통화 쌍(예: BTC/USD)에 대한 실시간 티커 업데이트를 구독해요. |
SubscribeChart |
지정한 거래 쌍의 차트/캔들 데이터를 구독해요. |
SubscribePair |
특정 거래 쌍의 업데이트를 구독해요. |
UnSubscribePair |
이전에 구독한 거래 쌍의 구독을 취소해요. |
SubscribeOrderBook |
쌍의 호가창 스냅샷과 증분 업데이트를 구독해요. |
UnSubscribeOrderBook |
호가창 업데이트 구독을 취소해요. |
티커 구독
SubscribeTickers 메서드는 통화 쌍의 실시간 가격 데이터 스트림을 열어요. 첫 번째 파라미터는 기본 통화이고 두 번째는 견적 통화예요.
// Subscribe to BTC/USD ticker updates
oCex.SubscribeTickers('BTC', 'USD');
호가창 사용
호가창 구독은 초기 스냅샷과 이후 증분 업데이트를 모두 제공해요. 데이터 수신을 시작하려면 SubscribeOrderBook을, 더 이상 필요하지 않으면 UnSubscribeOrderBook을 사용해요.
// Subscribe to the BTC/USD order book
oCex.SubscribeOrderBook('BTC', 'USD');
// Later, unsubscribe when no longer needed
oCex.UnSubscribeOrderBook('BTC', 'USD');
비공개 WebSocket 메서드 (인증 필요)
비공개 메서드는 CEX.IO API 키와 시크릿을 통한 인증이 필요해요. 컴포넌트가 인증 핸드셰이크를 자동으로 처리하지만, 비공개 메서드를 호출하기 전에 Authenticate를 먼저 호출해야 해요.
| Method | Description |
|---|---|
Authenticate |
API 키와 시크릿을 사용하여 WebSocket 세션을 인증해요. |
GetTicker |
특정 통화 쌍의 현재 티커를 조회해요. |
GetBalance |
모든 통화의 계좌 잔고를 조회해요. |
Ping |
WebSocket 연결을 유지하기 위해 킵얼라이브 핑을 전송해요. |
GetOpenOrders |
계좌의 현재 미체결 주문을 모두 조회해요. |
PlaceOrder |
지정한 수량과 가격으로 새 매수 또는 매도 주문을 접수해요. |
CancelReplaceOrder |
기존 주문을 취소하고 새 주문으로 원자적으로 교체해요. |
GetOrderRequest |
식별자로 특정 주문의 세부 정보를 조회해요. |
CancelOrderRequest |
식별자로 특정 주문을 취소해요. |
GetArchivedOrders |
과거 (완료/취소된) 주문을 조회해요. |
OpenPosition |
새 마진 거래 포지션을 열어요. |
GetPosition |
특정 미결 포지션의 세부 정보를 조회해요. |
GetOpenPositions |
현재 미결 마진 포지션을 모두 조회해요. |
ClosePosition |
기존 마진 거래 포지션을 청산해요. |
코드 예제
다음 예제는 CEX.IO 연결, 티커 구독, 매수 주문 접수, 계좌 잔고 조회 등 전체 워크플로를 보여줘요.
oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
// Subscribe to ticker
oCex.SubscribeTickers('BTC', 'USD');
// Place an order
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Get balance
oCex.GetBalance;
주문 접수
PlaceOrder 메서드는 기본 통화, 견적 통화, 수량, 가격, 주문 유형을 받아요. 주문 유형 파라미터는 ctBuy 또는 ctSell 열거 값을 사용해요.
// Place a buy order: 0.01 BTC at $30,000
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Place a sell order: 0.05 ETH at $2,000
oCex.PlaceOrder('ETH', 'USD', 0.05, 2000, ctSell);
포지션 관리
CEX.IO는 포지션 관리 메서드를 통해 마진 거래를 지원해요. WebSocket 연결을 통해 포지션을 직접 열고, 조회하고, 청산할 수 있어요.
// Retrieve all open positions
oCex.GetOpenPositions;
// Close a specific position by ID
oCex.ClosePosition(positionId);
이벤트 및 콜백
TsgcWSAPI_Cex 컴포넌트는 거래소에서 데이터를 받으면 이벤트를 발생시켜요. 티커 업데이트, 주문 확인, 잔고 정보 같은 수신 메시지를 처리할 핸들러를 할당하세요.
| 이벤트 | 발생 시점 |
|---|---|
OnCexMessage |
CEX.IO WebSocket 서버에서 메시지를 받을 때마다 발생해요. |
OnCexConnect |
CEX.IO WebSocket 연결이 수립될 때 발생해요. |
OnCexDisconnect |
WebSocket 연결이 닫힐 때 발생해요. |
OnCexError |
거래소에서 오류 응답을 받을 때 발생해요. |
설정 및 참고 사항
API 인증 정보
CEX.IO 계정 설정에서 API 키와 시크릿을 얻으세요. 인증 정보를 안전하게 저장하고 프로덕션 코드에 하드코딩하지 마세요. 암호화된 설정 파일이나 환경 변수에서 로드하는 방법을 고려해요.
연결 관리
WebSocket 연결은 TsgcWebSocketClient 컴포넌트가 관리해요. 연결하려면 Active := True를, 연결을 끊으려면 Active := False를 설정하세요. 클라이언트의 재연결 속성을 통해 설정하면 자동 재연결을 지원해요.
인증 흐름
비공개 메서드를 호출하기 전에 인증을 완료해야 해요. 연결이 수립된 후 Authenticate를 호출하거나 OnCexConnect 이벤트 내에서 처리하세요. 컴포넌트가 API 키와 시크릿으로 필요한 HMAC 서명을 자동으로 생성해요.
킵얼라이브
인증된 세션을 유지하기 위해 주기적으로 Ping 메서드를 사용하세요. CEX.IO는 일정 시간 후 유휴 세션을 연결 해제할 수 있어요.
