MEXC ist eine globale Kryptowährungsbörse, die Streaming-Markt- und Kontodaten über sichere WebSocket-Verbindungen bereitstellt.
Die WebSocket-Spot-API folgt den in der Dokumentation Market Streams und User Data Streams veröffentlichten Spezifikationen. Marktkanäle werden als Protocol-Buffers-Frames geliefert, während private Streams JSON verwenden. Die Komponente TsgcWSAPI_MEXC verwaltet den Verbindungslebenszyklus, die Authentifizierung und die Listen-Key-Wartung, sodass sich Anwendungen auf die Verarbeitung der gepushten Daten konzentrieren können.
Zusätzlich zum Streaming über WebSockets stellt das Toolkit auch die vollständige Spot-HTTP-API bereit. Die Komponente TsgcHTTP_API_MEXC_Spot (Unit sgcHTTP_API_MEXC) kapselt jeden offiziellen REST-Endpunkt, sodass Anwendungen Marktdaten abfragen oder mit signierten Anfragen handeln können.
Der Basis-WebSocket-Endpunkt ist wss://wbs-api.mexc.com/ws. Wenn MEXCUserDataStreams.UserStream aktiviert ist und ein gültiger API-Schlüssel angegeben wird, fordert die Komponente automatisch einen Listen-Key an und hängt ihn an die Verbindungs-URL an.
Platzieren Sie eine TsgcWebSocketClient- und eine TsgcWSAPI_MEXC-Komponente auf dem Formular (oder erstellen Sie sie im Code), weisen Sie der API-Komponente die Client-Instanz zu und aktivieren Sie den Client, um die Sitzung zu starten.
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;
Das folgende Beispiel demonstriert, wie ein Trade-Frame decodiert wird:
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;
Die Komponente stellt Helfer für jeden öffentlichen Spot-Kanal bereit. Rufen Sie die Subscribe*-Methode auf, um mit dem Streaming von Daten zu beginnen, und das entsprechende UnSubscribe*, um es zu stoppen.
| Method | Parameter | Beschreibung |
| SubscribeTrade | Symbol, Interval (ms) | Aggregierte Handelsausführungen, übermittelt als Protobuf-publicdeals. |
| SubscribeKline | Symbol, Interval | Candlestick-Updates für konfigurierbare Intervalle (1 Minute bis 1 Monat). |
| SubscribeDiffDepth | Symbol, Interval (ms) | Inkrementelle Orderbuch-Tiefendeltas für die lokale Buchpflege. |
| SubscribeBookDepth | Symbol, Levels | Periodische Snapshots des Limit-Orderbuchs mit der angeforderten Tiefe (Standard 5). |
| SubscribeBookTicker | Symbol, Interval (ms) | Best-Bid/Ask-Aktualisierungen für ein einzelnes Handelspaar. |
| SubscribeBookTickerBatch | UTC-Flag | Aggregierte Book-Ticker-Aktualisierungen für mehrere Symbole. |
| SubscribeMiniTickers | UTC-Flag | Rollende 24h-Mini-Ticker-Statistiken für alle aktiven Instrumente. |
| SubscribeMiniTicker | Symbol, UTC-Flag | Mini-Ticker für ein einzelnes Symbol. |
Private Topics erfordern einen gültigen API-Schlüssel. Die Komponente abonniert mithilfe des aktiven Listen-Keys und erneuert ihn periodisch.
| Method | Beschreibung |
| SubscribeAccountUpdate | Änderungen von Kontostand und Position. |
| SubscribeAccountDeals | Ausführungsberichte für ausgeführte Orders. |
| SubscribeAccountOrders | Aktualisierungen des Order-Lebenszyklus (neu, storniert, abgelehnt usw.). |
Verwenden Sie die entsprechenden UnSubscribe*-Methoden, um einen Stream zu beenden. Die Komponente sendet automatisch PING-Befehle und validiert das zurückgegebene PONG, um die Konnektivität zu überwachen.
Öffentlich verfügbare REST-Methoden.
| Method | Beschreibung |
| Ping | Konnektivitätsprüfung, die /api/v3/ping aufruft und True zurückgibt, wenn die Börse mit einem leeren Objekt antwortet. |
| GetServerTime | Ruft den aktuellen Börsen-Zeitstempel von /api/v3/time ab. |
| GetExchangeInformation | Gibt Handelsregeln und Symbol-Metadaten von /api/v3/exchangeInfo zurück. |
| GetOrderBook | Lädt Orderbuch-Snapshots von /api/v3/depth herunter; setzen Sie den optionalen Parameter limit, um die Anzahl der Ebenen zu steuern (Standard 100). |
| GetTrades | Ruft kürzliche öffentliche Trades von /api/v3/trades mit einem optionalen limit ab (Standard 100). |
| GetHistoricalTrades | Liefert historische Handelsdaten mit optionalen limit- und fromId-Filtern. |
| GetAggregateTrades | Gibt komprimierte/aggregierte Trades über /api/v3/aggTrades zurück und unterstützt optionale Filter limit, fromId, startTime und endTime. |
| GetKlines | Lädt Candlesticks von /api/v3/klines herunter, unterstützt Zeitbereichs- und Limit-Filter. |
| GetAveragePrice | Gibt den aktuellen gewichteten Durchschnittspreis von /api/v3/avgPrice zurück. |
| Get24hrTicker | Ruft 24-Stunden-Ticker-Statistiken für ein oder alle Symbole über /api/v3/ticker/24hr ab. |
| GetPriceTicker | Ruft den neuesten Preis über /api/v3/ticker/price ab; übergeben Sie ein leeres Symbol, um Preise für jedes Handelspaar abzurufen. |
| GetBookTicker | Ruft die besten Bid-/Ask-Quotes von /api/v3/ticker/bookTicker ab, mit Unterstützung für Einzel-Symbol- oder Full-Exchange-Requests. |
Private Endpunkte erfordern gültige API Keys und einen signierten Query-String. Die Komponente hängt automatisch den Timestamp, recvWindow und die HMAC-Signatur an.
| Method | Beschreibung |
| GetAccountInformation | Gibt Guthaben und Berechtigungen von /api/v3/account zurück. |
| GetOpenOrders | Listet aktuelle offene Orders auf (optional nach Symbol gefiltert). |
| GetAllOrders | Ruft historische Orders mit optionalen Zeit- und Limit-Filtern ab. |
| GetOrder | Fragt den Status einer bestimmten Order ab, indem entweder orderId oder origClientOrderId angegeben wird. |
| GetMyTrades | Listet private Trade-Ausführungen mit optionalen Filtern limit, fromId, startTime und endTime auf. |
| NewOrder | Platziert eine Live-Order auf /api/v3/order (market, limit, stop usw.) mit optionalem timeInForce, quantity, quoteOrderQty, price, newClientOrderId, stopPrice, icebergQty und zusätzlichen Parametern. |
| TestNewOrder | Sendet eine reine Validierungsanfrage an /api/v3/order/test und akzeptiert denselben Parametersatz wie NewOrder. |
| CancelOrder | Storniert eine bestimmte Order über /api/v3/order mithilfe von orderId oder origClientOrderId. |
| CancelAllOrders | Storniert alle offenen Orders für ein Symbol gebündelt über /api/v3/openOrders. |
| GetSubAccounts | Listet verwaltete Unterkonten auf (/api/v3/sub-account/list). |
| GetSubAccountAssets | Gibt die Guthaben für ein bestimmtes Unterkonto zurück. |
| TransferSubAccount | Überträgt Vermögenswerte zwischen Sub-Accounts über /api/v3/sub-account/transfer; geben Sie den Betrag und optional den Übertragungs-type an. |
| GetDepositAddress | Fordert Einzahlungsadressen mit einem optionalen network-Filter an. |
| GetDepositHistory | Ruft Einzahlungsdatensätze mit optionalen Filtern für coin, status, startTime und endTime ab. |
| GetWithdrawHistory | Gibt den Abhebungsverlauf gefiltert nach coin, status und optionalem Zeitbereich zurück. |
| Withdraw | Übermittelt eine Abhebungsanfrage über /api/v3/capital/withdraw/apply, einschließlich der obligatorischen Parameter coin, address und amount sowie der optionalen Parameter network, addressTag, withdrawOrderId und zusätzlicher Parameter. |
| BatchOrders | Übermittelt Batch-Orders für mehrere Symbole in einer einzigen Anfrage. |
| GetTradeFee | Ruft die Handelsgebührenrate für ein bestimmtes Symbol ab. |
| GetDepositHistory | Ruft Einzahlungsdatensätze mit optionalen Filtern für coin, status, startTime und endTime ab. |
| CancelWithdraw | Storniert eine ausstehende Auszahlungsanfrage anhand der Auszahlungs-ID. |
| CreateInternalTransfer | Vermögenswerte intern zwischen Konten übertragen. |
| GetTransferHistory | Den Verlauf interner Übertragungen zwischen Konten abrufen. |