MEXC est une bourse de crypto-monnaies mondiale qui expose des données de marché et de compte en temps réel via des connexions WebSocket sécurisées.
L'API Spot WebSocket suit les spécifications publiées dans la documentation Market Streams et User Data Streams. Les canaux de marché sont fournis sous forme de trames Protocol Buffers tandis que les flux privés utilisent JSON. Le composant TsgcWSAPI_MEXC gère le cycle de vie de la connexion, l'authentification et la maintenance de la clé d'écoute afin que les applications puissent se concentrer sur le traitement des données poussées.
En plus du streaming via WebSockets, la boîte à outils expose également l'API HTTP Spot complète. Le composant TsgcHTTP_API_MEXC_Spot (unité sgcHTTP_API_MEXC) encapsule chaque point de terminaison REST officiel afin que les applications puissent interroger des données de marché ou trader avec des requêtes signées.
Le point de terminaison WebSocket de base est wss://wbs-api.mexc.com/ws. Lorsque MEXCUserDataStreams.UserStream est activé et qu'une clé API valide est fournie, le composant demande automatiquement une clé d'écoute et l'ajoute à l'URL de connexion.
Déposez un composant TsgcWebSocketClient et un composant TsgcWSAPI_MEXC sur le formulaire (ou créez-les dans le code), assignez l'instance client au composant API et activez le client pour démarrer la session.
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'exemple suivant montre comment décoder une trame de transaction :
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;
Le composant expose des assistants pour chaque canal Spot public. Invoquez la méthode Subscribe* pour commencer à diffuser les données et le UnSubscribe* correspondant pour l'arrêter.
| Méthode | Paramètres | Description |
| SubscribeTrade | Symbole, Intervalle (ms) | Exécutions de transactions agrégées livrées sous forme de Protobuf publicdeals. |
| SubscribeKline | Symbole, Intervalle | Mises à jour de chandeliers pour des intervalles configurables (1 minute à 1 mois). |
| SubscribeDiffDepth | Symbole, Intervalle (ms) | Deltas de profondeur incrémentaux du carnet d'ordres pour la maintenance du carnet local. |
| SubscribeBookDepth | Symbol, Levels | Instantanés périodiques du carnet d'ordres à cours limité avec la profondeur demandée (5 par défaut). |
| SubscribeBookTicker | Symbole, Intervalle (ms) | Mises à jour meilleur bid/ask pour une seule paire de trading. |
| SubscribeBookTickerBatch | Indicateur UTC | Mises à jour agrégées du ticker du carnet d'ordres pour plusieurs symboles. |
| SubscribeMiniTickers | Indicateur UTC | Statistiques mini-ticker glissantes sur 24h pour tous les instruments actifs. |
| SubscribeMiniTicker | Symbole, indicateur UTC | Mini ticker pour un seul symbole. |
Les sujets privés nécessitent une clé API valide. Le composant s'abonne en utilisant la listen key active et la renouvelle périodiquement.
| Méthode | Description |
| SubscribeAccountUpdate | Variations du solde du compte et des positions. |
| SubscribeAccountDeals | Rapports d'exécution pour les ordres exécutés. |
| SubscribeAccountOrders | Mises à jour du cycle de vie des ordres (nouveau, annulé, rejeté, etc.). |
Utilisez les méthodes UnSubscribe* correspondantes pour mettre fin à un flux. Le composant envoie automatiquement des commandes PING et valide le PONG retourné pour surveiller la connectivité.
Méthodes REST disponibles publiquement.
| Méthode | Description |
| Ping | Vérification de connectivité qui appelle /api/v3/ping et retourne True lorsque la plateforme répond avec un objet vide. |
| GetServerTime | Récupère l'horodatage actuel de l'exchange depuis /api/v3/time. |
| GetExchangeInformation | Retourne les règles de trading et les métadonnées de symbole depuis /api/v3/exchangeInfo. |
| GetOrderBook | Télécharge des instantanés du carnet d'ordres depuis /api/v3/depth ; définissez le paramètre optionnel limit pour contrôler le nombre de niveaux (100 par défaut). |
| GetTrades | Récupère les transactions publiques récentes depuis /api/v3/trades avec une limite optionnelle (par défaut 100). |
| GetHistoricalTrades | Fournit des données historiques de transactions avec des filtres optionnels limit et fromId. |
| GetAggregateTrades | Retourne les transactions compressées/agrégées via /api/v3/aggTrades prenant en charge les filtres optionnels limit, fromId, startTime et endTime. |
| GetKlines | Télécharge les chandeliers depuis /api/v3/klines avec prise en charge des filtres de plage temporelle et de limite. |
| GetAveragePrice | Retourne le prix moyen pondéré actuel depuis /api/v3/avgPrice. |
| Get24hrTicker | Récupère les statistiques du ticker sur 24 heures pour un ou tous les symboles via /api/v3/ticker/24hr. |
| GetPriceTicker | Récupère le dernier prix en utilisant /api/v3/ticker/price ; passez un symbole vide pour récupérer les prix de chaque paire de trading. |
| GetBookTicker | Obtient les meilleures cotations d'achat/vente depuis /api/v3/ticker/bookTicker avec prise en charge des requêtes pour un seul symbole ou pour l'ensemble de la bourse. |
Les points de terminaison privés nécessitent des clés API valides et une chaîne de requête signée. Le composant ajoute automatiquement l'horodatage, recvWindow et la signature HMAC.
| Méthode | Description |
| GetAccountInformation | Renvoie les soldes et les permissions depuis /api/v3/account. |
| GetOpenOrders | Liste les ordres ouverts actuels (filtrés optionnellement par symbole). |
| GetAllOrders | Récupère les ordres historiques avec des filtres optionnels de temps et de limite. |
| GetOrder | Interroge le statut d'un ordre spécifique en fournissant soit orderId soit origClientOrderId. |
| GetMyTrades | Liste les exécutions de transactions privées avec des filtres optionnels limit, fromId, startTime et endTime. |
| NewOrder | Place un ordre actif sur /api/v3/order (marché, limite, stop, etc.) avec timeInForce, quantity, quoteOrderQty, price, newClientOrderId, stopPrice, icebergQty et des paramètres supplémentaires en option. |
| TestNewOrder | Envoie une requête de validation uniquement vers /api/v3/order/test acceptant le même jeu de paramètres que NewOrder. |
| CancelOrder | Annule un ordre spécifique sur /api/v3/order en utilisant orderId ou origClientOrderId. |
| CancelAllOrders | Annule en masse tous les ordres ouverts pour un symbole via /api/v3/openOrders. |
| GetSubAccounts | Liste les sous-comptes gérés (/api/v3/sub-account/list). |
| GetSubAccountAssets | Retourne les soldes d'un sous-compte spécifique. |
| TransferSubAccount | Transfère des actifs entre des sous-comptes via /api/v3/sub-account/transfer ; fournissez le montant et optionnellement le type de transfert. |
| GetDepositAddress | Demande des adresses de dépôt avec un filtre réseau optionnel. |
| GetDepositHistory | Récupère les enregistrements de dépôt avec des filtres optionnels coin, status, startTime et endTime. |
| GetWithdrawHistory | Renvoie l'historique des retraits filtré par coin, statut et plage temporelle optionnelle. |
| Retrait | Soumet une demande de retrait via /api/v3/capital/withdraw/apply incluant les paramètres obligatoires coin, address et amount ainsi que les paramètres optionnels network, addressTag, withdrawOrderId et des paramètres supplémentaires. |
| BatchOrders | Soumettre des ordres par lots pour plusieurs symboles en une seule requête. |
| GetTradeFee | Obtenir le taux de frais de transaction pour un symbole spécifique. |
| GetDepositHistory | Récupère les enregistrements de dépôt avec des filtres optionnels coin, status, startTime et endTime. |
| CancelWithdraw | Annuler une demande de retrait en attente par identifiant de retrait. |
| CreateInternalTransfer | Transférer des actifs entre comptes en interne. |
| GetTransferHistory | Obtenir l'historique des transferts internes entre comptes. |