Actualización de la API de MEXC en sgcWebSockets

· Características
Integración de la API spot y de futuros de MEXC en Delphi

MEXC es un exchange global de criptomonedas que admite trading spot y contratos de futuros perpetuos sobre cientos de pares de tokens. Los desarrolladores Delphi pueden integrarse con MEXC mediante dos componentes dedicados: TsgcWSAPI_MEXC para el mercado Spot y TsgcWSAPI_MEXC_Futures para el mercado de Futuros. Cada componente proporciona tanto suscripciones WebSocket para datos en tiempo real como una interfaz REST para consultas bajo demanda y gestión de órdenes. Este artículo detalla todos los métodos disponibles en ambos mercados.

Índice

Visión general de arquitectura

MEXC ofrece superficies de API separadas para sus mercados Spot y de Futuros. En la librería sgcWebSockets esto se refleja en dos componentes distintos:

Ambos componentes siguen el mismo patrón: asigna un TsgcWebSocketClient, configura las credenciales de la API, activa el cliente para las suscripciones WebSocket y utiliza REST_API para las llamadas HTTP síncronas.

API WebSocket Spot

La API WebSocket de Spot ofrece datos de mercado en tiempo real a través de canales públicos y actualizaciones de cuenta a través de canales privados. Cada suscripción tiene su correspondiente método de cancelación.

Canales públicos

Suscribirse Cancelar suscripción Descripción
SubscribeTrade UnSubscribeTrade Ejecuciones de trade en tiempo real para un símbolo.
SubscribeKline UnSubscribeKline Actualizaciones de velas/klines en vivo para un símbolo y un intervalo.
SubscribeDiffDepth UnSubscribeDiffDepth Actualizaciones incrementales de la profundidad del order book (diff stream).
SubscribeBookDepth UnSubscribeBookDepth Snapshots completos de la profundidad del order book a un nivel dado.
SubscribeBookTicker UnSubscribeBookTicker Mejor precio y cantidad de bid/ask para un símbolo concreto.
SubscribeBookTickerBatch UnSubscribeBookTickerBatch Mejores precios de bid/ask para todos los símbolos en un único stream.
SubscribeMiniTickers UnSubscribeMiniTickers Datos resumidos de ticker (precio, volumen) para todos los símbolos.
SubscribeMiniTicker UnSubscribeMiniTicker Datos resumidos de ticker para un símbolo concreto.

Canales privados

Los canales privados requieren autenticación y entregan actualizaciones en tiempo real sobre la actividad de tu cuenta. Activa el user data stream mediante la propiedad MEXCUserDataStreams.UserStream.

Suscribirse Cancelar suscripción Descripción
SubscribeAccountUpdate UnSubscribeAccountUpdate Actualizaciones del balance y de las posiciones de la cuenta cuando se producen cambios.
SubscribeAccountDeals UnSubscribeAccountDeals Notificaciones en tiempo real cuando se ejecutan tus órdenes (trade executions).
SubscribeAccountOrders UnSubscribeAccountOrders Cambios en el estado de las órdenes (creada, parcialmente ejecutada, ejecutada, cancelada).

API REST Spot

Se accede a la API REST de Spot a través de oMEXC.REST_API (de tipo TsgcHTTP_API_MEXC_Spot). Los endpoints públicos no requieren autenticación; los privados sí requieren una API key y un secret válidos.

Endpoints públicos

Método Descripción
Ping Comprueba la conectividad con el servidor de la API de MEXC.
GetServerTime Devuelve la hora actual del servidor de MEXC.
GetDefaultSymbols Devuelve la lista de símbolos de trading por defecto.
GetExchangeInformation Devuelve las reglas de trading del exchange y la información de los símbolos (filtros, precisión, estado).
GetOrderBook Devuelve el order book (bids y asks) de un símbolo a una profundidad dada.
GetTrades Devuelve los trades públicos recientes para un símbolo.
GetAggregateTrades Devuelve registros de trades agregados/comprimidos.
GetKlines Devuelve datos históricos de klines/velas para un símbolo y un intervalo.
GetAveragePrice Devuelve el precio medio actual de un símbolo.
Get24hrTicker Devuelve estadísticas de variación de precio en ventana móvil de 24 horas.
GetPriceTicker Devuelve el último precio para uno o todos los símbolos.
GetBookTicker Devuelve el mejor precio y cantidad de bid/ask del order book.

Endpoints privados

