Integracja API MEXC Spot i Futures w Delphi
MEXC to globalna giełda kryptowalut obsługująca handel spot i wieczyste kontrakty futures na setkach par tokenów. Programiści Delphi mogą integrować się z MEXC przez dwa dedykowane komponenty: TsgcWSAPI_MEXC dla rynku Spot i TsgcWSAPI_MEXC_Futures dla rynku Futures. Każdy komponent zapewnia subskrypcje WebSocket dla danych w czasie rzeczywistym oraz interfejs REST dla zapytań na żądanie i zarządzania zleceniami. Ten artykuł opisuje każdą dostępną metodę dla obu rynków.
Spis treści
- Przegląd architektury
- API WebSocket Spot
- REST API Spot
- API WebSocket Futures
- REST API Futures
- Pierwsze kroki — przykłady kodu
- Dokumentacja konfiguracji
- Wskazówki i uwagi
Przegląd architektury
MEXC zapewnia odrębne powierzchnie API dla rynków Spot i Futures. W bibliotece sgcWebSockets odzwierciedlają to dwa odrębne komponenty:
TsgcWSAPI_MEXC— Obsługuje rynek Spot. Zapewnia subskrypcje WebSocket dla transakcji w czasie rzeczywistym, klines, głębokości i tickerów, a także prywatne strumienie zdarzeń konta. Interfejs REST jest dostępny przezREST_API(typTsgcHTTP_API_MEXC_Spot).TsgcWSAPI_MEXC_Futures— Obsługuje rynek Futures. Zapewnia subskrypcje WebSocket dla danych specyficznych dla futures, takich jak transakcje, stopy finansowania, ceny indeksów i ceny fair. Interfejs REST jest dostępny przezREST_API(typTsgcHTTP_API_MEXC_Futures).
Oba komponenty stosują ten sam schemat: przypisz TsgcWebSocketClient, skonfiguruj dane uwierzytelniające API, aktywuj klienta dla subskrypcji WebSocket i uzyskuj dostęp do REST_API dla synchronicznych wywołań HTTP.
API WebSocket Spot
API WebSocket Spot zapewnia dane rynkowe w czasie rzeczywistym przez kanały publiczne i aktualizacje konta przez kanały prywatne. Każda subskrypcja ma odpowiednią metodę anulowania.
Kanały publiczne
| Subskrypcja | Anulowanie | Opis |
|---|---|---|
SubscribeTrade |
UnSubscribeTrade |
Realizacje transakcji w czasie rzeczywistym dla symbolu. |
SubscribeKline |
UnSubscribeKline |
Aktualizacje świec/kline na żywo dla symbolu i interwału. |
SubscribeDiffDepth |
UnSubscribeDiffDepth |
Przyrostowe aktualizacje głębokości arkusza zleceń (strumień diff). |
SubscribeBookDepth |
UnSubscribeBookDepth |
Pełne migawki głębokości arkusza zleceń na podanym poziomie. |
SubscribeBookTicker |
UnSubscribeBookTicker |
Najlepsza cena kupna/sprzedaży i ilość dla określonego symbolu. |
SubscribeBookTickerBatch |
UnSubscribeBookTickerBatch |
Najlepsze ceny kupna/sprzedaży dla wszystkich symboli w jednym strumieniu. |
SubscribeMiniTickers |
UnSubscribeMiniTickers |
Skondensowane dane tickera (cena, wolumen) dla wszystkich symboli. |
SubscribeMiniTicker |
UnSubscribeMiniTicker |
Skondensowane dane tickera dla określonego symbolu. |
Kanały prywatne
Kanały prywatne wymagają uwierzytelniania i dostarczają aktualizacji w czasie rzeczywistym o aktywności konta. Włącz strumień danych użytkownika przez właściwość MEXCUserDataStreams.UserStream.
| Subskrypcja | Anulowanie | Opis |
|---|---|---|
SubscribeAccountUpdate |
UnSubscribeAccountUpdate |
Aktualizacje salda konta i pozycji przy wystąpieniu zmian. |
SubscribeAccountDeals |
UnSubscribeAccountDeals |
Powiadomienia w czasie rzeczywistym przy realizacji zleceń (wykonania transakcji). |
SubscribeAccountOrders |
UnSubscribeAccountOrders |
Zmiany statusu zleceń (złożone, częściowo zrealizowane, zrealizowane, anulowane). |
REST API Spot
REST API Spot jest dostępne przez oMEXC.REST_API (typ TsgcHTTP_API_MEXC_Spot). Publiczne punkty końcowe nie wymagają uwierzytelniania; prywatne wymagają ważnego klucza API i sekretu.
Publiczne punkty końcowe
| Metoda | Opis |
|---|---|
Ping |
Testuje łączność z serwerem API MEXC. |
GetServerTime |
Zwraca bieżący czas serwera MEXC. |
GetDefaultSymbols |
Zwraca listę domyślnych symboli handlowych. |
GetExchangeInformation |
Zwraca reguły handlowe giełdy i informacje o symbolach (filtry, precyzja, status). |
GetOrderBook |
Zwraca arkusz zleceń (kupno i sprzedaż) dla symbolu na podanej głębokości. |
GetTrades |
Zwraca ostatnie publiczne transakcje dla symbolu. |
GetAggregateTrades |
Zwraca zagregowane/skompresowane rekordy transakcji. |
GetKlines |
Zwraca historyczne dane kline/świecowe dla symbolu i interwału. |
GetAveragePrice |
Zwraca bieżącą średnią cenę dla symbolu. |
Get24hrTicker |
Zwraca statystyki zmian cen w kroczącym oknie 24-godzinnym. |
GetPriceTicker |
Zwraca najnowszą cenę dla jednego lub wszystkich symboli. |
GetBookTicker |
Zwraca najlepszą cenę kupna/sprzedaży i ilość z arkusza zleceń. |
Prywatne punkty końcowe
| Metoda | Opis |
|---|---|
NewOrder |
Składa nowe zlecenie spot (rynkowe, z limitem lub inne obsługiwane typy). |
TestNewOrder |
Weryfikuje nowe zlecenie bez faktycznego jego składania (symulacja). |
CancelOrder |
Anuluje określone otwarte zlecenie według identyfikatora. |
CancelAllOrders |
Anuluje wszystkie otwarte zlecenia dla symbolu. |
GetOrder |
Zwraca status i szczegóły określonego zlecenia. |
GetOpenOrders |
Zwraca wszystkie aktualnie otwarte (niezrealizowane) zlecenia. |
GetAllOrders |
Zwraca wszystkie zlecenia (otwarte, zrealizowane, anulowane) w zakresie czasowym. |
GetAccountInformation |
Zwraca salda konta i uprawnienia. |
GetMyTrades |
Zwraca historię transakcji dla symbolu. |
GetSubAccounts |
Zwraca listę podkont w ramach konta głównego. |
GetDepositAddress |
Zwraca adres depozytu dla określonej monety i sieci. |
GetWithdrawHistory |
Zwraca rekordy historii wypłat. |
Withdraw |
Inicjuje wypłatę na zewnętrzny adres. |
GetCapitalConfig |
Zwraca konfigurację kapitału (obsługiwane sieci, minimalne/maksymalne kwoty wypłat, opłaty). |
API WebSocket Futures
API WebSocket Futures dostarcza danych w czasie rzeczywistym specyficznych dla wieczystych kontraktów futures. Wszystkie kanały są publiczne i nie wymagają uwierzytelniania. Każda subskrypcja ma odpowiednią metodę anulowania.
| Subskrypcja | Anulowanie | Opis |
|---|---|---|
SubscribeDeal |
UnSubscribeDeal |
Realizacje transakcji/dealów futures w czasie rzeczywistym. |
SubscribeTickers |
UnSubscribeTickers |
Dane tickera dla wszystkich kontraktów futures. |
SubscribeTicker |
UnSubscribeTicker |
Dane tickera dla określonego kontraktu futures. |
SubscribeDepth |
UnSubscribeDepth |
Przyrostowe aktualizacje głębokości arkusza zleceń dla futures. |
SubscribeDepthFull |
UnSubscribeDepthFull |
Pełne migawki głębokości arkusza zleceń dla futures. |
SubscribeKline |
UnSubscribeKline |
Aktualizacje świec/kline na żywo dla kontraktów futures. |
SubscribeFundingRate |
UnSubscribeFundingRate |
Aktualizacje stopy finansowania dla wieczystych kontraktów w czasie rzeczywistym. |
SubscribeIndexPrice |
UnSubscribeIndexPrice |
Aktualizacje ceny indeksu w czasie rzeczywistym. |
SubscribeFairPrice |
UnSubscribeFairPrice |
Aktualizacje ceny fair/mark używane do obliczeń likwidacji w czasie rzeczywistym. |
REST API Futures
REST API Futures jest dostępne przez oMEXCFut.REST_API (typ TsgcHTTP_API_MEXC_Futures). Obejmuje dane rynkowe, zarządzanie kontem, kontrolę pozycji i operacje na zleceniach.
Publiczne punkty końcowe
| Metoda | Opis |
|---|---|
GetPing |
Testuje łączność z serwerem API MEXC Futures. |
GetServerTime |
Zwraca bieżący czas serwera futures. |
GetContracts |
Zwraca listę wszystkich dostępnych kontraktów futures i ich specyfikacji. |
GetDepth |
Zwraca głębokość arkusza zleceń dla kontraktu futures. |
GetDeals |
Zwraca ostatnią publiczną historię transakcji/dealów dla kontraktu futures. |
GetKlines |
Zwraca historyczne dane kline/świecowe dla kontraktu futures. |
GetIndexPrice |
Zwraca bieżącą cenę indeksu dla kontraktu. |
GetFairPrice |
Zwraca bieżącą cenę fair/mark dla kontraktu. |
GetFundingRate |
Zwraca bieżącą i przewidywaną stopę finansowania dla wieczystego kontraktu. |
Prywatne punkty końcowe
| Metoda | Opis |
|---|---|
GetAccountAssets |
Zwraca salda aktywów konta futures i informacje o depozycie zabezpieczającym. |
GetPositionList |
Zwraca wszystkie otwarte pozycje futures z rozmiarem, ceną wejścia i PnL. |
SetPositionLeverage |
Ustawia mnożnik dźwigni dla określonego kontraktu futures. |
PlaceOrder |
Składa nowe zlecenie futures (rynkowe, z limitem lub inne obsługiwane typy). |
CancelOrder |
Anuluje określone otwarte zlecenie futures. |
CancelAllOrders |
Anuluje wszystkie otwarte zlecenia futures dla kontraktu. |
GetOpenOrders |
Zwraca wszystkie aktualnie otwarte zlecenia futures. |
GetOrderHistory |
Zwraca historyczne zlecenia futures (zrealizowane, anulowane itp.). |
GetFundingHistory |
Zwraca historię opłat finansowania. |
Pierwsze kroki — przykłady kodu
Przykład rynku Spot
Poniższy przykład łączy się z WebSocket MEXC Spot, subskrybuje transakcje w czasie rzeczywistym, odpytuje informacje o giełdzie przez REST i składa zlecenie kupna rynkowego.
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;
Przykład rynku Futures
Ten przykład łączy się z WebSocket MEXC Futures, subskrybuje ticker futures i odpytuje dostępne kontrakty przez 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;
Uwaga: Spot i Futures używają oddzielnych połączeń WebSocket i oddzielnych komponentów API. Potrzebujesz osobnej instancji TsgcWebSocketClient dla każdego z nich.
Dokumentacja konfiguracji
Konfiguracja Spot
| Właściwość | Typ | Opis |
|---|---|---|
MEXCAPI.ApiKey |
String | Twój klucz API MEXC do uwierzytelnionych żądań spot. |
MEXCAPI.ApiSecret |
String | Twój sekret API MEXC do podpisywania żądań. |
MEXCUserDataStreams.UserStream |
Boolean | Ustaw True, aby włączyć prywatny strumień danych użytkownika dla aktualizacji konta, dealów i zdarzeń zleceń. |
Konfiguracja Futures
| Właściwość | Typ | Opis |
|---|---|---|
MEXCFuturesAPI.ApiKey |
String | Twój klucz API MEXC do uwierzytelnionych żądań futures. |
MEXCFuturesAPI.ApiSecret |
String | Twój sekret API MEXC do podpisywania żądań futures. |
Wskazówki i uwagi
Osobne komponenty dla Spot i Futures
MEXC traktuje Spot i Futures jako całkowicie odrębne rynki z różnymi punktami końcowymi API, konwencjami nazewnictwa symboli (np. BTCUSDT dla spot vs. BTC_USDT dla futures) i zakresami uwierzytelniania. Zawsze używaj właściwego komponentu dla docelowego rynku.
Strumienie danych użytkownika
Aby odbierać prywatne zdarzenia konta na WebSocket Spot (aktualizacje konta, deale, zmiany zleceń), musisz ustawić MEXCUserDataStreams.UserStream := True przed aktywacją klienta. Powoduje to, że komponent żąda klucza nasłuchu i automatycznie ustanawia prywatny strumień.
Testowanie zleceń
Użyj metody TestNewOrder w REST API Spot, aby zweryfikować parametry zlecenia bez faktycznego jego składania. Jest to przydatne do sprawdzenia, czy symbol, strona, typ i ilość są poprawnie sformatowane przed zainwestowaniem prawdziwych środków.
Konwencje nazewnictwa symboli
Zwróć uwagę na różne formaty symboli w obu rynkach. Spot używa scalonych par jak BTCUSDT, podczas gdy Futures używa par oddzielonych podkreśleniem jak BTC_USDT. Użycie złego formatu skutkuje błędami "symbol not found".
Limity szybkości
MEXC egzekwuje limity szybkości dla obu API: REST i WebSocket. Punkty końcowe REST zazwyczaj pozwalają na określoną liczbę żądań na minutę. Po przekroczeniu limitu otrzymasz kod statusu 429. Zaimplementuj odpowiednią logikę backoff lub korzystaj z subskrypcji WebSocket dla danych, które często się zmieniają.
Wskazówka: do monitorowania wysokiej częstotliwości preferuj subskrypcje WebSocket zamiast odpytywania punktów końcowych REST. Subskrypcje dostarczają danych w czasie rzeczywistym z niższym opóźnieniem i nie są wliczane do limitów REST.