Actualización de la API de OKX en sgcWebSockets

· Características
Integración de la API de Trading WebSocket de OKX en Delphi

El componente TsgcWSAPI_OKX proporciona acceso completo desde Delphi al exchange OKX a través de una interfaz WebSocket unificada. Soporta streams públicos de market data, canales privados de cuenta y operaciones de trading directas, incluidas órdenes de mercado y limitadas, todo mediante un único componente. Esta guía detalla cada método disponible, las propiedades de configuración e incluye ejemplos de código funcionales para que empieces a operar en OKX desde Delphi.

Tabla de contenidos

Canales WebSocket públicos

Los canales públicos emiten market data a todos los clientes conectados sin requerir autenticación. Estos canales cubren instrumentos, tickers, order books, trades, velas, funding rates y más. Cada método de suscripción tiene su correspondiente método de cancelación de suscripción.

Canales de market data

Método Descripción
SubscribeInstruments Se suscribe a las actualizaciones de instrumentos (nuevos listados, deslistados, cambios de estado).
SubscribeTicker Se suscribe a los datos del ticker en tiempo real para un instrumento específico.
SubscribeOpenInterest Se suscribe a las actualizaciones de open interest para contratos de futuros y perpetuos.
SubscribeCandlestick Se suscribe a los datos de velas/kline en el intervalo especificado.
SubscribeTrades Se suscribe a los datos de ejecución de trades en tiempo real para un instrumento específico.
SubscribeOrderBook Se suscribe a las actualizaciones del order book con profundidad configurable.

Canales de precio e índice

Method Description
SubscribeEstimatedPrices Se suscribe al precio estimado de entrega/ejercicio para opciones y futuros.
SubscribeMarkPrice Se suscribe a las actualizaciones del mark price usado para los cálculos de margen y PnL.
SubscribeMarkPriceCandlestick Se suscribe a los datos de velas basados en el mark price.
SubscribePriceLimit Se suscribe a las actualizaciones del price limit (banda de precio) de un instrumento.
SubscribeIndexCandlestick Se suscribe a los datos de velas basados en el precio del índice.
SubscribeIndexTicker Se suscribe a las actualizaciones del ticker de índice para un índice dado.
SubscribeFundingRate Se suscribe a las actualizaciones de funding rate para contratos perpetuos.

Canales de opciones y de sistema

Method Description
SubscribeOptionSummary Se suscribe a los datos resumen de opciones (greeks, volatilidad, open interest).
SubscribeStatus Se suscribe a las actualizaciones de estado del sistema (mantenimiento, incidencias).
SubscribePublicStructureBlockTrades Se suscribe a los datos públicos de block trades estructurados.
SubscribeBlockTickers Se suscribe a las actualizaciones del ticker de block trades.
Nota: Cada método Subscribe listado arriba tiene su correspondiente UnSubscribe (p. ej., UnSubscribeTicker) para dejar de recibir actualizaciones de ese canal.

Canales WebSocket privados

Los canales privados requieren autenticación y entregan actualizaciones en tiempo real sobre el estado de tu cuenta, posiciones, órdenes y actividad de trading algorítmico. Establece OKX.IsPrivate := True y proporciona credenciales de API válidas antes de suscribirte a estos canales.

Canales de cuenta y posición

Method Description
SubscribeAccount Se suscribe a las actualizaciones de balance y equity de la cuenta en tiempo real.
SubscribePositions Se suscribe a las actualizaciones de posiciones (apertura, cierre, cambios de tamaño).
SubscribeBalanceAndPosition Se suscribe a las actualizaciones combinadas de balance y posición en un único stream.
SubscribePositionRisk Se suscribe a las actualizaciones de aviso de riesgo de posición (proximidad de liquidación).
SubscribeAccountGreeks Se suscribe a las actualizaciones de greeks a nivel de cuenta para posiciones de opciones.

Canales de órdenes y algo

