WebSocket 채널은 두 가지 범주로 나뉩니다: public 및 private 채널.
OKX 속성에서 다음 속성을 구성할 수 있습니다.
클라이언트가 OKX 서버에 성공적으로 연결되면 OnOKXConnect 이벤트가 발생합니다. 연결을 시도하는 동안 오류가 발생하면 OnOKXError 이벤트가 오류 세부 정보와 함께 발생합니다.
OnOKXConnect 이벤트가 발생한 후, OKX servers로 메시지를 보내고 받기 시작할 수 있습니다.
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
DoLog('#OKX Connected');
end;
procedure OnOKXError(Sender: TObject; aCode, aMessage, aRawMessage: string);
begin
DoLog('#error: ' + aMessage);
end;
websocket 피드는 주문 및 거래에 대한 실시간 시장 데이터 업데이트를 제공합니다. websocket 피드에는 ticker, trades 등과 같은 일부 public 채널이 있습니다...
다음 Public 채널을 구독할 수 있습니다:
| 메서드 | 설명 |
| SubscribeInstruments | 전체 상품 목록이 구독 후 처음으로 푸시됩니다. 이후 상품 상태에 변경 사항이 있는 경우(예: FUTURES 인도, OPTION 행사, 신규 계약/거래 쌍 상장, 거래 정지 등) 상품이 푸시됩니다. |
| SubscribeTicker | instrument의 최근 거래 가격, bid 가격, ask 가격 및 24시간 거래량을 검색합니다. 데이터는 100ms마다 푸시됩니다. |
| SubscribeOpenInterest | 미결제 약정을 검색합니다. 데이터는 3초마다 푸시됩니다. |
| SubscribeCandlestick | 상품의 캔들스틱 데이터를 검색합니다. 푸시 빈도는 가장 빠른 간격인 500ms로 데이터를 푸시합니다. |
| SubscribeTrades | 최근 거래 데이터를 검색합니다. 거래가 있을 때마다 데이터가 푸시됩니다. |
| SubscribeEstimatedPrices |
FUTURES 계약 및 OPTION의 예상 인도/행사 가격을 검색합니다. 예상 인도/행사 가격만 인도/행사 1시간 전에 푸시되며, 가격 변경이 있는 경우 푸시됩니다. |
| SubscribeMarkPrice | mark price를 검색합니다. 데이터는 mark price가 변경될 때 200 ms마다 푸시되고, mark price가 변경되지 않을 때 10초마다 푸시됩니다. |
| SubscribeMarkPriceCandlestick | mark price의 캔들스틱 데이터를 검색합니다. 데이터는 500 ms마다 푸시됩니다. |
| SubscribePriceLimit | instrument의 최대 매수 가격과 최소 매도 가격을 검색합니다. 데이터는 limit에 변경이 있을 때 5초마다 푸시되며, limit에 변경이 없을 때는 푸시되지 않습니다. |
| SubscribeOrderBook |
order book 데이터를 검색합니다. 400개 깊이 레벨에는 books, 5개 깊이 레벨에는 book5, 틱 단위 1개 깊이 레벨에는 bbo-tbt, 틱 단위 50개 깊이 레벨에는 books50-l2-tbt, 틱 단위 400개 깊이 레벨에는 books-l2-tbt를 사용하십시오.
|
| SubscribeOptionSummary | 모든 OPTION 계약의 상세 가격 정보를 검색합니다. 데이터는 한 번에 푸시됩니다. |
| SubscribeFundingRate | 펀딩 비율을 검색합니다. 데이터는 30초에서 90초 내에 푸시됩니다. |
| SubscribeIndexCandlestick | 인덱스의 캔들스틱 데이터를 검색합니다. 데이터는 500ms마다 푸시됩니다. |
| SubscribeIndexTicker | index ticker 데이터를 검색합니다 |
| SubscribeStatus | 시스템 유지 보수 상태를 가져오고 시스템 유지 보수 상태가 변경될 때 푸시합니다. 첫 구독: "최신 변경 데이터 푸시"; 상태 변경이 있을 때마다 변경된 내용을 푸시 |
| SubscribePublicStructureBlockTrades | 블록 거래가 있을 때마다 데이터가 푸시됩니다. |
| SubscribeBlockTickers | 지난 24시간 동안의 최신 블록 거래량을 검색합니다. 데이터는 거래 실행 이벤트에 의해 트리거될 때 푸시됩니다. 또한 구독 단위에 따라 5분 간격으로도 푸시됩니다. |
| SubscribeAllTrades | 모든 거래 데이터를 검색합니다. 거래가 있을 때마다 데이터가 푸시됩니다. |
| SubscribeLiquidationOrders | 청산 주문을 검색합니다. 청산 주문이 있을 때 데이터가 푸시됩니다. |
| SubscribeADLWarning | ADL 경고 데이터를 검색합니다. 자동 디레버리징 위험이 증가하면 데이터가 푸시됩니다. |
| SubscribeEconomicCalendar | 경제 캘린더 이벤트를 검색합니다. 경제 이벤트에 업데이트가 있을 때 데이터가 푸시됩니다. |
| SubscribePublicBlockTrades | public block trades를 검색합니다. block trade가 있을 때마다 데이터가 푸시됩니다. |
| SubscribeOptionTrades | 옵션 거래 데이터를 검색합니다. 옵션 거래가 있을 때마다 데이터가 푸시됩니다. |
| SubscribeCallAuctionDetails | call auction 세부 정보를 검색합니다. call auction 정보에 업데이트가 있으면 데이터가 푸시됩니다. |
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
oOKX.SubscribeInstruments(okxitFutures);
end;
account 채널, order 채널, position 채널 등을 포함하며 로그인이 필요합니다.
다음 Private 채널을 구독할 수 있습니다:
| 메서드 | 설명 |
| SubscribeAccount | 계정 정보를 검색합니다. 주문 등록, 주문 취소, 거래 실행 등의 이벤트에 의해 트리거될 때 데이터가 푸시됩니다. 또한 구독 세분성에 따라 정기적인 간격으로 푸시됩니다. |
| SubscribePositions | 포지션 정보를 검색합니다. 구독 단위에 따라 초기 스냅샷이 푸시됩니다. 주문 넣기/취소와 같은 이벤트에 의해 트리거될 때 데이터가 푸시되며, 구독 단위에 따라 정기적인 간격으로도 푸시됩니다. |
| SubscribeBalanceAndPosition | 계정 잔액과 포지션 정보를 검색합니다. 체결된 주문, 펀딩 이체와 같은 이벤트에 의해 트리거될 때 데이터가 푸시됩니다. |
| SubscribeOrders | 주문 정보를 검색합니다. 처음 구독할 때는 데이터가 푸시되지 않습니다. 주문 배치/취소와 같은 이벤트에 의해 트리거될 때만 데이터가 푸시됩니다. |
| SubscribeOrdersAlgo | algo 주문(trigger 주문, oco 주문, conditional 주문 포함)을 검색합니다. 데이터는 처음 구독할 때 푸시되지 않습니다. 데이터는 주문 배치/취소와 같은 이벤트에 의해 트리거될 때만 푸시됩니다. |
| SubscribeAdvanceAlgo |
고급 algo 주문(Iceberg 주문, TWAP 주문, Trailing 주문 포함)을 검색합니다. 처음 구독 시 데이터가 푸시됩니다. 주문 넣기/취소와 같은 이벤트로 트리거될 때 데이터가 푸시됩니다. |
| SubscribePositionRisk | 이 푸시 채널은 위험 경고로만 사용되며, 전략적 거래를 위한 위험 판단으로 권장되지 않습니다 시장이 격렬하게 움직이지 않는 경우, 이 메시지가 푸시되는 동시에 포지션이 청산되었을 가능성이 있습니다. |
| SubscribeAccountGreeks | 계정 greeks 정보를 검색합니다. 데이터는 계정의 포지션 증가/감소 또는 현금 잔액과 같은 이벤트에 의해 트리거될 때 푸시되며, 구독 세분성에 따라 정기적인 간격으로도 푸시됩니다. |
| SubscribeRfqs | Rfq를 검색합니다. |
| SubscribeQuotes |
Quotes를 검색합니다. |
| SubscribePrivateStructureBlockTrades | 구조화된 블록 거래를 검색합니다. |
| SubscribeSpotGridAlgoOrders | spot grid algo 주문을 검색합니다. 처음 구독할 때 데이터가 푸시됩니다. 주문 배치/취소와 같은 이벤트에 의해 트리거될 때 데이터가 푸시됩니다. |
| SubscribeContactGridAlgoOrders | 계약 grid algo 주문을 검색합니다. 데이터는 처음 구독할 때 푸시됩니다. 데이터는 주문 배치/취소와 같은 이벤트에 의해 트리거될 때 푸시됩니다. |
| SubscribeGridPositions | grid 포지션을 검색합니다. 데이터는 처음 구독할 때 푸시됩니다. 데이터는 주문 배치/취소와 같은 이벤트에 의해 트리거될 때 푸시됩니다. |
| SubscribeGridSubOrders | grid 하위 주문을 검색합니다. 데이터는 처음 구독할 때 푸시됩니다. 데이터는 주문 배치와 같은 이벤트에 의해 트리거될 때 푸시됩니다. |
| SubscribeFills | 체결된 주문 데이터를 검색합니다. 주문이 체결되면 데이터가 푸시됩니다. |
| SubscribeDepositInfo | 입금 정보를 검색합니다. 입금 상태 업데이트가 있을 때 데이터가 푸시됩니다. |
| SubscribeWithdrawalInfo | 출금 정보를 검색합니다. 데이터는 출금 상태 업데이트가 있을 때 푸시됩니다. |
oClient := TsgcWebSocketClient.Create(nil);
oOKX := TsgcWSAPI_OKX.Create(nil);
oOKX.Client := oClient;
oOKX.OKX.ApiKey := 'alsdjk23kandfnasbdfdkjhsdf';
oOKX.OKX.ApiSecret := 'aldskjfk3jkadknfajndsjfj23j';
oOKX.OKX.Passphrase := 'secret_passphrase';
oClient.Active := True;
procedure OnOKXConnect(Sender: TObject; aMessage, aCode, aRawMessage: string);
begin
oOKX.SubscribeOrders(okxitFutures, 'BTC-USD', 'BTC-USD-200329');
end;
WebSocket Trade는 Authentication을 요구합니다.
충분한 자금이 있는 경우에만 주문할 수 있습니다. 아래에서 요청 매개변수가 있는 표를 확인하십시오:
| 매개변수 | Type | 필수 | 설명 |
|---|---|---|---|
| id | String | Yes | 메시지의 고유 식별자입니다 클라이언트가 제공합니다. 해당 요청을 식별하기 위해 응답 메시지에서 반환됩니다. 대소문자를 구분하는 영숫자, 모두 숫자 또는 모두 문자로 최대 32자까지의 조합입니다. |
| > instId | String | Yes | Instrument ID, 예: BTC-USD-190927-5000-C |
| > tdMode | String | Yes | Trade mode Margin mode isolated crossNon-Margin mode cash |
| > ccy | String | No | 마진 통화Single-currency margin 의 cross MARGIN 주문에만 적용됩니다. |
| > clOrdId | String | No | 클라이언트가 제공한 주문 ID 대소문자를 구분하는 영숫자, 모두 숫자 또는 모두 문자의 조합으로 최대 32자. |
| > tag | String | No | 주문 태그 대소문자를 구분하는 영숫자, 모두 숫자 또는 모두 문자의 조합으로 최대 16자. |
| > side | String | Yes | Order side, buy sell |
| > posSide | String | 선택적 | Position side 기본값은 net 모드에서 net 입니다long/short 모드에서는 필수이며, long 또는 short만 될 수 있습니다.FUTURES/SWAP 에만 적용됩니다. |
| > ordType | String | Yes | 주문 유형market: market orderlimit: limit orderpost_only: Post-only orderfok: Fill-or-kill orderioc: Immediate-or-cancel orderoptimal_limit_ioc :immediate-or-cancel order가 있는 Market order
|
| > sz | String | Yes | 매수 또는 매도할 수량입니다. |
| > px | String | 선택적 | Pricelimit,post_only,fok,ioc 주문에만 적용됩니다. |
| > reduceOnly | Boolean | No | 포지션을 축소만 할지 여부, true false, 기본값은 false입니다.MARGIN 주문 및 net 모드의 FUTURES/SWAP 주문에만 적용됩니다Single-currency margin 및 Multi-currency margin에만 적용됩니다 |
| > tgtCcy | String | No | 수량 유형base_ccy: Base currency ,quote_ccy: Quote currencyMarket 주문으로 거래되는 SPOT 에만 적용됩니다기본값은 매수의 경우 quote_ccy, 매도의 경우 base_ccy 입니다 |
| > banAmend | Boolean | No | 현물 주문 수정을 금지할지 여부입니다(true 또는 false, 기본값은 false). banAmend가 true일 때 잔액이 충분하지 않으면 주문 발주에 실패합니다. SPOT 시장가 주문에만 적용됩니다. |
주문 발주 예제
충분한 자금이 있는 경우에만 주문할 수 있습니다.
// Place Martket Order
TsgcWSAPI_OKX1.PlaceMarketOrder(okxosBuy, 'ETH-BTC', 1);
// Place Limit Order
TsgcWSAPI_OKX1.PlaceLimitOrder(okxosBuy, 'ETH-BTC', 1, 0.25);
주문 취소 예제
미완료 주문을 취소합니다
TsgcWSAPI_OKX1.CancelOrder('ETH-BTC', '457589362405027840');
Amend Order
미완료 주문을 수정합니다.
TsgcWSAPI_OKX1.AmendOrder('ETH-BTC', '457589362405027840', '', 2);
WebSocket Trade API는 또한 여러 주문을 한 번에 발주, 취소 및 수정하는 배치 작업을 지원합니다. 이러한 작업에는 Authentication이 필요합니다.
| 메서드 | 설명 |
| BatchPlaceOrders | 단일 요청으로 여러 주문을 실행합니다. 한 번에 최대 20개의 주문을 실행할 수 있습니다. |
| BatchCancelOrders | 단일 요청으로 여러 주문을 취소합니다. 한 번에 최대 20개의 주문을 취소할 수 있습니다. |
| BatchAmendOrders | 단일 요청으로 여러 개의 미완료 주문을 수정합니다. 한 번에 최대 20개의 주문을 수정할 수 있습니다. |
| MassCancelOrders | 특정 상품 유형에 대한 모든 대기 중인 주문을 일괄 취소합니다. |