Bybit는 영구 계약, 선물, 현물 거래, 옵션을 제공하는 주요 암호화폐 파생상품 및 현물 거래소예요. TsgcWSAPI_Bybit 컴포넌트는 Bybit V5 통합 API와의 완전한 Delphi 통합을 제공해요. 실시간 시장 데이터와 비공개 이벤트를 위한 WebSocket 구독과 거래, 포지션 관리, 계정 조회를 위한 포괄적인 REST 인터페이스를 결합해요.
Table of Contents
- 아키텍처 개요
- WebSocket API — 공개 채널
- WebSocket API — 비공개 채널
- REST API — 시장 데이터
- REST API — 거래
- REST API — 포지션 관리
- REST API — 계정
- 시작하기 — 코드 예제
- 설정 참조
- 팁 및 참고 사항
아키텍처 개요
Bybit V5 API는 현물, 선형 영구 계약, 인버스 영구 계약, 인버스 선물, 옵션을 단일 엔드포인트 세트로 통합하는 인터페이스예요. TsgcWSAPI_Bybit 컴포넌트는 두 채널을 모두 지원해요:
- WebSocket — 실시간 공개 시장 데이터(호가창, 거래, 티커, 캔들, 청산)와 비공개 계정 이벤트(포지션, 체결, 주문, 지갑 업데이트)예요.
- REST —
oBybit.REST_API를 통한 온디맨드 조회 및 작업으로 시장 데이터 조회, 주문 접수 및 관리, 포지션 설정, 계정 정보를 포함해요.
BybitClient 속성으로 제품 카테고리를 선택하여 WebSocket 엔드포인트를 결정해요: bybSpot, bybLinear, bybInverse, bybPerpetual.
WebSocket API — 공개 채널
공개 채널은 인증 없이 실시간 시장 데이터를 제공해요. 각 구독 메서드에는 해당 구독 취소 메서드가 있어요.
| 구독 | 구독 취소 | 설명 |
|---|---|---|
SubscribeOrderBook |
UnSubscribeOrderBook |
실시간 호가창 깊이 스냅샷과 증분 업데이트예요. |
SubscribeTrade |
UnSubscribeTrade |
거래소에서 발생하는 실시간 거래 체결이에요. |
SubscribeTicker |
UnSubscribeTicker |
24시간 롤링 윈도 티커 통계예요 (가격, 거래량, 변동). |
SubscribeKLine |
UnSubscribeKLine |
지정된 간격의 실시간 캔들스틱/K선 업데이트예요. |
SubscribeLiquidation |
UnSubscribeLiquidation |
거래소 전체의 청산 이벤트예요. |
SubscribeLT_KLine |
UnSubscribeLT_KLine |
레버리지 토큰 K선/캔들스틱 업데이트예요. |
SubscribeLT_Ticker |
UnSubscribeLT_Ticker |
레버리지 토큰 티커 데이터예요. |
SubscribeLT_Nav |
UnSubscribeLT_Nav |
레버리지 토큰 순자산가치 업데이트예요. |
WebSocket API — 비공개 채널
비공개 채널은 API 키와 시크릿을 통한 인증이 필요해요. 계정 활동에 대한 실시간 업데이트를 전달해요.
| 구독 | 구독 취소 | 설명 |
|---|---|---|
SubscribePosition |
UnSubscribePosition |
실시간 포지션 업데이트예요 (규모, 진입 가격, 손익, 레버리지). |
SubscribeExecution |
UnSubscribeExecution |
주문이 체결될 때 거래 체결 확인이에요. |
SubscribeOrder |
UnSubscribeOrder |
주문 상태 변경이에요 (신규, 부분 체결, 체결, 취소). |
SubscribeWallet |
UnSubscribeWallet |
모든 코인의 지갑 잔고 변경이에요. |
SubscribeGreek |
UnSubscribeGreek |
옵션 그리스 업데이트예요 (델타, 감마, 세타, 베가). |
SubscribeDcp |
UnSubscribeDcp |
연결 상태 모니터링을 위한 연결 해제 보호 이벤트예요. |
REST API — 시장 데이터
시장 데이터 엔드포인트는 공개이며 인증이 필요하지 않아요. oBybit.REST_API를 통해 접근해요.
| Method | Description |
|---|---|
GetServerTime |
Bybit 서버 타임스탬프를 반환해요. |
GetKLine |
심볼과 간격에 대한 과거 K선/캔들스틱 데이터를 반환해요. |
GetMarkPriceKLine |
마크 가격 K선 데이터를 반환해요 (손익 및 청산 계산에 사용). |
GetIndexPriceKLine |
지수 가격 K선 데이터를 반환해요. |
GetPremiumIndexPriceKLine |
영구 계약의 프리미엄 지수 가격 K선 데이터를 반환해요. |
GetInstrumentsInfo |
instrument 사양을 반환해요 (틱 크기, 로트 크기, 레버리지 한도 등). |
GetOrderBook |
주어진 깊이의 현재 호가창 스냅샷을 반환해요. |
GetTickers |
하나 또는 모든 심볼의 최신 티커 정보를 반환해요. |
GetFundingRateHistory |
영구 계약의 과거 펀딩 비율 기록을 반환해요. |
GetPublicRecentTradingHistory |
심볼의 가장 최근 공개 거래를 반환해요. |
GetOpenInterest |
파생상품 계약의 미결제약정 데이터를 반환해요. |
GetHistoricalVolatility |
옵션의 과거 변동성을 반환해요. |
GetInsurance |
보험 기금 잔고 내역을 반환해요. |
GetRiskLimit |
주어진 심볼의 위험 한도 티어를 반환해요. |
GetDeliveryPrice |
만료된 선물 및 옵션의 인도 가격을 반환해요. |
GetLongShortRatio |
주어진 심볼과 기간의 롱/숏 비율을 반환해요. |
REST API — 거래
거래 엔드포인트는 적절한 권한의 API 키 인증이 필요해요. 이 메서드들로 주문을 접수, 수정, 취소할 수 있어요.
| Method | Description |
|---|---|
PlaceOrder |
전체 파라미터 제어로 새 주문을 접수해요 (유형, 방향, 가격, 수량, 유효 기간 등). |
PlaceMarketOrder |
시장가 주문을 접수하는 편의 메서드예요 (최적 가격으로 즉시 체결). |
PlaceLimitOrder |
지정 가격에 지정가 주문을 접수하는 편의 메서드예요. |
AmendOrder |
기존 미체결 주문을 수정해요 (가격, 수량 또는 기타 파라미터). |
CancelOrder |
주문 ID로 특정 미체결 주문을 취소해요. |
GetOpenOrders |
현재 모든 미체결 주문을 반환해요. |
CancelAllOrders |
심볼 또는 카테고리로 필터링하여 모든 미체결 주문을 취소해요. |
GetOrderHistory |
시간 범위 내 과거 주문(체결, 취소, 거부)을 반환해요. |
REST API — 포지션 관리
포지션 엔드포인트로 레버리지, 마진 모드, 위험 한도, 손절/이익실현 설정 등 파생상품 포지션을 조회하고 구성할 수 있어요.
| Method | Description |
|---|---|
GetPositionInfo |
현재 포지션 세부 정보를 반환해요 (규모, 진입 가격, 미실현 손익, 마진). |
SetLeverage |
주어진 심볼의 레버리지를 설정해요. |
SwitchCrossIsolatedMargin |
교차 마진과 격리 마진 모드를 전환해요. |
SetTPSLMode |
이익실현/손절 모드를 구성해요 (전체 포지션 또는 일부). |
SwitchPositionMode |
단방향 모드와 헤지 모드를 전환해요. |
SetRiskLimit |
최대 레버리지에 영향을 미치는 심볼의 위험 한도 티어를 설정해요. |
SetTradingStop |
기존 포지션에 트레일링 스톱, 이익실현, 손절을 설정해요. |
SetAutoAddMargin |
격리 마진 포지션의 자동 마진 추가를 활성화 또는 비활성화해요. |
AddOrReduceMargin |
격리 마진 포지션에서 마진을 수동으로 추가하거나 제거해요. |
GetExecution |
거래의 체결/충전 기록을 반환해요. |
GetClosedPNL |
청산된 손익 기록을 반환해요. |
ConfirmNewRiskLimit |
추가 마진이 필요할 때 위험 한도 변경을 확인해요. |
REST API — 계정
계정 엔드포인트는 지갑 잔고, 계정 구성, 거래 로그를 제공해요.
| Method | Description |
|---|---|
GetWalletBalance |
모든 코인 또는 특정 계정 유형의 지갑 잔고를 반환해요. |
GetAccountInfo |
통합 계정 정보를 반환해요 (마진 모드, 계정 상태 등). |
GetTransactionLog |
거래 내역을 반환해요 (입금, 출금, 거래, 펀딩 비용 등). |
시작하기 — 코드 예제
다음 예제는 완전한 설정을 보여줘요: Bybit 선형 영구 계약 엔드포인트에 연결, REST를 통한 티커 데이터 조회, 지정가 주문 접수, 지갑 잔고 확인, WebSocket을 통한 실시간 거래 업데이트 구독.
var
oClient: TsgcWebSocketClient;
oBybit: TsgcWSAPI_Bybit;
begin
// Create the WebSocket client
oClient := TsgcWebSocketClient.Create(nil);
// Create the Bybit API component
oBybit := TsgcWSAPI_Bybit.Create(nil);
oBybit.Client := oClient;
// Configure API credentials
oBybit.Bybit.ApiKey := 'your_api_key';
oBybit.Bybit.ApiSecret := 'your_api_secret';
// Select the product category
oBybit.BybitClient := bybLinear;
// Connect to the WebSocket
oClient.Active := True;
// REST: Get ticker information for BTCUSDT
ShowMessage(oBybit.REST_API.GetTickers('BTCUSDT'));
// REST: Place a limit buy order
ShowMessage(oBybit.REST_API.PlaceLimitOrder(bbsBuy, 'BTCUSDT', 0.001, 30000));
// REST: Get wallet balance
ShowMessage(oBybit.REST_API.GetWalletBalance);
// WebSocket: Subscribe to real-time trades for BTCUSDT
oBybit.SubscribeTrade('BTCUSDT');
end;
REST vs. WebSocket
주문 접수, 잔고 조회, 과거 데이터 조회 같은 온디맨드 작업에는 REST API를 사용해요. 지속적인 저지연 데이터 스트림에는 WebSocket 구독을 사용해요. 두 가지를 동시에 사용할 수 있어요. REST 호출은 WebSocket 연결 상태와 독립적이에요.
설정 참조
| 속성 | 유형 | 설명 |
|---|---|---|
Bybit.ApiKey |
String | 인증된 요청을 위한 Bybit API 키예요. |
Bybit.ApiSecret |
String | 요청 서명을 위한 Bybit API 시크릿이에요. |
Bybit.TestNet |
Boolean | Bybit 테스트넷 환경에 연결하려면 True로 설정해요; 메인넷은 False예요. |
Bybit.SignatureExpires |
Integer | HMAC 서명의 만료 시간(초)이에요 (기본값으로 보통 충분해요). |
BybitClient |
Enum | 제품 카테고리예요: bybSpot, bybLinear, bybInverse, bybPerpetual. |
팁 및 참고 사항
먼저 테스트넷을 사용하세요
항상 Bybit.TestNet := True로 개발을 시작해요. Bybit 테스트넷은 테스트 자금으로 완전한 시뮬레이션 환경을 제공해요. testnet.bybit.com에서 별도의 테스트넷 API 키를 만들 수 있어요.
통합 V5 API
V5 API는 모든 제품 유형을 하나의 엔드포인트 세트로 통합해요. BybitClient 속성은 연결할 WebSocket 스트림을 결정하고 REST API는 요청에 따라 올바른 카테고리로 자동 라우팅해요.
주문 편의 메서드
PlaceOrder는 모든 파라미터를 완전히 제어할 수 있지만 PlaceMarketOrder와 PlaceLimitOrder 편의 메서드는 더 적은 파라미터로 가장 일반적인 시나리오를 처리해요. reduce-only, 유효 기간, 조건부 트리거 같은 고급 옵션이 필요할 때 전체 메서드를 사용해요.
속도 제한
Bybit는 REST와 WebSocket 엔드포인트 모두에 속도 제한을 적용해요. REST 제한은 일반적으로 엔드포인트별로 다르며 (예: 주문 접수는 초당 10개 요청). WebSocket 구독은 동시 토픽 수에 제한이 있어요. 한도 내에 유지하기 위해 응답 헤더와 오류 코드를 모니터링해요.
참고: Bybit WebSocket 연결은 주기적인 핑 프레임을 보내요.TsgcWSAPI_Bybit 컴포넌트가 이를 자동으로 처리하여 추가 코드 없이 연결을 유지해요.
