Aggiornamento API MEXC sgcWebSockets

· Funzionalità
Integrazione delle API MEXC Spot e Futures in Delphi

MEXC è un exchange di criptovalute globale che supporta spot trading e contratti futures perpetui su centinaia di coppie di token. Gli sviluppatori Delphi possono integrarsi con MEXC tramite due componenti dedicati: TsgcWSAPI_MEXC per il mercato Spot e TsgcWSAPI_MEXC_Futures per il mercato Futures. Ogni componente fornisce sia sottoscrizioni WebSocket per dati in tempo reale sia un'interfaccia REST per query on-demand e gestione degli ordini. Questo articolo descrive ogni metodo disponibile su entrambi i mercati.

Indice

Panoramica dell'architettura

MEXC fornisce superfici API separate per i suoi mercati Spot e Futures. Nella libreria sgcWebSockets, questo si riflette in due componenti distinti:

Entrambi i componenti seguono lo stesso pattern: assegna un TsgcWebSocketClient, configura le credenziali API, attiva il client per le sottoscrizioni WebSocket e accedi a REST_API per le chiamate HTTP sincrone.

API WebSocket Spot

L'API WebSocket Spot fornisce dati di mercato in tempo reale tramite canali pubblici e aggiornamenti dell'account tramite canali privati. Ogni sottoscrizione ha un metodo di unsubscribe corrispondente.

Canali pubblici

Sottoscrivi Annulla sottoscrizione Descrizione
SubscribeTrade UnSubscribeTrade Esecuzioni di operazioni in tempo reale per un simbolo.
SubscribeKline UnSubscribeKline Aggiornamenti in tempo reale di candle/kline per un simbolo e un intervallo.
SubscribeDiffDepth UnSubscribeDiffDepth Aggiornamenti incrementali della profondita' del libro degli ordini (diff stream).
SubscribeBookDepth UnSubscribeBookDepth Snapshot completi della profondita' del libro degli ordini a un dato livello.
SubscribeBookTicker UnSubscribeBookTicker Miglior prezzo bid/ask e relativa quantita' per un simbolo specifico.
SubscribeBookTickerBatch UnSubscribeBookTickerBatch Migliori prezzi bid/ask per tutti i simboli in un singolo stream.
SubscribeMiniTickers UnSubscribeMiniTickers Dati ticker condensati (prezzo, volume) per tutti i simboli.
SubscribeMiniTicker UnSubscribeMiniTicker Dati ticker condensati per un simbolo specifico.

Canali privati

I canali privati richiedono autenticazione e forniscono aggiornamenti in tempo reale sull'attività del tuo account. Abilita lo user data stream tramite la proprietà MEXCUserDataStreams.UserStream.

Sottoscrivi Annulla sottoscrizione Descrizione
SubscribeAccountUpdate UnSubscribeAccountUpdate Aggiornamenti di saldo e posizione dell'account quando si verificano cambiamenti.
SubscribeAccountDeals UnSubscribeAccountDeals Notifiche in tempo reale quando i tuoi ordini vengono eseguiti (esecuzioni di operazioni).
SubscribeAccountOrdini UnSubscribeAccountOrdini Cambi di stato dell'ordine (piazzato, parzialmente eseguito, eseguito, annullato).

API REST Spot

L'API REST Spot è accessibile tramite oMEXC.REST_API (di tipo TsgcHTTP_API_MEXC_Spot). Gli endpoint pubblici non richiedono autenticazione; quelli privati richiedono una API key e un secret validi.

Endpoint pubblici

