Bybit API 업데이트 sgcWebSockets

· 기능

Bybit는 영구 계약, 선물, 현물 거래, 옵션을 제공하는 주요 암호화폐 파생상품 및 현물 거래소예요. TsgcWSAPI_Bybit 컴포넌트는 Bybit V5 통합 API와의 완전한 Delphi 통합을 제공해요. 실시간 시장 데이터와 비공개 이벤트를 위한 WebSocket 구독과 거래, 포지션 관리, 계정 조회를 위한 포괄적인 REST 인터페이스를 결합해요.

Table of Contents

아키텍처 개요

Bybit V5 API는 현물, 선형 영구 계약, 인버스 영구 계약, 인버스 선물, 옵션을 단일 엔드포인트 세트로 통합하는 인터페이스예요. TsgcWSAPI_Bybit 컴포넌트는 두 채널을 모두 지원해요:

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는 모든 파라미터를 완전히 제어할 수 있지만 PlaceMarketOrderPlaceLimitOrder 편의 메서드는 더 적은 파라미터로 가장 일반적인 시나리오를 처리해요. reduce-only, 유효 기간, 조건부 트리거 같은 고급 옵션이 필요할 때 전체 메서드를 사용해요.

속도 제한

Bybit는 REST와 WebSocket 엔드포인트 모두에 속도 제한을 적용해요. REST 제한은 일반적으로 엔드포인트별로 다르며 (예: 주문 접수는 초당 10개 요청). WebSocket 구독은 동시 토픽 수에 제한이 있어요. 한도 내에 유지하기 위해 응답 헤더와 오류 코드를 모니터링해요.

참고: Bybit WebSocket 연결은 주기적인 핑 프레임을 보내요. TsgcWSAPI_Bybit 컴포넌트가 이를 자동으로 처리하여 추가 코드 없이 연결을 유지해요.