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.
- Defina
OKX.IsPrivate := True antes de conectar se precisar de canais privados ou operações de trading. Os canais públicos funcionam sem autenticação.
- Use
OKX.IsDemo := True para testar no ambiente demo da OKX antes de ir ao ar. O modo demo usa credenciais de API separadas geradas especificamente para a plataforma demo.
- O método
SubscribeOrders aceita um parâmetro de tipo de instrumento (ex.: okxitSpot, okxitFutures, okxitSwap, okxitOption) para filtrar atualizações de ordens por tipo de negociação.
- Os métodos de conveniência
PlaceMarketOrder e PlaceLimitOrder aceitam um parâmetro de lado da ordem (ex.: okxosBuy, okxosSell), ID do instrumento, tamanho e (para ordens limitadas) preço.
- O método
AmendOrder permite modificar o preço ou tamanho de uma ordem ativa sem cancelar e recolocá-la, reduzindo a latência e evitando a perda de posição na fila.
- A OKX aplica limites de taxa nas mensagens WebSocket. Consulte a documentação oficial da OKX para os limites atuais de assinaturas e requisições de trading por segundo.
- As assinaturas WebSocket são persistentes durante o ciclo de vida da conexão. Se a conexão cair, você precisará reassinar após reconectar.