MEXC è un exchange di criptovalute globale che espone dati di mercato e di account in streaming tramite connessioni WebSocket sicure.
L'API Spot WebSocket segue le specifiche pubblicate nella documentazione Market Streams e User Data Streams. I canali di mercato vengono consegnati come frame Protocol Buffers mentre i flussi privati usano JSON. Il componente TsgcWSAPI_MEXC gestisce il ciclo di vita della connessione, l'autenticazione e la manutenzione della chiave di ascolto in modo che le applicazioni possano concentrarsi sull'elaborazione dei dati inviati.
Oltre allo streaming tramite WebSocket, il toolkit espone anche l'API HTTP Spot completa. Il componente TsgcHTTP_API_MEXC_Spot (unità sgcHTTP_API_MEXC) incapsula ogni endpoint REST ufficiale in modo che le applicazioni possano interrogare i dati di mercato o operare con richieste firmate.
L'endpoint WebSocket di base è wss://wbs-api.mexc.com/ws. Quando MEXCUserDataStreams.UserStream è abilitato e viene fornita una chiave API valida, il componente richiede automaticamente una chiave di ascolto e la aggiunge all'URL di connessione.
Inserire un componente TsgcWebSocketClient e un componente TsgcWSAPI_MEXC nel form (o crearli nel codice), assegnare l'istanza client al componente API e attivare il client per avviare la sessione.
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;
L'esempio seguente mostra come decodificare un frame di trade:
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;
Il componente espone helper per ogni canale Spot pubblico. Richiamare il metodo Subscribe* per avviare lo streaming dei dati e il corrispondente UnSubscribe* per interromperlo.
| Metodo | Parametri | Descrizione |
| SubscribeTrade | Symbol, Interval (ms) | Esecuzioni di scambi aggregati distribuite come Protobuf publicdeals. |
| SubscribeKline | Symbol, Interval | Aggiornamenti candlestick per intervalli configurabili (da 1 minuto a 1 mese). |
| SubscribeDiffDepth | Symbol, Interval (ms) | Delta di profondità incrementale del book ordini per la gestione del book locale. |
| SubscribeBookDepth | Symbol, Levels | Istantanee periodiche del libro degli ordini limite con la profondità richiesta (predefinita 5). |
| SubscribeBookTicker | Symbol, Interval (ms) | Aggiornamenti migliore offerta/domanda per una singola coppia di trading. |
| SubscribeBookTickerBatch | flag UTC | Aggiornamenti aggregati del book ticker per più simboli. |
| SubscribeMiniTickers | flag UTC | Statistiche mini ticker rolling delle ultime 24 ore per tutti gli strumenti attivi. |
| SubscribeMiniTicker | Symbol, flag UTC | Mini ticker per un singolo simbolo. |
I topic privati richiedono una chiave API valida. Il componente effettua la sottoscrizione utilizzando la listen key attiva e la rinnova periodicamente.
| Metodo | Descrizione |
| SubscribeAccountUpdate | Variazioni del saldo e della posizione dell'account. |
| SubscribeAccountDeals | Report di esecuzione per gli ordini eseguiti. |
| SubscribeAccountOrders | Aggiornamenti del ciclo di vita degli ordini (nuovo, annullato, rifiutato, ecc.). |
Utilizzare i metodi UnSubscribe* corrispondenti per terminare uno stream. Il componente invia automaticamente comandi PING e convalida i PONG restituiti per monitorare la connettività.
Metodi REST disponibili pubblicamente.
| Metodo | Descrizione |
| Ping | Verifica di connettività che chiama /api/v3/ping e restituisce True quando l'exchange risponde con un oggetto vuoto. |
| GetServerTime | Recupera il timestamp corrente dell'exchange da /api/v3/time. |
| GetExchangeInformation | Restituisce le regole di trading e i metadati dei simboli da /api/v3/exchangeInfo. |
| GetOrderBook | Scarica snapshot del libro degli ordini da /api/v3/depth; impostare il parametro opzionale limit per controllare il numero di livelli (predefinito 100). |
| GetTrades | Recupera le transazioni pubbliche recenti da /api/v3/trades con un limit opzionale (predefinito 100). |
| GetHistoricalTrades | Fornisce dati storici sugli scambi con filtri opzionali limit e fromId. |
| GetAggregateTrades | Restituisce operazioni compresse/aggregate tramite /api/v3/aggTrades supportando filtri opzionali per limit, fromId, startTime e endTime. |
| GetKlines | Scarica i candlestick da /api/v3/klines supportando i filtri di intervallo temporale e di limite. |
| GetAveragePrice | Restituisce il prezzo medio ponderato corrente da /api/v3/avgPrice. |
| Get24hrTicker | Recupera le statistiche ticker delle ultime 24 ore per uno o tutti i simboli tramite /api/v3/ticker/24hr. |
| GetPriceTicker | Recupera il prezzo più recente tramite /api/v3/ticker/price; passare un simbolo vuoto per recuperare i prezzi di tutte le coppie di trading. |
| GetBookTicker | Ottiene le migliori quotazioni bid/ask da /api/v3/ticker/bookTicker con supporto per richieste su singolo simbolo o sull'intero exchange. |
Gli endpoint privati richiedono chiavi API valide e una stringa di query firmata. Il componente aggiunge automaticamente il timestamp, recvWindow e la firma HMAC.
| Metodo | Descrizione |
| GetAccountInformation | Restituisce saldi e permessi da /api/v3/account. |
| GetOpenOrders | Elenca gli ordini aperti correnti (facoltativamente filtrati per simbolo). |
| GetAllOrders | Recupera gli ordini storici con filtri opzionali di tempo e limite. |
| GetOrder | Interroga lo stato di un ordine specifico fornendo orderId o origClientOrderId. |
| GetMyTrades | Elenca le esecuzioni di scambi private con filtri opzionali limit, fromId, startTime e endTime. |
| NewOrder | Inserisce un ordine live su /api/v3/order (market, limit, stop, ecc.) con parametri opzionali timeInForce, quantity, quoteOrderQty, price, newClientOrderId, stopPrice, icebergQty e parametri aggiuntivi. |
| TestNewOrder | Invia una richiesta di sola validazione a /api/v3/order/test accettando lo stesso insieme di parametri di NewOrder. |
| CancelOrder | Annulla un ordine specifico su /api/v3/order utilizzando orderId o origClientOrderId. |
| CancelAllOrders | Annulla in blocco tutti gli ordini aperti per un simbolo tramite /api/v3/openOrders. |
| GetSubAccounts | Elenca i sotto-account gestiti (/api/v3/sub-account/list). |
| GetSubAccountAssets | Restituisce i saldi di un sotto-account specifico. |
| TransferSubAccount | Trasferisce asset tra sub-account tramite /api/v3/sub-account/transfer; fornire l'importo e opzionalmente il tipo di trasferimento. |
| GetDepositAddress | Richiede gli indirizzi di deposito con un filtro opzionale per network. |
| GetDepositHistory | Recupera i record di deposito con filtri opzionali per coin, status, startTime e endTime. |
| GetWithdrawHistory | Restituisce la cronologia dei prelievi filtrata per coin, status e intervallo di tempo opzionale. |
| Withdraw | Invia una richiesta di prelievo tramite /api/v3/capital/withdraw/apply includendo i parametri obbligatori coin, address e amount oltre ai parametri opzionali network, addressTag, withdrawOrderId e parametri aggiuntivi. |
| BatchOrders | Invia ordini batch per più simboli in una singola richiesta. |
| GetTradeFee | Ottieni la commissione di trading per un simbolo specifico. |
| GetDepositHistory | Recupera i record di deposito con filtri opzionali per coin, status, startTime e endTime. |
| CancelWithdraw | Annulla una richiesta di prelievo in sospeso tramite l'ID del prelievo. |
| CreateInternalTransfer | Trasferisce internamente asset tra account. |
| GetTransferHistory | Ottieni la cronologia dei trasferimenti interni tra account. |