Los canales WebSocket se dividen en dos categorías: canales públicos y privados.
Puede configurar las siguientes propiedades en la propiedad OKX.
Cuando el cliente se conecta correctamente a los servidores de OKX, se activa el evento OnOKXConnect. Si se produce algún error al intentar conectarse, se activará el evento OnOKXError con los detalles del error.
Después de que se active el evento OnOKXConnect, puede empezar a enviar y recibir mensajes de los 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;
El feed de WebSocket proporciona actualizaciones de datos de mercado en tiempo real para órdenes y operaciones. El feed de WebSocket tiene algunos canales públicos como ticker, operaciones...
Puede suscribirse a los siguientes canales públicos:
| Método | Descripción |
| SubscribeInstruments | La lista completa de instrumentos se enviará por primera vez tras la suscripción. Posteriormente, los instrumentos se enviarán si hay algún cambio en el estado del instrumento (como la entrega de FUTURES, el ejercicio de OPTION, la cotización de nuevos contratos o pares de trading, la suspensión de la negociación, etc.). |
| SubscribeTicker | Recuperar el último precio negociado, precio de compra, precio de venta y volumen de negociación de 24 horas de los instrumentos. Los datos se enviarán cada 100 ms. |
| SubscribeOpenInterest | Recupera el interés abierto. Los datos se enviarán cada 3 segundos. |
| SubscribeCandlestick | Recupera los datos de velas de un instrumento. La frecuencia de envío es el intervalo más rápido: 500 ms por envío. |
| SubscribeTrades | Recupera los datos de operaciones recientes. Los datos se enviarán cuando se produzca una operación. |
| SubscribeEstimatedPrices |
Recuperar el precio estimado de entrega/ejercicio de contratos FUTURES y OPTION. Solo se enviará el precio estimado de entrega/ejercicio una hora antes de la entrega/ejercicio, y se enviará únicamente si hay algún cambio de precio. |
| SubscribeMarkPrice | Obtiene el precio de referencia. Los datos se enviarán cada 200 ms cuando el precio de referencia cambie, y cada 10 segundos cuando el precio de referencia no cambie. |
| SubscribeMarkPriceCandlestick | Recupera los datos de velas del precio de marca. Los datos se enviarán cada 500 ms. |
| SubscribePriceLimit | Recupere el precio máximo de compra y el precio mínimo de venta del instrumento. Los datos se enviarán cada 5 segundos cuando haya cambios en los límites, y no se enviarán cuando no haya cambios en los límites. |
| SubscribeOrderBook |
Recupere datos del libro de órdenes. Utilice books para 400 niveles de profundidad, book5 para 5 niveles de profundidad, bbo-tbt tick a tick con 1 nivel de profundidad, books50-l2-tbt tick a tick con 50 niveles de profundidad, y books-l2-tbt para tick a tick con 400 niveles de profundidad.
|
| SubscribeOptionSummary | Recuperar información de precios detallada de todos los contratos OPTION. Los datos se enviarán de una vez. |
| SubscribeFundingRate | Recuperar tasa de financiación. Los datos se enviarán en un intervalo de 30 a 90 segundos. |
| SubscribeIndexCandlestick | Recupera los datos de velas del índice. Los datos se enviarán cada 500 ms. |
| SubscribeIndexTicker | Recuperar datos de tickers de índice |
| SubscribeStatus | Obtener el estado del mantenimiento del sistema y enviar notificación cuando cambie el estado del mantenimiento del sistema. Primera suscripción: "Enviar los últimos datos de cambio"; cada vez que haya un cambio de estado, enviar el contenido modificado |
| SubscribePublicStructureBlockTrades | Los datos se enviarán siempre que haya una operación en bloque. |
| SubscribeBlockTickers | Recupera el volumen de negociación en bloque más reciente de las últimas 24 horas. Los datos se enviarán cuando se active el evento de ejecución de una transacción. Además, también se enviará en intervalos de 5 minutos según la granularidad de la suscripción. |
| SubscribeAllTrades | Recuperar todos los datos de operaciones. Los datos se enviarán cada vez que se realice una operación. |
| CancelOrderBatch | Recuperar órdenes de liquidación. Los datos se enviarán cuando haya una orden de liquidación. |
| SubscribeADLWarning | Recuperar datos de advertencia ADL. Los datos se enviarán cuando aumente el riesgo de desapalancamiento automático. |
| SubscribeEconomicCalendar | Recupera los eventos del calendario económico. Los datos se enviarán cuando haya actualizaciones en los eventos económicos. |
| SubscribePublicBlockTrades | Recuperar operaciones de bloque públicas. Los datos se enviarán cada vez que haya una operación de bloque. |
| SubscribeOptionTrades | Recupera datos de operaciones de opciones. Los datos se enviarán cada vez que se produzca una operación de opciones. |
| SubscribeCallAuctionDetails | Recuperar detalles de la subasta de llamadas. Los datos se enviarán cuando haya actualizaciones en la información de la subasta de llamadas. |
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;
Incluyendo el canal de cuenta, el canal de órdenes y el canal de posiciones, etc. — requieren inicio de sesión.
Puede suscribirse a los siguientes canales privados:
| Método | Descripción |
| SubscribeAccount | Recupera información de la cuenta. Los datos se enviarán cuando se activen eventos como colocar una orden, cancelar una orden, ejecución de transacción, etc. También se enviarán a intervalos regulares según la granularidad de la suscripción. |
| SubscribePositions | Recupera información de posición. Se enviará una instantánea inicial según la granularidad de la suscripción. Los datos se enviarán cuando se activen eventos como colocar/cancelar órdenes, y también se enviarán en intervalos regulares según la granularidad de la suscripción. |
| SubscribeBalanceAndPosition | Recupera el saldo de la cuenta e información de posición. Los datos se enviarán cuando se activen por eventos como órdenes ejecutadas o transferencias de fondos. |
| SubscribeOrders | Recuperar información de órdenes. Los datos no se enviarán al suscribirse por primera vez. Solo se enviarán cuando sean activados por eventos como la colocación o cancelación de una orden. |
| SubscribeOrdersAlgo | Recuperar órdenes algorítmicas (incluye órdenes de activación, órdenes OCO y órdenes condicionales). Los datos no se enviarán al suscribirse por primera vez. Los datos solo se enviarán cuando sean activados por eventos como la colocación o cancelación de órdenes. |
| SubscribeAdvanceAlgo |
Recuperar órdenes algorítmicas avanzadas (incluidas órdenes Iceberg, TWAP y de seguimiento). Los datos se enviarán al suscribirse por primera vez. Los datos se enviarán cuando se activen por eventos como la colocación o cancelación de una orden. |
| SubscribePositionRisk | Este canal de envío solo se utiliza como advertencia de riesgo y no se recomienda como criterio de decisión de riesgo para operaciones estratégicas. En caso de que el mercado no se mueva de forma violenta, puede darse la posibilidad de que la posición haya sido liquidada al mismo tiempo que se envía este mensaje. |
| SubscribeAccountGreeks | Recupera información de griegas de la cuenta. Los datos se enviarán cuando se activen eventos como incremento/decremento de posiciones o saldo en efectivo en la cuenta, y también se enviarán a intervalos regulares según la granularidad de la suscripción. |
| SubscribeRfqs | Recuperar las Rfqs. |
| SubscribeQuotes |
Recuperar las cotizaciones. |
| SubscribePrivateStructureBlockTrades | Recuperar operaciones de bloques de estructura. |
| SubscribeSpotGridAlgoOrders | Recuperar órdenes de algoritmo de cuadrícula spot. Los datos se enviarán cuando se suscriba por primera vez. Los datos se enviarán cuando se activen por eventos como la colocación o cancelación de órdenes. |
| SubscribeContactGridAlgoOrders | Recuperar órdenes de algoritmo de cuadrícula de contratos. Los datos se enviarán cuando se suscriba por primera vez. Los datos se enviarán cuando se activen por eventos como la colocación o cancelación de órdenes. |
| SubscribeGridPositions | Recuperar posiciones de cuadrícula. Los datos se enviarán al suscribirse por primera vez. Los datos se enviarán cuando sean activados por eventos como la colocación o cancelación de órdenes. |
| SubscribeGridSubOrders | Recuperar subórdenes de cuadrícula. Los datos se enviarán al suscribirse por primera vez. Los datos se enviarán cuando sean activados por eventos como la colocación de órdenes. |
| SubscribeFills | Recupera los datos de órdenes completadas. Los datos se enviarán cuando se complete una orden. |
| SubscribeDepositInfo | Recuperar información de depósito. Los datos se enviarán cuando haya una actualización del estado de un depósito. |
| SubscribeWithdrawalInfo | Recupera información sobre retiros. Los datos se enviarán cuando haya una actualización del estado de un retiro. |
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;
La operación WebSocket requiere autenticación.
Solo puede realizar una orden si dispone de fondos suficientes. A continuación encontrará una tabla con los parámetros de la solicitud:
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
| id | String | Sí | Identificador único del mensaje Proporcionado por el cliente. Se devolverá en el mensaje de respuesta para identificar la solicitud correspondiente. Una combinación de caracteres alfanuméricos que distingue mayúsculas de minúsculas, todos números o todas letras, de hasta 32 caracteres. |
| > instId | String | Sí | ID de instrumento, por ejemplo BTC-USD-190927-5000-C |
| > tdMode | String | Sí | Modo de operación Modo de margen isolated crossModo sin margen cash |
| > ccy | String | No | Moneda de margen Solo aplicable a órdenes cross MARGIN en Single-currency margin. |
| > clOrdId | String | No | ID de orden proporcionado por el cliente Una combinación de caracteres alfanuméricos que distingue mayúsculas de minúsculas, todos números o todas letras de hasta 32 caracteres. |
| > tag | String | No | Etiqueta de orden Una combinación de caracteres alfanuméricos sensibles a mayúsculas, todos números o todas letras de hasta 16 caracteres. |
| > lado | String | Sí | Lado de la orden, buy sell |
| > posSide | String | Opcional | Lado de la posición El valor predeterminado es net en el modo net Es obligatorio en el modo long/short y solo puede ser long o short.Solo aplicable a FUTURES/SWAP. |
| > ordType | String | Sí | Tipo de ordenmarket: orden de mercadolimit: orden limitadapost_only: orden solo publicaciónfok: orden Fill-or-Killioc: orden Immediate-or-Canceloptimal_limit_ioc :Orden de mercado con orden Immediate-or-Cancel
|
| > sz | String | Sí | Cantidad a comprar o vender. |
| > px | String | Opcional | Precio Solo aplicable a órdenes de tipo limit,post_only,fok,ioc. |
| > reduceOnly | Boolean | No | Si reducir solo la posición o no, true false, el valor predeterminado es false.Solo aplicable a órdenes MARGIN y órdenes FUTURES/SWAP en modo net Solo aplicable a Single-currency margin y Multi-currency margin |
| > tgtCcy | String | No | Tipo de cantidadbase_ccy: Divisa base, quote_ccy: Divisa de cotizaciónSolo aplicable a SPOT negociado con orden de mercadoEl valor predeterminado es quote_ccy para compra, base_ccy para venta
|
| > banAmend | Boolean | No | Si se prohíbe o no la modificación de órdenes spot, true o false; el valor predeterminado es false. Si banAmend es true, fallará al colocar órdenes cuando el saldo sea insuficiente. Solo aplicable a órdenes de mercado SPOT. |
Ejemplo de Colocación de Orden
Solo puede colocar una orden si dispone de fondos suficientes.
// Place Martket Order
TsgcWSAPI_OKX1.PlaceMarketOrder(okxosBuy, 'ETH-BTC', 1);
// Place Limit Order
TsgcWSAPI_OKX1.PlaceLimitOrder(okxosBuy, 'ETH-BTC', 1, 0.25);
Ejemplo de cancelación de orden
Cancela una orden incompleta.
TsgcWSAPI_OKX1.CancelOrder('ETH-BTC', '457589362405027840');
Modificar orden
Modificar una orden incompleta.
TsgcWSAPI_OKX1.AmendOrder('ETH-BTC', '457589362405027840', '', 2);
La API de negociación WebSocket también admite operaciones por lotes para colocar, cancelar y modificar múltiples órdenes a la vez. Estas operaciones requieren Autenticación.
| Método | Descripción |
| BatchPlaceOrders | Coloque múltiples órdenes en una sola solicitud. Se pueden colocar un máximo de 20 órdenes a la vez. |
| BatchCancelOrders | Cancela múltiples órdenes en una sola solicitud. Se pueden cancelar un máximo de 20 órdenes a la vez. |
| BatchAmendOrders | Modifica múltiples órdenes incompletas en una sola solicitud. Se pueden modificar un máximo de 20 órdenes a la vez. |
| MassCancelOrders | Cancela masivamente todas las órdenes pendientes de un tipo de instrumento específico. |