Atualização da API OKX no sgcWebSockets

· Recursos
Integração da API WebSocket de Trading OKX em Delphi

O componente TsgcWSAPI_OKX fornece acesso Delphi abrangente à corretora OKX por meio de uma interface WebSocket unificada. Ele suporta streams públicos de dados de mercado, canais privados de conta e operações de trading direto, incluindo ordens a mercado e limitadas, tudo por meio de um único componente. Este guia detalha todos os métodos disponíveis, propriedades de configuração e inclui exemplos de código funcionais para você começar a negociar na OKX a partir do Delphi.

Sumário

Canais Públicos WebSocket

Os canais públicos transmitem dados de mercado para todos os clientes conectados sem exigir autenticação. Esses canais cobrem instrumentos, tickers, livros de ordens, trades, candlesticks, taxas de financiamento e muito mais. Cada método de assinatura tem um método de cancelamento correspondente.

Canais de Dados de Mercado

Método Descrição
SubscribeInstruments Inscreve-se em instrument updates (new listings, delistings, status changes).
SubscribeTicker Inscreve-se em real-time ticker data for a specific instrument.
SubscribeOpenInterest Inscreve-se em open interest updates for futures and perpetual contracts.
SubscribeCandlestick Inscreve-se em candlestick/kline data at the specified interval.
SubscribeTrades Inscreve-se em real-time trade execution data for a specific instrument.
SubscribeOrderBook Inscreve-se em order book updates with configurable depth.

Canais de Preço & Índice

Método Descrição
SubscribeEstimatedPrices Inscreve-se em estimated delivery/exercise price for options and futures.
SubscribeMarkPrice Inscreve-se em mark price updates used for margin and PnL calculations.
SubscribeMarkPriceCandlestick Inscreve-se em candlestick data based on the mark price.
SubscribePriceLimit Inscreve-se em price limit (price band) updates for an instrument.
SubscribeIndexCandlestick Inscreve-se em candlestick data based on the index price.
SubscribeIndexTicker Inscreve-se em index ticker updates for a given index.
SubscribeFundingRate Inscreve-se em funding rate updates for perpetual contracts.

Canais de Opções & Sistema

Método Descrição
SubscribeOptionSummary Inscreve-se em options summary data (greeks, volatility, open interest).
SubscribeStatus Inscreve-se em system status updates (maintenance, disruptions).
SubscribePublicStructureBlockTrades Inscreve-se em public structure block trade data.
SubscribeBlockTickers Inscreve-se em block trade ticker updates.
Nota: Cada método Subscribe listado acima possui um método UnSubscribe correspondente (ex.: UnSubscribeTicker) para parar de receber atualizações daquele canal.

Canais Privados WebSocket

Os canais privados exigem autenticação e entregam atualizações em tempo real sobre o estado da sua conta, posições, ordens e atividade de trading algorítmico. Defina OKX.IsPrivate := True e forneça credenciais de API válidas antes de assinar esses canais.

Canais de Conta & Posição

Método Descrição
SubscribeAccount Inscreve-se em account balance and equity updates in real time.
SubscribePositions Inscreve-se em position updates (open, close, size changes).
SubscribeBalanceAndPosition Inscreve-se em combined balance and position updates in a single stream.
SubscribePositionRisk Inscreve-se em position risk warning updates (liquidation proximity).
SubscribeAccountGreeks Inscreve-se em account-level greeks updates for options positions.

Canais de Ordem & Algo

Método Descrição
SubscribeOrders Inscreve-se em order status updates (placed, filled, cancelled, partially filled).
SubscribeOrdersAlgo Inscreve-se em algorithmic order updates (trigger, TP/SL, trailing stop).
SubscribeAdvanceAlgo Inscreve-se em advanced algorithmic order updates (iceberg, TWAP).

Canais RFQ & Block Trade

Método Descrição
SubscribeRfqs Inscreve-se em request-for-quote (RFQ) updates for block trading.
SubscribeQuotes Inscreve-se em quote updates in response to RFQs.
SubscribePrivateStructureBlockTrades Inscreve-se em private structure block trade updates.

Canais de Grid Trading

Método Descrição
SubscribeSpotGridAlgoOrders Inscreve-se em spot grid algo order updates.
SubscribeContactGridAlgoOrders Inscreve-se em contract grid algo order updates.
SubscribeGridPositions Inscreve-se em grid trading position updates.
SubscribeGridSubOrders Inscreve-se em individual sub-order updates within a grid strategy.

Operações de Trading WebSocket

A OKX suporta colocação e gerenciamento de ordens diretamente pela conexão WebSocket, o que oferece menor latência em comparação com chamadas à API REST. Esses métodos exigem autenticação.

Método Descrição
PlaceOrder Coloca uma nova ordem com controle total sobre todos os parâmetros da ordem.
PlaceMarketOrder Coloca uma ordem a mercado que é executada imediatamente pelo melhor preço disponível.
PlaceLimitOrder Coloca uma ordem limitada a um preço especificado, executada somente quando o mercado atingir esse preço.
CancelOrder Cancela uma ordem existente pelo seu ID de ordem.
AmendOrder Modifica uma ordem existente (altera preço ou tamanho sem cancelar e recolocar).
Nota: O trading via WebSocket oferece latência significativamente menor do que a colocação de ordens via REST. A OKX processa ordens WebSocket com maior prioridade, tornando este o método preferido para estratégias sensíveis à latência.

Exemplo de código

O exemplo a seguir demonstra como criar e configurar o componente TsgcWSAPI_OKX, autenticar com a API, assinar dados de ticker, monitorar ordens e colocar tanto ordens a mercado quanto ordens limitadas diretamente pela conexão 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;

Tratando Eventos WebSocket

Atribua um handler de evento para processar as mensagens WebSocket recebidas. O evento fornece o nome do canal e o payload JSON para cada atualização.

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;

Usando o Modo de Trading Demo

A OKX fornece um ambiente de trading demo para testes. Habilite-o definindo OKX.IsDemo := True antes de conectar. O modo demo conecta a um endpoint separado com saldos simulados, permitindo testar sua lógica de trading sem arriscar fundos reais.

// Enable demo trading mode
oOKX.OKX.IsDemo := True;
oOKX.OKX.IsPrivate := True;
oClient.Active := True;

Configuração e notas

Propriedades de Configuração

Toda a configuração é acessada pela propriedade OKX do componente.

Propriedade Tipo Descrição
OKX.ApiKey String Sua chave de API OKX. Gere-a na página de Gerenciamento de API da OKX.
OKX.ApiSecret String Seu segredo de API OKX. Mantenha este valor seguro e nunca o exponha em código do lado do cliente.
OKX.Passphrase String A passphrase que você definiu ao criar a chave de API. Obrigatória para todas as requisições autenticadas.
OKX.IsDemo Boolean Quando definido como True, conecta ao ambiente de trading demo da OKX com fundos simulados. Padrão: False.
OKX.IsPrivate Boolean Quando definido como True, habilita autenticação na conexão WebSocket. Necessário para canais privados e operações de trading. Padrão: False.

Notas importantes

Segurança: Nunca insira diretamente sua chave de API, segredo ou passphrase no código de produção. Use um arquivo de configuração seguro ou variável de ambiente para armazenar as credenciais.