API OKX

OKX

 

APIs suportadas

 

Properties

Os canais WebSocket são divididos em duas categorias: canais públicos e privados.

 

 

Você pode configurar as seguintes propriedades na propriedade OKX.

 

 

Conexão

Quando o cliente conecta com sucesso aos servidores OKX, o evento OnOKXConnect é disparado. Se houver algum erro ao tentar conectar, o evento OnOKXError será disparado com os detalhes do erro.

Depois que o evento OnOKXConnect é disparado, então você pode começar a enviar e receber mensagens dos servidores OKX.

 


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;

Canais Públicos

O feed do websocket fornece atualizações de dados de mercado em tempo real para ordens e negociações. O feed do websocket tem alguns canais públicos como ticker, trades...

 

Você pode assinar os seguintes canais públicos:

 

Method Descrição
SubscribeInstruments A lista completa de instrumentos será enviada pela primeira vez após a assinatura. Posteriormente, os instrumentos serão enviados se houver qualquer mudança no estado do instrumento (como entrega de FUTURES, exercício de OPTION, listagem de novos contratos / pares de negociação, suspensão de negociação, etc.).
SubscribeTicker Recupera o último preço negociado, preço de bid, preço de ask e volume de negociação de 24 horas dos instrumentos. Os dados serão enviados a cada 100 ms.
SubscribeOpenInterest Recupera o open interest. Os dados serão enviados a cada 3 segundos.
SubscribeCandlestick Recupera os dados de candlesticks de um instrumento. A frequência de push é o intervalo mais rápido, enviando os dados a cada 500ms.
SubscribeTrades Recupera os dados de trades recentes. Os dados serão enviados sempre que houver um trade.
SubscribeEstimatedPrices

Recupera o preço estimado de entrega/exercício de contratos FUTURES e OPTION.

Apenas o preço estimado de entrega/exercício será enviado uma hora antes da entrega/exercício, e será enviado se houver qualquer mudança de preço.

SubscribeMarkPrice Recupera o mark price. Os dados serão enviados a cada 200 ms quando o mark price mudar, e serão enviados a cada 10 segundos quando o mark price não mudar.
SubscribeMarkPriceCandlestick Recupera os dados de candlesticks do mark price. Os dados serão enviados a cada 500 ms.
SubscribePriceLimit Recupera o preço máximo de compra e o preço mínimo de venda do instrumento. Os dados serão enviados a cada 5 segundos quando houver alterações nos limites, e não serão enviados quando não houver alterações no limite.
SubscribeOrderBook

Recupera dados do livro de ofertas.

Use books para 400 níveis de profundidade, book5 para 5 níveis de profundidade, bbo-tbt tick a tick com 1 nível de profundidade, books50-l2-tbt tick a tick com 50 níveis de profundidade, e books-l2-tbt para tick a tick com 400 níveis de profundidade.

  • books: 400 níveis de profundidade serão enviados no snapshot completo inicial. Dados incrementais serão enviados a cada 100 ms quando houver mudança no order book.
  • books5: 5 níveis de profundidade serão enviados a cada vez. Os dados serão enviados a cada 100 ms quando houver mudança no order book.
  • bbo-tbt: 1 nível de profundidade será enviado a cada vez. Os dados serão enviados a cada 10 ms quando houver mudança no order book.
  • books-l2-tbt: 400 níveis de profundidade serão enviados no snapshot completo inicial. Dados incrementais serão enviados a cada 10 ms quando houver mudança no order book.
  • books50-l2-tbt: 50 níveis de profundidade serão enviados no snapshot completo inicial. Dados incrementais serão enviados a cada 10 ms quando houver mudança no order book. Se asks ou bids for um array vazio, significa que há mudanças na profundidade de 400, em vez de 50. Se você mantém os dados do order book localmente, ignore asks e bids vazios.
