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
- Primeros pasos
- Métodos WebSocket públicos
- Métodos WebSocket privados (autenticados)
- Ejemplo de código
- Eventos y callbacks
- Configuración y notas
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.
