Delphi에서 OKX WebSocket 트레이딩 API 통합하기
TsgcWSAPI_OKX 컴포넌트는 통합된 WebSocket 인터페이스를 통해 OKX 거래소에 대한 포괄적인 Delphi 접근을 제공해요. 공개 시장 데이터 스트림, 비공개 계정 채널, 시장가 및 지정가 주문을 포함한 직접 트레이딩 작업을 단일 컴포넌트로 모두 지원해요. 이 가이드는 사용 가능한 모든 메서드와 설정 속성을 설명하고, Delphi에서 OKX 트레이딩을 시작할 수 있는 동작하는 코드 예제를 포함해요.
목차
WebSocket 공개 채널
공개 채널은 인증 없이 연결된 모든 클라이언트에 시장 데이터를 스트리밍해요. 이 채널들은 종목, 시세, 호가창, 체결, 캔들스틱, 펀딩 비율 등을 다뤄요. 각 구독 메서드에는 그에 대응하는 구독 취소 메서드가 있어요.
시장 데이터 채널
메서드
설명
SubscribeInstruments
종목 업데이트(신규 상장, 상장 폐지, 상태 변경)를 구독해요.
SubscribeTicker
특정 종목의 실시간 시세 데이터를 구독해요.
SubscribeOpenInterest
선물 및 무기한 계약의 미결제약정 업데이트를 구독해요.
SubscribeCandlestick
지정한 간격의 캔들스틱(kline) 데이터를 구독해요.
SubscribeTrades
특정 종목의 실시간 체결 데이터를 구독해요.
SubscribeOrderBook
설정 가능한 깊이의 호가창 업데이트를 구독해요.
가격 및 지수 채널
메서드
설명
SubscribeEstimatedPrices
옵션 및 선물의 예상 인도/행사 가격을 구독해요.
SubscribeMarkPrice
증거금 및 손익 계산에 사용되는 마크 가격 업데이트를 구독해요.
SubscribeMarkPriceCandlestick
마크 가격을 기반으로 한 캔들스틱 데이터를 구독해요.
SubscribePriceLimit
종목의 가격 제한(가격 밴드) 업데이트를 구독해요.
SubscribeIndexCandlestick
지수 가격을 기반으로 한 캔들스틱 데이터를 구독해요.
SubscribeIndexTicker
지정한 지수의 지수 시세 업데이트를 구독해요.
SubscribeFundingRate
무기한 계약의 펀딩 비율 업데이트를 구독해요.
옵션 및 시스템 채널
메서드
설명
SubscribeOptionSummary
옵션 요약 데이터(그릭스, 변동성, 미결제약정)를 구독해요.
SubscribeStatus
시스템 상태 업데이트(점검, 장애)를 구독해요.
SubscribePublicStructureBlockTrades
공개 구조 블록 트레이드 데이터를 구독해요.
SubscribeBlockTickers
블록 트레이드 시세 업데이트를 구독해요.
참고: 위에 나열된 모든 Subscribe 메서드에는 해당 채널의 업데이트 수신을 중단할 수 있는
UnSubscribe 대응 메서드(예:
UnSubscribeTicker)가 있어요.
WebSocket 비공개 채널
비공개 채널은 인증이 필요하며 계정 상태, 포지션, 주문, 알고리즘 트레이딩 활동에 대한 실시간 업데이트를 제공해요. 이 채널들을 구독하기 전에 OKX.IsPrivate := True로 설정하고 유효한 API 자격 증명을 제공하세요.
계정 및 포지션 채널
메서드
설명
SubscribeAccount
계정 잔고 및 자본 업데이트를 실시간으로 구독해요.
SubscribePositions
포지션 업데이트(진입, 청산, 크기 변경)를 구독해요.
SubscribeBalanceAndPosition
잔고와 포지션 업데이트를 단일 스트림으로 결합해 구독해요.
SubscribePositionRisk
포지션 위험 경고 업데이트(청산 근접도)를 구독해요.
SubscribeAccountGreeks
옵션 포지션의 계정 수준 그릭스 업데이트를 구독해요.
주문 및 알고 채널
메서드
설명
SubscribeOrders
주문 상태 업데이트(접수, 체결, 취소, 부분 체결)를 구독해요.
SubscribeOrdersAlgo
알고리즘 주문 업데이트(트리거, TP/SL, 추적 스톱)를 구독해요.
SubscribeAdvanceAlgo
고급 알고리즘 주문 업데이트(아이스버그, TWAP)를 구독해요.
RFQ 및 블록 트레이드 채널
메서드
설명
SubscribeRfqs
블록 트레이딩을 위한 호가 요청(RFQ) 업데이트를 구독해요.
SubscribeQuotes
RFQ에 대한 응답 호가 업데이트를 구독해요.
SubscribePrivateStructureBlockTrades
비공개 구조 블록 트레이드 업데이트를 구독해요.
그리드 트레이딩 채널
메서드
설명
SubscribeSpotGridAlgoOrders
현물 그리드 알고 주문 업데이트를 구독해요.
SubscribeContactGridAlgoOrders
계약 그리드 알고 주문 업데이트를 구독해요.
SubscribeGridPositions
그리드 트레이딩 포지션 업데이트를 구독해요.
SubscribeGridSubOrders
그리드 전략 내 개별 하위 주문 업데이트를 구독해요.
WebSocket 트레이딩 작업
OKX는 WebSocket 연결을 통해 직접 주문을 접수하고 관리하는 것을 지원하며, 이는 REST API 호출에 비해 더 낮은 지연 시간을 제공해요. 이러한 메서드는 인증이 필요해요.
메서드
설명
PlaceOrder
모든 주문 매개변수에 대한 완전한 제어로 새 주문을 접수해요.
PlaceMarketOrder
가능한 최선의 가격으로 즉시 체결되는 시장가 주문을 접수해요.
PlaceLimitOrder
지정한 가격에 지정가 주문을 접수하고, 시장이 해당 가격에 도달했을 때만 체결돼요.
CancelOrder
주문 ID로 기존 주문을 취소해요.
AmendOrder
기존 주문을 수정해요(취소 후 재접수 없이 가격이나 크기를 변경).
참고: WebSocket 기반 트레이딩은 REST 기반 주문 접수보다 훨씬 낮은 지연 시간을 제공해요. OKX는 WebSocket 주문을 더 높은 우선순위로 처리하므로, 지연 시간에 민감한 전략에 선호되는 방식이에요.
코드 예제
다음 예제는 TsgcWSAPI_OKX 컴포넌트를 생성하고 설정하는 방법, API로 인증하는 방법, 시세 데이터를 구독하는 방법, 주문을 모니터링하는 방법, WebSocket 연결을 통해 시장가 및 지정가 주문을 직접 접수하는 방법을 보여줘요.
var
oClient: TsgcWebSocketClient;
oOKX: TsgcWSAPI_OKX;
begin
// Create the WebSocket client
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
// Configure API credentials
oOKX.OKX.ApiKey := 'your_api_key';
oOKX.OKX.ApiSecret := 'your_api_secret';
oOKX.OKX.Passphrase := 'your_passphrase';
oOKX.OKX.IsPrivate := True;
// Connect to OKX
oClient.Active := True;
// Subscribe to BTC-USDT ticker
oOKX.SubscribeTicker('BTC-USDT');
// Subscribe to order updates for spot trading
oOKX.SubscribeOrders(okxitSpot);
// Place a market buy order
oOKX.PlaceMarketOrder(okxosBuy, 'BTC-USDT', 0.001);
// Place a limit buy order
oOKX.PlaceLimitOrder(okxosBuy, 'BTC-USDT', 0.001, 30000);
end;
WebSocket 이벤트 처리
수신되는 WebSocket 메시지를 처리하는 이벤트 핸들러를 할당하세요. 이벤트는 각 업데이트에 대해 채널 이름과 JSON 페이로드를 제공해요.
procedure TForm1.OnOKXEvent(Sender: TObject;
const aChannel, aData: string);
begin
// aChannel identifies the subscription (e.g., 'tickers', 'orders')
// aData contains the JSON payload
Memo1.Lines.Add(aChannel + ': ' + aData);
end;
데모 트레이딩 모드 사용하기
OKX는 테스트용 데모 트레이딩 환경을 제공해요. 연결하기 전에 OKX.IsDemo := True로 설정해 활성화할 수 있어요. 데모 모드는 모의 잔고를 가진 별도의 엔드포인트에 연결되어 실제 자금 손실 위험 없이 트레이딩 로직을 테스트할 수 있어요.
// Enable demo trading mode
oOKX.OKX.IsDemo := True;
oOKX.OKX.IsPrivate := True;
oClient.Active := True;
설정 및 참고 사항
설정 속성
모든 설정은 컴포넌트의 OKX 속성을 통해 접근해요.
속성
타입
설명
OKX.ApiKey
String
OKX API 키. OKX API 관리 페이지에서 생성하세요.
OKX.ApiSecret
String
OKX API 시크릿. 이 값은 안전하게 보관하고 클라이언트 측 코드에 노출하지 마세요.
OKX.Passphrase
String
API 키를 생성할 때 설정한 암호 문구. 인증이 필요한 모든 요청에 필요해요.
OKX.IsDemo
Boolean
True로 설정하면 모의 자금이 있는 OKX 데모 트레이딩 환경에 연결돼요. 기본값은 False예요.
OKX.IsPrivate
Boolean
True로 설정하면 WebSocket 연결에서 인증을 활성화해요. 비공개 채널과 트레이딩 작업에 필요해요. 기본값은 False예요.
중요 참고 사항
보안: 프로덕션 코드에 API 키, 시크릿, 암호 문구를 직접 하드코딩하지 마세요. 자격 증명을 저장하려면 안전한 설정 파일이나 환경 변수를 사용하세요.
비공개 채널이나 트레이딩 작업이 필요하다면 연결하기 전에 OKX.IsPrivate := True로 설정하세요. 공개 채널은 인증 없이 작동해요.
실제 환경으로 가기 전에 OKX 데모 환경에서 테스트하려면 OKX.IsDemo := True를 사용하세요. 데모 모드는 데모 플랫폼 전용으로 생성된 별도의 API 자격 증명을 사용해요.
SubscribeOrders 메서드는 트레이딩 유형별로 주문 업데이트를 필터링하기 위해 종목 유형 매개변수(예: okxitSpot, okxitFutures, okxitSwap, okxitOption)를 받아요.
PlaceMarketOrder와 PlaceLimitOrder 편의 메서드는 주문 방향 매개변수(예: okxosBuy, okxosSell), 종목 ID, 크기, 그리고 (지정가 주문의 경우) 가격을 받아요.
AmendOrder 메서드를 사용하면 활성 주문을 취소하고 재접수하지 않고도 가격이나 크기를 수정할 수 있어 지연 시간을 줄이고 큐 위치 손실을 방지해요.
OKX는 WebSocket 메시지에 대한 속도 제한을 적용해요. 초당 구독 및 트레이딩 요청에 대한 현재 제한은 공식 OKX 문서를 참조하세요.
WebSocket 구독은 연결이 유지되는 동안 지속돼요. 연결이 끊기면 재연결 후 다시 구독해야 해요.
Sergio Gomez Cortijo — founder & lead developer of eSeGeCe.
Follow on LinkedIn
or GitHub .