Actualización de la API CEX en sgcWebSockets

· Características
Integración de la API WebSocket de CEX.IO en Delphi

CEX.IO es un exchange de criptomonedas consolidado que ofrece datos de mercado en tiempo real y capacidades de trading mediante su API WebSocket. El componente TsgcWSAPI_Cex proporciona una interfaz Delphi nativa para conectar con CEX.IO, permitiendo a los desarrolladores suscribirse a actualizaciones de ticker en vivo, gestionar order books, colocar y cancelar órdenes y gestionar posiciones de cuenta — todo sobre una conexión WebSocket persistente.

Índice de contenidos

Visión general

La API WebSocket de CEX.IO proporciona dos categorías de funcionalidad: canales públicos que envían datos de mercado en streaming sin autenticación, y métodos privados que requieren autenticación con API key para trading y gestión de cuenta. El componente TsgcWSAPI_Cex envuelve ambas categorías, dándote un único componente Delphi para gestionarlo todo, desde feeds de precios en vivo hasta ejecución de órdenes.

Primeros pasos

Para conectarte a CEX.IO, coloca un TsgcWebSocketClient y un TsgcWSAPI_Cex en tu formulario o créalos por código. Asigna el cliente al componente API, configura tus credenciales y activa la conexión.

oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
Nota: los métodos públicos como las suscripciones a ticker no requieren credenciales API. Solo necesitas establecer ApiKey y ApiSecret si tienes intención de usar métodos privados (autenticados) como colocar órdenes o consultar balances.

Métodos WebSocket públicos

Los métodos públicos te permiten recibir datos de mercado en tiempo real sin autenticación. Son ideales para construir dashboards, herramientas de gráficos o sistemas de alertas de precio.

Método Descripción
SubscribeTickers Subscribe to real-time ticker updates for a currency pair (e.g., BTC/USD).
SubscribeChart Subscribe to chart/candle data for a given trading pair.
SubscribePair Subscribe to updates for a specific trading pair.
UnSubscribePair Unsubscribe from a previously subscribed trading pair.
SubscribeOrderBook Subscribe to order book snapshots and incremental updates for a pair.
UnSubscribeOrderBook Unsubscribe from order book updates.

Suscribirse a tickers

El método SubscribeTickers abre un stream en vivo de datos de precios para un par de divisas. El primer parámetro es la divisa base y el segundo la divisa cotizada.

// Subscribe to BTC/USD ticker updates
oCex.SubscribeTickers('BTC', 'USD');

Trabajar con el order book

Las suscripciones al order book entregan tanto el snapshot inicial como las actualizaciones incrementales posteriores. Usa SubscribeOrderBook para empezar a recibir datos y UnSubscribeOrderBook cuando ya no lo necesites.

// Subscribe to the BTC/USD order book
oCex.SubscribeOrderBook('BTC', 'USD');
// Later, unsubscribe when no longer needed
oCex.UnSubscribeOrderBook('BTC', 'USD');

Métodos WebSocket privados (autenticados)

Los métodos privados requieren autenticación con tu API key y secret de CEX.IO. El componente gestiona el handshake de autenticación automáticamente, pero debes llamar a Authenticate antes de invocar cualquier método privado.

Método Descripción
Authenticate Authenticate the WebSocket session using your API key and secret.
GetTicker Retrieve the current ticker for a specific currency pair.
GetBalance Retrieve the account balance across all currencies.
Ping Send a keepalive ping to maintain the WebSocket connection.
GetOpenOrders Retrieve all currently open orders on the account.
PlaceOrder Place a new buy or sell order with specified amount and price.
CancelReplaceOrder Cancel an existing order and replace it with a new one atomically.
GetOrderRequest Retrieve details of a specific order by its identifier.
CancelOrderRequest Cancel a specific order by its identifier.
GetArchivedOrders Retrieve historical (completed/cancelled) orders.
OpenPosition Open a new margin trading position.
GetPosition Retrieve details of a specific open position.
GetOpenPositions Retrieve all currently open margin positions.
ClosePosition Close an existing margin trading position.

Ejemplo de código

El siguiente ejemplo muestra un workflow completo: conectar con CEX.IO, suscribirse a un ticker, colocar una orden de compra y obtener el balance de la cuenta.

oClient := TsgcWebSocketClient.Create(nil);
oCex := TsgcWSAPI_Cex.Create(nil);
oCex.Client := oClient;
oCex.Cex.ApiKey := 'your_api_key';
oCex.Cex.ApiSecret := 'your_api_secret';
oClient.Active := True;
// Subscribe to ticker
oCex.SubscribeTickers('BTC', 'USD');
// Place an order
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Get balance
oCex.GetBalance;

Colocar órdenes

El método PlaceOrder acepta la divisa base, divisa cotizada, cantidad, precio y tipo de orden. El parámetro de tipo usa los valores de enumeración ctBuy o ctSell.

// Place a buy order: 0.01 BTC at $30,000
oCex.PlaceOrder('BTC', 'USD', 0.01, 30000, ctBuy);
// Place a sell order: 0.05 ETH at $2,000
oCex.PlaceOrder('ETH', 'USD', 0.05, 2000, ctSell);

Gestionar posiciones

CEX.IO soporta trading con margen mediante métodos de gestión de posiciones. Puedes abrir, consultar y cerrar posiciones directamente vía la conexión WebSocket.

// Retrieve all open positions
oCex.GetOpenPositions;
// Close a specific position by ID
oCex.ClosePosition(positionId);

Eventos y callbacks

El componente TsgcWSAPI_Cex dispara eventos cuando se reciben datos del exchange. Asigna manejadores para procesar mensajes entrantes como actualizaciones de ticker, confirmaciones de órdenes e información de balance.

Evento Disparado cuando
OnCexMessage Any message is received from the CEX.IO WebSocket server.
OnCexConnect The WebSocket connection to CEX.IO is established.
OnCexDisconnect The WebSocket connection is closed.
OnCexError An error response is received from the exchange.

Configuración y notas

Credenciales API

Obtén tu API key y secret desde la configuración de cuenta de CEX.IO. Guarda las credenciales de forma segura y nunca las codifiques en producción. Considera cargarlas desde un archivo de configuración cifrado o variables de entorno.

Gestión de la conexión

La conexión WebSocket la gestiona el componente TsgcWebSocketClient. Establece Active := True para conectar y Active := False para desconectar. El componente soporta reconexión automática si se configura mediante las propiedades de reconexión del cliente.

Flujo de autenticación

La autenticación debe completarse antes de llamar a cualquier método privado. Llama a Authenticate tras establecer la conexión o gestiónala dentro del evento OnCexConnect. El componente genera automáticamente la firma HMAC necesaria a partir de tu API key y secret.

Keepalive

Usa el método Ping periódicamente para mantener viva la sesión autenticada. CEX.IO puede desconectar sesiones inactivas tras un periodo de timeout.

Consejo: al suscribirte a varios pares, cada suscripción es independiente. Puedes suscribirte a BTC/USD, ETH/USD y otros pares simultáneamente en la misma conexión.