MEXC é um exchange global de criptomoedas que expõe dados de mercado e de conta em streaming sobre conexões WebSocket seguras.
A WebSocket Spot API segue as especificações publicadas na documentação Market Streams e User Data Streams. Os canais de mercado são entregues como frames Protocol Buffers, enquanto os streams privados utilizam JSON. O componente TsgcWSAPI_MEXC gerencia o ciclo de vida da conexão, a autenticação e a manutenção da listen key, de modo que as aplicações possam se concentrar no processamento dos dados enviados.
Além de streaming sobre WebSockets, o toolkit também expõe a Spot HTTP API completa. O componente TsgcHTTP_API_MEXC_Spot (unit sgcHTTP_API_MEXC) envolve cada endpoint REST oficial, de modo que as aplicações possam consultar dados de mercado ou negociar com requisições assinadas.
O endpoint WebSocket base é wss://wbs-api.mexc.com/ws. Quando MEXCUserDataStreams.UserStream está habilitado e uma chave de API válida é fornecida, o componente solicita automaticamente uma listen key e a anexa à URL de conexão.
Solte um componente TsgcWebSocketClient e um TsgcWSAPI_MEXC no formulário (ou crie-os em código), atribua a instância do cliente ao componente da API e ative o cliente para iniciar a sessão.
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;
O exemplo a seguir demonstra como decodificar um quadro de negociação:
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;
O componente expõe auxiliares para cada canal Spot público. Invoque o método Subscribe* para começar a transmitir dados e o correspondente UnSubscribe* para pará-lo.
| Method | Parâmetros | Descrição |
| SubscribeTrade | Symbol, Interval (ms) | Execuções de negociação agregadas entregues como Protobuf publicdeals. |
| SubscribeKline | Symbol, Interval | Atualizações de candlestick para intervalos configuráveis (1 minuto a 1 mês). |
| SubscribeDiffDepth | Symbol, Interval (ms) | Deltas incrementais de profundidade do order book para manutenção do book local. |
| SubscribeBookDepth | Symbol, Levels | Snapshots periódicos do livro de ordens limitadas com a profundidade solicitada (padrão 5). |
| SubscribeBookTicker | Symbol, Interval (ms) | Atualizações de melhor bid/ask para um único par de negociação. |
| SubscribeBookTickerBatch | flag UTC | Atualizações agregadas de book ticker para múltiplos símbolos. |
| SubscribeMiniTickers | flag UTC | Estatísticas do mini ticker móvel de 24h para todos os instrumentos ativos. |
| SubscribeMiniTicker | Symbol, flag UTC | Mini ticker para um único símbolo. |
Os tópicos privados exigem uma chave de API válida. O componente se inscreve usando a listen key ativa e a renova periodicamente.
| Method | Descrição |
| SubscribeAccountUpdate | Mudanças de saldo e posição da conta. |
| SubscribeAccountDeals | Relatórios de execução para ordens preenchidas. |
| SubscribeAccountOrders | Atualizações de ciclo de vida de ordens (new, cancelled, rejected, etc.). |
Utilize os métodos UnSubscribe* correspondentes para encerrar um stream. O componente envia automaticamente comandos PING e valida o PONG retornado para monitorar a conectividade.
Métodos REST disponíveis publicamente.
| Method | Descrição |
| Ping | Verificação de conectividade que chama /api/v3/ping e retorna True quando a exchange responde com um objeto vazio. |
| GetServerTime | Recupera o timestamp atual da exchange de /api/v3/time. |
| GetExchangeInformation | Retorna as regras de negociação e os metadados de símbolo de /api/v3/exchangeInfo. |
| GetOrderBook | Baixa snapshots do order book de /api/v3/depth; defina o parâmetro opcional limit para controlar o número de níveis (padrão 100). |
| GetTrades | Recupera negociações públicas recentes de /api/v3/trades com um limit opcional (padrão 100). |
| GetHistoricalTrades | Fornece dados históricos de negociação com filtros opcionais de limit e fromId. |
| GetAggregateTrades | Retorna negociações comprimidas/agregadas via /api/v3/aggTrades, suportando os filtros opcionais limit, fromId, startTime e endTime. |
| GetKlines | Baixa candlesticks de /api/v3/klines com suporte a filtros de intervalo de tempo e limite. |
| GetAveragePrice | Retorna o preço médio ponderado atual de /api/v3/avgPrice. |
| Get24hrTicker | Recupera as estatísticas do ticker de 24 horas para um ou todos os símbolos via /api/v3/ticker/24hr. |
| GetPriceTicker | Busca o preço mais recente utilizando /api/v3/ticker/price; passe um símbolo vazio para recuperar os preços de todos os pares de negociação. |
| GetBookTicker | Obtém as melhores cotações de bid/ask de /api/v3/ticker/bookTicker com suporte a requisições de símbolo único ou de toda a exchange. |
Os endpoints privados requerem API keys válidas e uma query string assinada. O componente anexa automaticamente o timestamp, o recvWindow e a assinatura HMAC.
| Method | Descrição |
| GetAccountInformation | Retorna saldos e permissões de /api/v3/account. |
| GetOpenOrders | Lista as ordens abertas atuais (opcionalmente filtradas por símbolo). |
| GetAllOrders | Recupera ordens históricas com filtros opcionais de tempo e limite. |
| GetOrder | Consulta o status de uma ordem específica fornecendo orderId ou origClientOrderId. |
| GetMyTrades | Lista execuções privadas de negociação com os filtros opcionais limit, fromId, startTime e endTime. |
| NewOrder | Coloca uma ordem ao vivo em /api/v3/order (market, limit, stop, etc.) com timeInForce, quantity, quoteOrderQty, price, newClientOrderId, stopPrice, icebergQty opcionais e parâmetros extras. |
| TestNewOrder | Envia uma requisição apenas de validação para /api/v3/order/test aceitando o mesmo conjunto de parâmetros de NewOrder. |
| CancelOrder | Cancela uma ordem específica em /api/v3/order utilizando orderId ou origClientOrderId. |
| CancelAllOrders | Cancela em massa todas as ordens abertas de um símbolo via /api/v3/openOrders. |
| GetSubAccounts | Lista as sub-contas gerenciadas (/api/v3/sub-account/list). |
| GetSubAccountAssets | Retorna os saldos de uma subconta específica. |
| TransferSubAccount | Transfere ativos entre subcontas por meio de /api/v3/sub-account/transfer; forneça o valor e, opcionalmente, o type da transferência. |
| GetDepositAddress | Solicita endereços de depósito com um filtro opcional de network. |
| GetDepositHistory | Busca registros de depósito com filtros opcionais coin, status, startTime e endTime. |
| GetWithdrawHistory | Retorna o histórico de saques filtrado por coin, status e intervalo de tempo opcional. |
| Withdraw | Submete uma requisição de saque via /api/v3/capital/withdraw/apply incluindo os obrigatórios coin, address e amount além dos opcionais network, addressTag, withdrawOrderId e parâmetros extras. |
| BatchOrders | Envia ordens em batch para múltiplos símbolos em uma única requisição. |
| GetTradeFee | Obtém a taxa de comissão de negociação para um símbolo específico. |
| GetDepositHistory | Busca registros de depósito com filtros opcionais coin, status, startTime e endTime. |
| CancelWithdraw | Cancelar uma requisição de saque pendente pelo ID do saque. |
| CreateInternalTransfer | Transferir ativos entre contas internamente. |
| GetTransferHistory | Obtém o histórico de transferências internas entre contas. |