Os canais WebSocket são divididos em duas categorias: canais públicos e privados.
Você pode configurar as seguintes propriedades na propriedade OKX.
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;
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.
|
| 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;
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;
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 crossModo 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 ordemmarket: ordem a mercadolimit: ordem limitadapost_only: ordem Post-onlyfok: ordem Fill-or-killioc: ordem Immediate-or-canceloptimal_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 quantidadebase_ccy: Moeda base ,quote_ccy: Moeda de cotaçãoAplicável somente a SPOT negociado com ordem a MercadoO 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);
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. |