Método Descripción
NewOrder Crea una nueva orden spot (market, limit u otros tipos admitidos).
TestNewOrder Valida una nueva orden sin llegar a crearla (dry run).
CancelOrder Cancela una orden abierta concreta por su order ID.
CancelAllOrders Cancela todas las órdenes abiertas para un símbolo.
GetOrder Devuelve el estado y los detalles de una orden concreta.
GetOpenOrders Devuelve todas las órdenes actualmente abiertas (sin ejecutar).
GetAllOrders Devuelve todas las órdenes (abiertas, ejecutadas, canceladas) dentro de un rango de tiempo.
GetAccountInformation Devuelve los balances y permisos de la cuenta.
GetMyTrades Devuelve tu historial de trades para un símbolo.
GetSubAccounts Devuelve la lista de subcuentas asociadas a la cuenta principal.
GetDepositAddress Devuelve la dirección de depósito para una moneda y red concretas.
GetWithdrawHistory Devuelve el historial de retiradas.
Withdraw Inicia una retirada hacia una dirección externa.
GetCapitalConfig Devuelve la configuración de capital (redes admitidas, importes mín./máx. de retirada, comisiones).

API WebSocket de Futuros

La API WebSocket de Futuros ofrece datos en tiempo real específicos de los contratos de futuros perpetuos. Todos los canales son públicos y no requieren autenticación. Cada suscripción cuenta con su correspondiente método de cancelación.

Suscribirse Cancelar suscripción Descripción
SubscribeDeal UnSubscribeDeal Ejecuciones de trade/deal de futuros en tiempo real.
SubscribeTickers UnSubscribeTickers Datos de ticker para todos los contratos de futuros.
SubscribeTicker UnSubscribeTicker Datos de ticker para un contrato de futuros concreto.
SubscribeDepth UnSubscribeDepth Actualizaciones incrementales de la profundidad del order book para futuros.
SubscribeDepthFull UnSubscribeDepthFull Snapshots completos de la profundidad del order book para futuros.
SubscribeKline UnSubscribeKline Actualizaciones de velas/klines en vivo para contratos de futuros.
SubscribeFundingRate UnSubscribeFundingRate Actualizaciones en tiempo real del funding rate para contratos perpetuos.
SubscribeIndexPrice UnSubscribeIndexPrice Actualizaciones en tiempo real del precio de índice.
SubscribeFairPrice UnSubscribeFairPrice Actualizaciones en tiempo real del precio fair/mark utilizadas para los cálculos de liquidación.

API REST de Futuros

Se accede a la API REST de Futuros a través de oMEXCFut.REST_API (de tipo TsgcHTTP_API_MEXC_Futures). Cubre datos de mercado, gestión de cuentas, control de posiciones y operaciones sobre órdenes.

Endpoints públicos

Método Descripción
GetPing Comprueba la conectividad con el servidor de la API de MEXC Futures.
GetServerTime Devuelve la hora actual del servidor de futuros.
GetContracts Devuelve una lista de todos los contratos de futuros disponibles y sus especificaciones.
GetDepth Devuelve la profundidad del order book para un contrato de futuros.
GetDeals Devuelve el historial reciente de trades/deals públicos para un contrato de futuros.
GetKlines Devuelve datos históricos de klines/velas para un contrato de futuros.
GetIndexPrice Devuelve el precio de índice actual para un contrato.
GetFairPrice Devuelve el precio fair/mark actual para un contrato.
GetFundingRate Devuelve el funding rate actual y previsto para un contrato perpetuo.

Endpoints privados

Método Descripción
GetAccountAssets Devuelve los balances de activos y la información de margen de la cuenta de futuros.
GetPositionList Devuelve todas las posiciones de futuros abiertas con su tamaño, precio de entrada y PnL.
SetPositionLeverage Establece el multiplicador de apalancamiento para un contrato de futuros concreto.
PlaceOrder Crea una nueva orden de futuros (market, limit u otros tipos admitidos).
CancelOrder Cancela una orden de futuros abierta concreta.
CancelAllOrders Cancela todas las órdenes de futuros abiertas para un contrato.
GetOpenOrders Devuelve todas las órdenes de futuros actualmente abiertas.
GetOrderHistory Devuelve el historial de órdenes de futuros (ejecutadas, canceladas, etc.).
GetFundingHistory Devuelve tu historial de pagos de comisiones de funding.

Primeros pasos — Ejemplos de código

Ejemplo de mercado Spot

El siguiente ejemplo se conecta al WebSocket Spot de MEXC, se suscribe a trades en tiempo real, consulta la información del exchange vía REST y crea una orden de compra a mercado.

var
  oClient: TsgcWebSocketClient;
  oMEXC: TsgcWSAPI_MEXC;
