MEXC to globalna giełda kryptowalut udostępniająca dane rynkowe i konta w trybie strumieniowym za pośrednictwem bezpiecznych połączeń WebSocket.
WebSocket Spot API jest zgodne ze specyfikacjami opublikowanymi w dokumentacji Market Streams oraz User Data Streams. Kanały rynkowe są dostarczane jako ramki Protocol Buffers, podczas gdy prywatne strumienie używają formatu JSON. Komponent TsgcWSAPI_MEXC zarządza cyklem życia połączenia, uwierzytelnianiem oraz utrzymaniem klucza nasłuchu, dzięki czemu aplikacje mogą skupić się na przetwarzaniu przychodzących danych.
Oprócz strumieniowania przez WebSockets, zestaw narzędzi udostępnia również kompletne Spot HTTP API. Komponent TsgcHTTP_API_MEXC_Spot (jednostka sgcHTTP_API_MEXC) opakowuje każdy oficjalny punkt końcowy REST, umożliwiając aplikacjom pobieranie danych rynkowych lub handel z użyciem podpisanych żądań.
Podstawowy punkt końcowy WebSocket to wss://wbs-api.mexc.com/ws. Gdy MEXCUserDataStreams.UserStream jest włączony i podano prawidłowy klucz API, komponent automatycznie żąda klucza nasłuchiwania i dołącza go do URL połączenia.
Należy umieścić komponenty TsgcWebSocketClient i TsgcWSAPI_MEXC na formularzu (lub utworzyć je w kodzie), przypisać instancję klienta do komponentu API i aktywować klienta, aby rozpocząć sesję.
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;
Poniższy przykład pokazuje, jak zdekodować ramkę transakcji:
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;
Komponent udostępnia funkcje pomocnicze dla każdego publicznego kanału Spot. Należy wywołać metodę Subscribe*, aby rozpocząć strumieniowanie danych, oraz odpowiednią metodę UnSubscribe*, aby je zatrzymać.
| Metoda | Parametry | Opis |
| SubscribeTrade | Symbol, interwał (ms) | Zagregowane realizacje transakcji dostarczane jako Protobuf publicdeals. |
| SubscribeKline | Symbol, interwał | Aktualizacje świec dla konfigurowalnych interwałów (od 1 minuty do 1 miesiąca). |
| SubscribeDiffDepth | Symbol, interwał (ms) | Przyrostowe delta głębokości arkusza zleceń do lokalnej obsługi księgi. |
| SubscribeBookDepth | Symbol, Levels | Cykliczne migawki arkusza zleceń z limitem z żądaną głębokością (domyślnie 5). |
| SubscribeBookTicker | Symbol, interwał (ms) | Aktualizacje najlepszej oferty kupna/sprzedaży dla pojedynczej pary handlowej. |
| SubscribeBookTickerBatch | Flaga UTC | Zagregowane aktualizacje tickera księgi zleceń dla wielu symboli. |
| SubscribeMiniTickers | Flaga UTC | Statystyki miniaturowych tikerów krocząco za 24 godziny dla wszystkich aktywnych instrumentów. |
| SubscribeMiniTicker | Symbol, flaga UTC | Mini ticker dla pojedynczego symbolu. |
Tematy prywatne wymagają ważnego klucza API. Komponent subskrybuje przy użyciu aktywnego klucza nasłuchiwania i odnawia go cyklicznie.
| Metoda | Opis |
| SubscribeAccountUpdate | Zmiany salda konta i pozycji. |
| SubscribeAccountDeals | Raporty z realizacji zleceń wypełnionych. |
| SubscribeAccountOrders | Aktualizacje cyklu życia zlecenia (nowe, anulowane, odrzucone itp.). |
Należy używać odpowiednich metod UnSubscribe* w celu zakończenia strumienia. Składnik automatycznie wysyła polecenia PING i sprawdza poprawność zwróconych odpowiedzi PONG w celu monitorowania łączności.
Publicznie dostępne metody REST.
| Metoda | Opis |
| Ping | Sprawdzenie łączności wywołujące /api/v3/ping, które zwraca True, gdy giełda odpowie pustym obiektem. |
| GetServerTime | Pobiera aktualny znacznik czasu giełdy z punktu końcowego /api/v3/time. |
| GetExchangeInformation | Zwraca reguły handlowe i metadane symbolu z /api/v3/exchangeInfo. |
| GetOrderBook | Pobiera migawki księgi zleceń z punktu końcowego /api/v3/depth; opcjonalny parametr limit pozwala kontrolować liczbę poziomów (domyślnie 100). |
| GetTrades | Pobiera ostatnie transakcje publiczne z /api/v3/trades z opcjonalnym limitem (domyślnie 100). |
| GetHistoricalTrades | Dostarcza historyczne dane transakcji z opcjonalnymi filtrami limit i fromId. |
| GetAggregateTrades | Zwraca skompresowane/zagregowane transakcje przez /api/v3/aggTrades z obsługą opcjonalnych filtrów limit, fromId, startTime i endTime. |
| GetKlines | Pobiera świece z /api/v3/klines obsługując filtry zakresu czasu i limitu. |
| GetAveragePrice | Zwraca bieżącą ważoną średnią cenę z punktu końcowego /api/v3/avgPrice. |
| Get24hrTicker | Pobiera 24-godzinne statystyki ticker dla jednego lub wszystkich symboli za pośrednictwem /api/v3/ticker/24hr. |
| GetPriceTicker | Pobiera najnowszą cenę za pomocą /api/v3/ticker/price; podanie pustego symbolu skutkuje pobraniem cen dla wszystkich par handlowych. |
| GetBookTicker | Pobiera najlepsze oferty kupna/sprzedaży z /api/v3/ticker/bookTicker z obsługą żądań dla pojedynczego symbolu lub całej giełdy. |
Prywatne endpointy wymagają prawidłowych kluczy API i podpisanego ciągu zapytania. Komponent automatycznie dołącza znacznik czasu, recvWindow oraz podpis HMAC.
| Metoda | Opis |
| GetAccountInformation | Zwraca salda i uprawnienia z /api/v3/account. |
| GetOpenOrders | Wyświetla bieżące otwarte zlecenia (opcjonalnie filtrowane według symbolu). |
| GetAllOrders | Pobiera historyczne zlecenia z opcjonalnymi filtrami czasu i limitu. |
| GetOrder | Pobiera status konkretnego zlecenia, podając orderId lub origClientOrderId. |
| GetMyTrades | Wyświetla prywatne realizacje transakcji z opcjonalnymi filtrami limit, fromId, startTime i endTime. |
| NewOrder | Składa aktywne zlecenie na /api/v3/order (rynkowe, z limitem, stop itp.) z opcjonalnymi parametrami timeInForce, quantity, quoteOrderQty, price, newClientOrderId, stopPrice, icebergQty i dodatkowymi parametrami. |
| TestNewOrder | Wysyła żądanie wyłącznie weryfikacyjne do /api/v3/order/test, przyjmując ten sam zestaw parametrów co NewOrder. |
| CancelOrder | Anuluje konkretne zlecenie w /api/v3/order używając orderId lub origClientOrderId. |
| CancelAllOrders | Masowo anuluje wszystkie otwarte zlecenia dla danego symbolu przez /api/v3/openOrders. |
| GetSubAccounts | Wyświetla zarządzane konta podrzędne (/api/v3/sub-account/list). |
| GetSubAccountAssets | Zwraca salda dla określonego subkonta. |
| TransferSubAccount | Transferuje aktywa między subkontami przez /api/v3/sub-account/transfer; należy podać kwotę i opcjonalnie typ transferu. |
| GetDepositAddress | Pobiera adresy depozytów z opcjonalnym filtrem sieci. |
| GetDepositHistory | Pobiera rekordy depozytów z opcjonalnymi filtrami coin, status, startTime i endTime. |
| GetWithdrawHistory | Zwraca historię wypłat filtrowaną według waluty, statusu i opcjonalnego zakresu czasowego. |
| Wypłata | Przesyła żądanie wypłaty przez /api/v3/capital/withdraw/apply, zawierające wymagane pola coin, address i amount, a także opcjonalne network, addressTag, withdrawOrderId i dodatkowe parametry. |
| BatchOrders | Złóż zlecenia wsadowe dla wielu symboli w jednym żądaniu. |
| GetTradeFee | Pobierz stawkę opłaty transakcyjnej dla określonego symbolu. |
| GetDepositHistory | Pobiera rekordy depozytów z opcjonalnymi filtrami coin, status, startTime i endTime. |
| CancelWithdraw | Anuluj oczekujące żądanie wypłaty według identyfikatora wypłaty. |
| CreateInternalTransfer | Transferuj aktywa między kontami wewnętrznie. |
| GetTransferHistory | Pobierz historię wewnętrznych transferów między kontami. |