API MEXC

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.

 

Configuração do componente

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;

 

Properties

 

Eventos

 

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;

 

Métodos de assinatura WebSocket

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.

 

Canais públicos

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.

 

Canais privados

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.

 

 

Endpoints REST públicos

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.

 

Endpoints REST privados

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.