Metodo Descrizione
Ping Verifica la connettivita' al server API MEXC.
GetServerTime Restituisce l'ora corrente del server MEXC.
GetDefaultSymbols Restituisce l'elenco dei simboli di trading di default.
GetExchangeInformation Restituisce le regole di trading dell'exchange e le informazioni sui simboli (filtri, precisione, stato).
GetOrderBook Restituisce il libro degli ordini (bid e ask) per un simbolo a una data profondita'.
GetTrades Restituisce le operazioni pubbliche recenti per un simbolo.
GetAggregateTrades Restituisce record di operazioni aggregati/compressi.
GetKlines Restituisce dati storici di kline/candle per un simbolo e un intervallo.
GetAveragePrice Restituisce il prezzo medio corrente per un simbolo.
Get24hrTicker Restituisce le statistiche di variazione prezzo su finestra mobile di 24 ore.
GetPriceTicker Restituisce l'ultimo prezzo per uno o tutti i simboli.
GetBookTicker Restituisce il miglior prezzo bid/ask e la relativa quantita' dal libro degli ordini.

Endpoint privati

Metodo Descrizione
NewOrder Piazza un nuovo ordine spot (market, limit o altri tipi supportati).
TestNewOrder Convalida un nuovo ordine senza piazzarlo effettivamente (dry run).
CancelOrder Annulla uno specifico ordine aperto tramite order ID.
CancelAllOrdini Annulla tutti gli ordini aperti per un simbolo.
GetOrder Restituisce lo stato e i dettagli di un ordine specifico.
GetOpenOrdini Restituisce tutti gli ordini attualmente aperti (non eseguiti).
GetAllOrdini Restituisce tutti gli ordini (aperti, eseguiti, annullati) entro un intervallo di tempo.
GetAccountInformation Restituisce i saldi dell'account e i permessi.
GetMyTrades Restituisce lo storico delle operazioni per un simbolo.
GetSubAccounts Restituisce un elenco di sub-account sotto il master account.
GetDepositAddress Restituisce l'indirizzo di deposito per una specifica coin e network.
GetWithdrawHistory Restituisce i record dello storico dei prelievi.
Withdraw Avvia un prelievo verso un indirizzo esterno.
GetCapitalConfig Restituisce la configurazione del capitale (network supportati, importi min/max di prelievo, commissioni).

API WebSocket Futures

L'API WebSocket Futures fornisce dati in tempo reale specifici per i contratti futures perpetui. Tutti i canali sono pubblici e non richiedono autenticazione. Ogni sottoscrizione ha un metodo di unsubscribe corrispondente.

Sottoscrivi Annulla sottoscrizione Descrizione
SubscribeDeal UnSubscribeDeal Esecuzioni di operazioni/deal futures in tempo reale.
SubscribeTickers UnSubscribeTickers Dati ticker per tutti i contratti futures.
SubscribeTicker UnSubscribeTicker Dati ticker per uno specifico contratto futures.
SubscribeDepth UnSubscribeDepth Aggiornamenti incrementali della profondita' del libro degli ordini per i futures.
SubscribeDepthFull UnSubscribeDepthFull Snapshot completi della profondita' del libro degli ordini per i futures.
SubscribeKline UnSubscribeKline Aggiornamenti in tempo reale di candle/kline per contratti futures.
SubscribeFundingRate UnSubscribeFundingRate Aggiornamenti in tempo reale del funding rate per contratti perpetual.
SubscribeIndexPrice UnSubscribeIndexPrice Aggiornamenti in tempo reale del prezzo dell'indice.
SubscribeFairPrice UnSubscribeFairPrice Aggiornamenti in tempo reale del fair/mark price utilizzati per i calcoli di liquidazione.

API REST Futures

L'API REST Futures è accessibile tramite oMEXCFut.REST_API (di tipo TsgcHTTP_API_MEXC_Futures). Copre dati di mercato, gestione dell'account, controllo delle posizioni e operazioni sugli ordini.

Endpoint pubblici

Metodo Descrizione
GetPing Verifica la connettivita' al server API MEXC Futures.
GetServerTime Restituisce l'ora corrente del server futures.
GetContracts Restituisce un elenco di tutti i contratti futures disponibili e relative specifiche.
GetDepth Restituisce la profondita' del libro degli ordini per un contratto futures.
GetDeals Restituisce lo storico recente delle operazioni/deal pubblici per un contratto futures.
GetKlines Restituisce dati storici di kline/candle per un contratto futures.
GetIndexPrice Restituisce il prezzo dell'indice corrente per un contratto.
GetFairPrice Restituisce il fair/mark price corrente per un contratto.
GetFundingRate Restituisce il funding rate corrente e previsto per un contratto perpetual.