SubscribeOptionSummary Recupera informações detalhadas de preços de todos os contratos OPTION. Os dados serão enviados (push) de uma só vez.
SubscribeFundingRate Recupera a taxa de funding. Os dados serão enviados em 30s a 90s.
SubscribeIndexCandlestick Recuperar os dados de candlesticks do índice. Os dados serão enviados a cada 500 ms.
SubscribeIndexTicker Recupera os dados de tickers de índice
SubscribeStatus Obtém o status da manutenção do sistema e envia quando o status da manutenção do sistema muda. Primeira assinatura: "Envia os dados de alteração mais recentes"; toda vez que há uma mudança de estado, envia o conteúdo alterado
SubscribePublicStructureBlockTrades Os dados serão enviados sempre que houver uma negociação em bloco (block trade).
SubscribeBlockTickers Recupera o volume de negociação em bloco mais recente nas últimas 24 horas. Os dados serão enviados quando acionados por um evento de execução de transação. Além disso, também serão enviados em intervalos de 5 minutos de acordo com a granularidade da assinatura.
SubscribeAllTrades Recuperar todos os dados de negociações. Os dados serão enviados sempre que houver uma negociação.
SubscribeLiquidationOrders Recuperar ordens de liquidação. Os dados serão enviados quando houver uma ordem de liquidação.
SubscribeADLWarning Recupera dados de aviso de ADL. Os dados serão enviados (push) quando o risco de auto-deleveraging aumentar.
SubscribeEconomicCalendar Recuperar os eventos do calendário econômico. Os dados serão enviados quando houver atualizações nos eventos econômicos.
SubscribePublicBlockTrades Recuperar block trades públicos. Os dados serão enviados sempre que houver um block trade.
SubscribeOptionTrades Recupera dados de negociações de opções. Os dados serão enviados sempre que houver uma negociação de opção.
SubscribeCallAuctionDetails Recupera detalhes do leilão de chamada. Os dados serão enviados quando houver atualizações nas informações do leilão de chamada.

 


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;

Private Channels

Incluindo account channel, order channel e position channel, etc -- requerem login.

 

Você pode se inscrever nos seguintes canais Privados:

 

Method Descrição
SubscribeAccount Recupera informações da conta. Os dados serão enviados quando acionados por eventos como colocação de ordem, cancelamento de ordem, execução de transação etc. Também serão enviados em intervalos regulares de acordo com a granularidade da inscrição.
SubscribePositions Recupera informações de posição. O snapshot inicial será enviado de acordo com a granularidade da assinatura. Os dados serão enviados quando disparados por eventos como colocação/cancelamento de ordem, e também serão enviados em intervalo regular de acordo com a granularidade da assinatura.
SubscribeBalanceAndPosition Recupera informações de saldo da conta e de posição. Os dados serão enviados quando disparados por eventos como ordem preenchida, transferência de funding.
SubscribeOrders Recupera informações da ordem. Os dados não serão enviados na primeira assinatura. Os dados só serão enviados quando acionados por eventos como colocação/cancelamento de ordem.
SubscribeOrdersAlgo Recupera ordens algo (inclui trigger order, oco order, conditional order). Os dados não serão enviados quando inscritos pela primeira vez. Os dados só serão enviados quando acionados por eventos como colocação/cancelamento de ordem.
SubscribeAdvanceAlgo

Recupera ordens algo avançadas (incluindo ordem Iceberg, ordem TWAP, ordem Trailing). Os dados serão enviados quando a inscrição for feita pela primeira vez. Os dados serão enviados quando acionados por eventos como a colocação/cancelamento de ordem.

SubscribePositionRisk Este canal de push é utilizado apenas como aviso de risco e não é recomendado como julgamento de risco para negociação estratégica
No caso de o mercado não estar se movendo violentamente, pode haver a possibilidade de a posição ter sido liquidada no mesmo momento em que esta mensagem é enviada.
SubscribeAccountGreeks Recupera informações de greeks da conta. Os dados serão enviados quando acionados por eventos como aumento/diminuição de posições ou saldo de caixa na conta, e também serão enviados em intervalos regulares de acordo com a granularidade da assinatura.
SubscribeRfqs Recupera os Rfqs.
SubscribeQuotes

Recupera as Quotes.

SubscribePrivateStructureBlockTrades Recupera Block Trades de Estrutura.
SubscribeSpotGridAlgoOrders Recupera ordens de spot grid algo. Os dados serão enviados na primeira assinatura. Os dados serão enviados quando acionados por eventos como registro/cancelamento de ordem.
SubscribeContactGridAlgoOrders Recupera ordens de grid de contrato. Os dados serão enviados quando inscritos pela primeira vez. Os dados serão enviados quando acionados por eventos como colocação/cancelamento de ordem.
SubscribeGridPositions Recupera posições de grid. Os dados serão enviados quando inscritos pela primeira vez. Os dados serão enviados quando acionados por eventos como colocação/cancelamento de ordem.
SubscribeGridSubOrders Recupera sub-ordens de grid. Os dados serão enviados quando inscritos pela primeira vez. Os dados serão enviados quando acionados por eventos como colocação de ordem.
SubscribeFills Recupera dados de ordens preenchidas. Os dados serão enviados quando uma ordem for preenchida.
SubscribeDepositInfo Recupera informações de depósito. Os dados serão enviados quando houver uma atualização de status de depósito.
SubscribeWithdrawalInfo Recupera informações de saque. Os dados serão enviados quando houver uma atualização de status de saque.

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;

 

