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 구독은 연결이 유지되는 동안 지속돼요. 연결이 끊기면 재연결 후 다시 구독해야 해요.