Method Description
SubscribeOrders Se suscribe a las actualizaciones de estado de órdenes (colocadas, ejecutadas, canceladas, parcialmente ejecutadas).
SubscribeOrdersAlgo Se suscribe a las actualizaciones de órdenes algorítmicas (trigger, TP/SL, trailing stop).
SubscribeAdvanceAlgo Se suscribe a las actualizaciones de órdenes algorítmicas avanzadas (iceberg, TWAP).

Canales RFQ y de block trade

Method Description
SubscribeRfqs Se suscribe a las actualizaciones de request-for-quote (RFQ) para block trading.
SubscribeQuotes Se suscribe a las actualizaciones de cotizaciones en respuesta a RFQs.
SubscribePrivateStructureBlockTrades Se suscribe a las actualizaciones privadas de block trades estructurados.

Canales de Grid Trading

Method Description
SubscribeSpotGridAlgoOrders Se suscribe a las actualizaciones de órdenes algo de grid spot.
SubscribeContactGridAlgoOrders Se suscribe a las actualizaciones de órdenes algo de grid de contratos.
SubscribeGridPositions Se suscribe a las actualizaciones de posición de grid trading.
SubscribeGridSubOrders Se suscribe a las actualizaciones de sub-órdenes individuales dentro de una estrategia de grid.

Operaciones de trading por WebSocket

OKX soporta colocar y gestionar órdenes directamente sobre la conexión WebSocket, lo que proporciona menor latencia comparado con las llamadas a la API REST. Estos métodos requieren autenticación.

Method Description
PlaceOrder Coloca una nueva orden con control total sobre todos los parámetros de la orden.
PlaceMarketOrder Coloca una orden de mercado que se ejecuta inmediatamente al mejor precio disponible.
PlaceLimitOrder Coloca una orden limitada a un precio especificado, ejecutada solo cuando el mercado alcanza ese precio.
CancelOrder Cancela una orden existente por su order ID.
AmendOrder Modifica una orden existente (cambia precio o tamaño sin cancelar y reemplazar).
Nota: el trading basado en WebSocket proporciona una latencia significativamente menor que la colocación de órdenes basada en REST. OKX procesa las órdenes por WebSocket con mayor prioridad, lo que lo convierte en el método preferido para estrategias sensibles a la latencia.

Ejemplo de código

El siguiente ejemplo demuestra cómo crear y configurar el componente TsgcWSAPI_OKX, autenticarse con la API, suscribirse a los datos del ticker, monitorizar órdenes y colocar órdenes tanto de mercado como limitadas directamente sobre la conexión 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;

Gestionar eventos WebSocket

Asigna un manejador de eventos para procesar los mensajes WebSocket entrantes. El evento proporciona el nombre del canal y el payload JSON de cada actualización.

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;

Usar el modo Demo Trading

OKX proporciona un entorno de demo trading para pruebas. Actívalo estableciendo OKX.IsDemo := True antes de conectar. El modo demo conecta a un endpoint separado con saldos simulados, lo que te permite probar tu lógica de trading sin arriesgar fondos reales.

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

Configuración y notas

Propiedades de configuración

Toda la configuración se accede a través de la propiedad OKX del componente.

Propiedad Tipo Descripción
OKX.ApiKey String Tu API key de OKX. Genérala desde la página OKX API Management.
OKX.ApiSecret String Tu API secret de OKX. Mantén este valor seguro y no lo expongas nunca en código del lado del cliente.
OKX.Passphrase String La passphrase que estableciste al crear la API key. Necesaria para todas las peticiones autenticadas.
OKX.IsDemo Boolean Cuando se establece a True, conecta al entorno demo trading de OKX con fondos simulados. Por defecto es False.
OKX.IsPrivate Boolean Cuando se establece a True, habilita la autenticación en la conexión WebSocket. Necesaria para canales privados y operaciones de trading. Por defecto es False.

Notas importantes

Seguridad: nunca hardcodees tu API key, secret o passphrase directamente en código de producción. Usa un archivo de configuración seguro o una variable de entorno para almacenar las credenciales.