begin
  // Create the WebSocket client
  oClient := TsgcWebSocketClient.Create(nil);
  // Create the MEXC Spot API component
  oMEXC := TsgcWSAPI_MEXC.Create(nil);
  oMEXC.Client := oClient;
  // Configure API credentials
  oMEXC.MEXCAPI.ApiKey := 'your_api_key';
  oMEXC.MEXCAPI.ApiSecret := 'your_api_secret';
  // Connect to the WebSocket
  oClient.Active := True;
  // WebSocket: Subscribe to real-time trades for BTCUSDT
  oMEXC.SubscribeTrade('BTCUSDT');
  // REST: Get exchange information
  ShowMessage(oMEXC.REST_API.GetExchangeInformation);
  // REST: Place a market buy order for 0.001 BTC
  ShowMessage(oMEXC.REST_API.NewOrder('BTCUSDT', 'BUY', 'MARKET', '', 0.001));
end;

Ejemplo de mercado de Futuros

Este ejemplo se conecta al WebSocket de Futuros de MEXC, se suscribe a un ticker de futuros y consulta los contratos disponibles vía REST.

var
  oClientFut: TsgcWebSocketClient;
  oMEXCFut: TsgcWSAPI_MEXC_Futures;
begin
  // Create the WebSocket client for futures
  oClientFut := TsgcWebSocketClient.Create(nil);
  // Create the MEXC Futures API component
  oMEXCFut := TsgcWSAPI_MEXC_Futures.Create(nil);
  oMEXCFut.Client := oClientFut;
  // Configure API credentials
  oMEXCFut.MEXCFuturesAPI.ApiKey := 'your_api_key';
  oMEXCFut.MEXCFuturesAPI.ApiSecret := 'your_api_secret';
  // Connect to the WebSocket
  oClientFut.Active := True;
  // WebSocket: Subscribe to futures ticker for BTC_USDT
  oMEXCFut.SubscribeTicker('BTC_USDT');
  // REST: Get all available futures contracts
  ShowMessage(oMEXCFut.REST_API.GetContracts);
end;
Nota: Spot y Futuros utilizan conexiones WebSocket y componentes API independientes. Necesitas una instancia distinta de TsgcWebSocketClient para cada uno.

Referencia de configuración

Configuración Spot

Propiedad Tipo Descripción
MEXCAPI.ApiKey String Tu API key de MEXC para las peticiones spot autenticadas.
MEXCAPI.ApiSecret String Tu API secret de MEXC para firmar las peticiones.
MEXCUserDataStreams.UserStream Boolean Establécelo a True para activar el user data stream privado con eventos de cuenta, deals y órdenes.

Configuración de Futuros

Propiedad Tipo Descripción
MEXCFuturesAPI.ApiKey String Tu API key de MEXC para las peticiones autenticadas de futuros.
MEXCFuturesAPI.ApiSecret String Tu API secret de MEXC para firmar las peticiones de futuros.

Consejos y notas

Componentes separados para Spot y Futuros

MEXC trata Spot y Futuros como mercados totalmente independientes, con endpoints de API distintos, convenios de nomenclatura de símbolos diferentes (por ejemplo, BTCUSDT para spot frente a BTC_USDT para futuros) y ámbitos de autenticación diferentes. Utiliza siempre el componente adecuado para tu mercado objetivo.

User Data Streams

Para recibir eventos privados de cuenta en el WebSocket Spot (actualizaciones de cuenta, deals, cambios de órdenes), debes establecer MEXCUserDataStreams.UserStream := True antes de activar el cliente. Esto le indica al componente que solicite una listen key y establezca automáticamente el stream privado.

Pruebas de órdenes

Utiliza el método TestNewOrder de la API REST Spot para validar los parámetros de una orden sin llegar a crearla. Es útil para comprobar que tus parámetros de símbolo, side, type y quantity tienen el formato correcto antes de comprometer fondos reales.

Convenios de nomenclatura de símbolos

Presta atención a los distintos formatos de símbolo en cada mercado. Spot utiliza pares concatenados como BTCUSDT, mientras que Futuros usa pares separados por guion bajo como BTC_USDT. Usar el formato incorrecto provoca errores de tipo "symbol not found".

Límites de tasa

MEXC aplica límites de tasa tanto en sus APIs REST como WebSocket. Los endpoints REST suelen permitir un número fijo de peticiones por minuto. Si excedes el límite, recibirás un código de estado 429. Implementa una lógica adecuada de backoff o utiliza suscripciones WebSocket para los datos que cambien con frecuencia.

Consejo: Para monitorización de alta frecuencia, utiliza preferentemente suscripciones WebSocket en lugar de hacer polling sobre endpoints REST. Las suscripciones entregan datos en tiempo real con menor latencia y no cuentan dentro de los límites de tasa REST.