Trading

O WebSocket Trade requer Authentication.

 

Você só pode fazer uma ordem se tiver fundos suficientes. Veja abaixo uma tabela com os parâmetros da requisição:

 

Parameter Type Obrigatório Descrição
id String Sim Identificador único da mensagem
Fornecido pelo cliente. Será retornado na mensagem de resposta para identificar a requisição correspondente.
Uma combinação de caracteres alfanuméricos sensíveis a maiúsculas/minúsculas, todos números ou todas letras, com até 32 caracteres.
> instId String Sim Instrument ID, por exemplo BTC-USD-190927-5000-C
> tdMode String Sim Modo de negociação
Modo de margem isolated cross
Modo sem margem cash
> ccy String No Moeda da margem
Aplicável somente a cross MARGIN ordens em Single-currency margin.
> clOrdId String No ID de ordem fornecido pelo cliente
Uma combinação de caracteres alfanuméricos sensíveis a maiúsculas e minúsculas, todos números ou todas letras, de até 32 caracteres.
> tag String No Tag da ordem
Uma combinação de caracteres alfanuméricos sensíveis a maiúsculas e minúsculas, todos números ou todas letras, de até 16 caracteres.
> side String Sim Lado da ordem, buy sell
> posSide String Optional Lado da posição
O padrão é net no net modo
É obrigatório no modo long/short e só pode ser long ou short.
Aplicável apenas a FUTURES/SWAP.
> ordType String Sim Tipo de ordem
market: ordem a mercado
limit: ordem limitada
post_only: ordem Post-only
fok: ordem Fill-or-kill
ioc: ordem Immediate-or-cancel
optimal_limit_ioc :ordem a mercado com immediate-or-cancel
> sz String Sim Quantidade a comprar ou vender.
> px String Optional Price
Aplicável apenas a ordens limit,post_only,fok,ioc .
> reduceOnly Boolean No Se deve reduzir somente a posição ou não, true false, o padrão é false.
Aplicável somente a ordens MARGIN , e ordens FUTURES/SWAP em modo net
Aplicável somente a Single-currency margin e Multi-currency margin
> tgtCcy String No Tipo de quantidade
base_ccy: Moeda base ,quote_ccy: Moeda de cotação
Aplicável somente a SPOT negociado com ordem a Mercado
O padrão é quote_ccy para compra, base_ccy para venda
> banAmend Boolean No Se deve banir a modificação de ordens spot ou não, true ou false, o padrão é false.
Falhará ao colocar ordens se o saldo não for suficiente quando banAmend for true. Aplicável apenas a ordens SPOT market

 

 

Exemplo de Place Order

 

Você só pode colocar uma ordem se tiver fundos suficientes.


// Place Martket Order
TsgcWSAPI_OKX1.PlaceMarketOrder(okxosBuy, 'ETH-BTC', 1);
// Place Limit Order
TsgcWSAPI_OKX1.PlaceLimitOrder(okxosBuy, 'ETH-BTC', 1, 0.25);

 

Exemplo de Cancelamento de Ordem

 

Cancelar uma ordem incompleta


TsgcWSAPI_OKX1.CancelOrder('ETH-BTC', '457589362405027840');

 

Amend Order

 

Modifica uma ordem incompleta.


TsgcWSAPI_OKX1.AmendOrder('ETH-BTC', '457589362405027840', '', 2);

Operações de trade em batch

A WebSocket Trade API também suporta operações em lote para colocar, cancelar e modificar múltiplas ordens de uma vez. Essas operações exigem Authentication.

Method Descrição
BatchPlaceOrders Coloca várias ordens em uma única requisição. No máximo 20 ordens podem ser colocadas de uma vez.
BatchCancelOrders Cancela múltiplas ordens em uma única requisição. No máximo 20 ordens podem ser canceladas por vez.
BatchAmendOrders Alterar múltiplas ordens incompletas em uma única requisição. No máximo 20 ordens podem ser alteradas por vez.
MassCancelOrders Cancela em massa todas as ordens pendentes para um tipo de instrumento específico.