MEXC es un exchange de criptomonedas global que expone datos de mercado y de cuenta en tiempo real mediante conexiones WebSocket seguras.
La API Spot WebSocket sigue las especificaciones publicadas en la documentación de Market Streams y User Data Streams. Los canales de mercado se entregan como tramas Protocol Buffers mientras que los flujos privados usan JSON. El componente TsgcWSAPI_MEXC gestiona el ciclo de vida de la conexión, la autenticación y el mantenimiento de la clave de escucha para que las aplicaciones puedan centrarse en procesar los datos enviados.
Además de la transmisión por WebSockets, el conjunto de herramientas también expone la API HTTP Spot completa. El componente TsgcHTTP_API_MEXC_Spot (unidad sgcHTTP_API_MEXC) encapsula cada endpoint REST oficial para que las aplicaciones puedan consultar datos de mercado o realizar operaciones con solicitudes firmadas.
El endpoint base de WebSocket es wss://wbs-api.mexc.com/ws. Cuando MEXCUserDataStreams.UserStream está habilitado y se proporciona una clave API válida, el componente solicita automáticamente una clave de escucha y la añade a la URL de conexión.
Coloque un componente TsgcWebSocketClient y un componente TsgcWSAPI_MEXC en el formulario (o créelos en código), asigne la instancia del cliente al componente API y active el cliente para iniciar la sesión.
var
WSClient: TsgcWebSocketClient;
MEXC: TsgcWSAPI_MEXC;
begin
WSClient := TsgcWebSocketClient.Create(nil);
MEXC := TsgcWSAPI_MEXC.Create(nil);
MEXC.Client := WSClient;
MEXC.MEXCAPI.ApiKey := 'YOUR_KEY';
MEXC.MEXCAPI.ApiSecret := 'YOUR_SECRET';
MEXC.MEXCUserDataStreams.UserStream := True;
if WSClient.Connect then
MEXC.SubscribeTrade('BTCUSDT');
end;
El siguiente ejemplo muestra cómo decodificar un frame de operación:
procedure TMainForm.MEXCMarketStream(Sender: TObject;
const aMessage: TsgcMEXCSpotProtoMessage; const aStream: TMemoryStream);
var
Deal: TsgcMEXCDealItem;
begin
if aMessage.MessageType = sgcmxspmtTrade then
begin
Deal := TsgcMEXCTradeStream(aMessage.Trade).PublicDeals.DealsList[0];
Memo1.Lines.Add(Format('Trade %s x %s', [Deal.Quantity, Deal.Price]));
end;
end;
El componente expone asistentes para cada canal Spot público. Invoque el método Subscribe* para comenzar a recibir datos en tiempo real y el correspondiente UnSubscribe* para detenerlo.
| Método | Parámetros | Descripción |
| SubscribeTrade | Symbol, Interval (ms) | Ejecuciones de operaciones agregadas entregadas como Protobuf publicdeals. |
| SubscribeKline | Symbol, Interval | Actualizaciones de velas para intervalos configurables (de 1 minuto a 1 mes). |
| SubscribeDiffDepth | Symbol, Interval (ms) | Deltas incrementales del libro de órdenes para el mantenimiento del libro local. |
| SubscribeBookDepth | Symbol, Levels | Instantáneas periódicas del libro de órdenes limitadas con la profundidad solicitada (predeterminado: 5). |
| SubscribeBookTicker | Symbol, Interval (ms) | Actualizaciones del mejor precio de compra/venta para un único par de trading. |
| SubscribeBookTickerBatch | Indicador UTC | Actualizaciones de ticker de libro agregado para múltiples símbolos. |
| SubscribeMiniTickers | Indicador UTC | Estadísticas del mini ticker de 24h en ventana deslizante para todos los instrumentos activos. |
| SubscribeMiniTicker | Símbolo, indicador UTC | Mini ticker para un símbolo individual. |
Los temas privados requieren una clave API válida. El componente se suscribe usando la clave de escucha activa y la renueva periódicamente.
| Método | Descripción |
| SubscribeAccountUpdate | Cambios en el saldo de la cuenta y en las posiciones. |
| SubscribeAccountDeals | Informes de ejecución de órdenes completadas. |
| SubscribeAccountOrders | Actualizaciones del ciclo de vida de la orden (nueva, cancelada, rechazada, etc.). |
Utilice los métodos UnSubscribe* correspondientes para terminar un flujo. El componente envía automáticamente comandos PING y valida el PONG devuelto para supervisar la conectividad.
Métodos REST disponibles públicamente.
| Método | Descripción |
| Ping | Comprobación de conectividad que llama a /api/v3/ping y devuelve True cuando el exchange responde con un objeto vacío. |
| GetServerTime | Recupera la marca de tiempo actual del exchange desde /api/v3/time. |
| GetExchangeInformation | Devuelve las reglas de negociación y metadatos de símbolo desde /api/v3/exchangeInfo. |
| GetOrderBook | Descarga instantáneas del libro de órdenes desde /api/v3/depth; establezca el parámetro opcional limit para controlar el número de niveles (predeterminado: 100). |
| GetTrades | Recupera las operaciones públicas recientes desde /api/v3/trades con un limit opcional (predeterminado 100). |
| GetHistoricalTrades | Proporciona datos históricos de operaciones con filtros opcionales de limit y fromId. |
| GetAggregateTrades | Devuelve operaciones comprimidas/agregadas a través de /api/v3/aggTrades con soporte para filtros opcionales de limit, fromId, startTime y endTime. |
| GetKlines | Descarga velas desde /api/v3/klines con soporte para filtros de rango de tiempo y límite. |
| GetAveragePrice | Devuelve el precio promedio ponderado actual desde /api/v3/avgPrice. |
| Get24hrTicker | Recupera las estadísticas del ticker de las últimas 24 horas para uno o todos los símbolos mediante /api/v3/ticker/24hr. |
| GetPriceTicker | Obtiene el precio más reciente usando /api/v3/ticker/price; pase un símbolo vacío para recuperar los precios de todos los pares de negociación. |
| GetBookTicker | Obtiene las mejores cotizaciones de compra/venta desde /api/v3/ticker/bookTicker con soporte para solicitudes de símbolo único o de todo el mercado. |
Los endpoints privados requieren claves de API válidas y una cadena de consulta firmada. El componente añade automáticamente la marca de tiempo, recvWindow y la firma HMAC.
| Método | Descripción |
| GetAccountInformation | Devuelve balances y permisos de /api/v3/account. |
| GetOpenOrders | Lista las órdenes abiertas actuales (opcionalmente filtradas por símbolo). |
| GetAllOrders | Recupera órdenes históricas con filtros opcionales de tiempo y límite. |
| GetOrder | Consulta el estado de una orden específica proporcionando orderId u origClientOrderId. |
| GetMyTrades | Lista las ejecuciones de operaciones privadas con los filtros opcionales limit, fromId, startTime y endTime. |
| NewOrder | Coloca una orden en vivo en /api/v3/order (mercado, límite, stop, etc.) con parámetros opcionales timeInForce, quantity, quoteOrderQty, price, newClientOrderId, stopPrice, icebergQty y parámetros adicionales. |
| TestNewOrder | Envía una solicitud de solo validación a /api/v3/order/test que acepta el mismo conjunto de parámetros que NewOrder. |
| CancelOrder | Cancela una orden específica en /api/v3/order usando orderId o origClientOrderId. |
| CancelAllOrders | Cancela en bloque todos los pedidos abiertos para un símbolo a través de /api/v3/openOrders. |
| GetSubAccounts | Lista las subcuentas gestionadas (/api/v3/sub-account/list). |
| GetSubAccountAssets | Devuelve los saldos de una subcuenta específica. |
| TransferSubAccount | Transfiere activos entre subcuentas a través de /api/v3/sub-account/transfer; proporcione el importe y, opcionalmente, el tipo de transferencia. |
| GetDepositAddress | Solicita direcciones de depósito con un filtro opcional de red. |
| GetDepositHistory | Obtiene registros de depósitos con filtros opcionales de coin, status, startTime y endTime. |
| GetWithdrawHistory | Devuelve el historial de retiros filtrado por coin, status y rango de tiempo opcional. |
| Retirar | Envía una solicitud de retiro a través de /api/v3/capital/withdraw/apply incluyendo los campos obligatorios coin, address y amount, más los opcionales network, addressTag, withdrawOrderId y parámetros adicionales. |
| BatchOrders | Envíe órdenes en lote para múltiples símbolos en una sola solicitud. |
| GetTradeFee | Obtiene la tasa de comisión de operaciones para un símbolo específico. |
| GetDepositHistory | Obtiene registros de depósitos con filtros opcionales de coin, status, startTime y endTime. |
| CancelWithdraw | Cancelar una solicitud de retirada pendiente por ID de retirada. |
| CreateInternalTransfer | Transferir activos entre cuentas de forma interna. |
| GetTransferHistory | Obtener el historial de transferencias internas entre cuentas. |