Endpoint privati

Metodo Descrizione
GetAccountAssets Restituisce i saldi degli asset dell'account futures e le informazioni di margine.
GetPositionList Restituisce tutte le posizioni futures aperte con size, prezzo di ingresso e PnL.
SetPositionLeverage Imposta il moltiplicatore di leva per uno specifico contratto futures.
PlaceOrder Piazza un nuovo ordine futures (market, limit o altri tipi supportati).
CancelOrder Annulla uno specifico ordine futures aperto.
CancelAllOrdini Annulla tutti gli ordini futures aperti per un contratto.
GetOpenOrdini Restituisce tutti gli ordini futures attualmente aperti.
GetOrderHistory Restituisce lo storico degli ordini futures (eseguiti, annullati, ecc.).
GetFundingHistory Restituisce lo storico dei pagamenti delle funding fee.

Per iniziare — esempi di codice

Esempio mercato Spot

L'esempio seguente si connette al WebSocket MEXC Spot, si iscrive ai trade in tempo reale, interroga le informazioni di exchange via REST e piazza un ordine market di acquisto.

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;

Esempio mercato Futures

Questo esempio si connette al WebSocket MEXC Futures, si iscrive a un ticker futures e interroga i contratti disponibili via 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 e Futures utilizzano connessioni WebSocket separate e componenti API separati. Hai bisogno di un'istanza distinta di TsgcWebSocketClient per ciascuno.

Riferimento configurazione

Configurazione Spot

Proprietà Tipo Descrizione
MEXCAPI.ApiKey Stringa La tua API key MEXC per le richieste spot autenticate.
MEXCAPI.ApiSecret Stringa Il tuo API secret MEXC per firmare le richieste.
MEXCUserDataStreams.UserStream Booleano Imposta su True per abilitare lo user data stream privato per aggiornamenti di account, deal ed eventi sugli ordini.

Configurazione Futures

Proprietà Tipo Descrizione
MEXCFuturesAPI.ApiKey Stringa La tua API key MEXC per le richieste futures autenticate.
MEXCFuturesAPI.ApiSecret Stringa Il tuo API secret MEXC per firmare le richieste futures.

Suggerimenti e note

Componentei separati per Spot e Futures

MEXC tratta Spot e Futures come mercati completamente separati con endpoint API diversi, convenzioni di naming dei simboli diverse (ad esempio BTCUSDT per spot vs BTC_USDT per futures) e scope di autenticazione diversi. Usa sempre il componente corretto per il mercato target.

User Data Stream

Per ricevere eventi privati dell'account sul WebSocket Spot (aggiornamenti di account, deal, modifiche agli ordini) devi impostare MEXCUserDataStreams.UserStream := True prima di attivare il client. Questo indica al componente di richiedere una listen key e stabilire automaticamente lo stream privato.

Test degli ordini

Usa il metodo TestNewOrder sulla REST API Spot per convalidare i parametri di un ordine senza piazzarlo effettivamente. E' utile per verificare che i parametri di simbolo, side, type e quantita' siano formattati correttamente prima di impegnare fondi reali.

Convenzioni di naming dei simboli

Fai attenzione ai diversi formati dei simboli tra i due mercati. Spot usa coppie concatenate come BTCUSDT, mentre Futures usa coppie separate da underscore come BTC_USDT. Usare il formato sbagliato causa errori "symbol not found".

Rate limit

MEXC applica rate limit sia su REST sia su WebSocket. Gli endpoint REST consentono in genere un numero fisso di richieste al minuto. Se superi il limite ricevi uno status code 429. Implementa logica di backoff appropriata o usa sottoscrizioni WebSocket per dati che cambiano frequentemente.

Suggerimento: Per monitoraggio ad alta frequenza preferisci le sottoscrizioni WebSocket al polling degli endpoint REST. Le sottoscrizioni recapitano i dati in tempo reale con latenza inferiore e non incidono sui rate limit REST.