MEXC API 更新 sgcWebSockets

· 功能

MEXC 是一家支持现货交易和永续期货合约的全球加密货币交易所,涵盖数百个代币交易对。Delphi 开发者可通过两个专用组件与 MEXC 集成:TsgcWSAPI_MEXC 用于现货市场,TsgcWSAPI_MEXC_Futures 用于期货市场。每个组件均提供实时数据的 WebSocket 订阅和按需查询及订单管理的 REST 接口。本文详细介绍两个市场所有可用的方法。

架构概述

MEXC 为其现货和期货市场提供各自独立的 API。在 sgcWebSockets 库中,这通过两个不同的组件体现:

两个组件遵循相同模式:分配一个 TsgcWebSocketClient,配置 API 凭证,激活客户端进行 WebSocket 订阅,并通过 REST_API 进行同步 HTTP 调用。

现货 WebSocket API

现货 WebSocket API 通过公共频道提供实时行情数据,通过私有频道提供账户更新。每个订阅均有对应的取消订阅方法。

公共频道

订阅取消订阅说明
SubscribeTradeUnSubscribeTrade交易对的实时成交执行。
SubscribeKlineUnSubscribeKline交易对和时间间隔的实时 K 线更新。
SubscribeDiffDepthUnSubscribeDiffDepth增量订单簿深度更新(差分流)。
SubscribeBookDepthUnSubscribeBookDepth指定档位的完整订单簿深度快照。
SubscribeBookTickerUnSubscribeBookTicker指定交易对的最优买/卖价和数量。
SubscribeBookTickerBatchUnSubscribeBookTickerBatch所有交易对的最优买/卖价汇总流。
SubscribeMiniTickersUnSubscribeMiniTickers所有交易对的精简行情数据(价格、成交量)。
SubscribeMiniTickerUnSubscribeMiniTicker指定交易对的精简行情数据。

私有频道

私有频道需要认证,提供账户活动的实时更新。通过 MEXCUserDataStreams.UserStream 属性启用用户数据流。

订阅取消订阅说明
SubscribeAccountUpdateUnSubscribeAccountUpdate发生变动时的账户余额和持仓更新。
SubscribeAccountDealsUnSubscribeAccountDeals订单成交时的实时通知(成交执行)。
SubscribeAccountOrdersUnSubscribeAccountOrders订单状态变化(已下单、部分成交、全部成交、取消)。

现货 REST API

现货 REST API 通过 oMEXC.REST_API(类型为 TsgcHTTP_API_MEXC_Spot)访问。公共端点无需认证;私有端点需要有效的 API 密钥和密钥。

公共端点

方法说明
Ping测试与 MEXC API 服务器的连接。
GetServerTime返回当前 MEXC 服务器时间。
GetDefaultSymbols返回默认交易对列表。
GetExchangeInformation返回交易所交易规则和交易对信息(过滤器、精度、状态)。
GetOrderBook返回指定交易对在指定深度的订单簿(买单和卖单)。
GetTrades返回交易对的近期公开成交。
GetAggregateTrades返回汇总/压缩的成交记录。
GetKlines返回交易对和时间间隔的历史 K 线/蜡烛图数据。
GetAveragePrice返回交易对的当前平均价格。
Get24hrTicker返回 24 小时滚动窗口价格变动统计。
GetPriceTicker返回一个或所有交易对的最新价格。
GetBookTicker返回订单簿中的最优买/卖价和数量。

私有端点

方法说明
NewOrder下新的现货订单(市价、限价或其他支持类型)。
TestNewOrder验证新订单而不实际下单(演练模式)。
CancelOrder按订单 ID 取消特定挂单。
CancelAllOrders取消某交易对的所有挂单。
GetOrder返回特定订单的状态和详情。
GetOpenOrders返回所有当前挂单(未成交)。
GetAllOrders返回指定时间范围内的所有订单(挂单、已成交、已取消)。
GetAccountInformation返回账户余额和权限。
GetMyTrades返回您指定交易对的交易历史。
GetSubAccounts返回主账户下的子账户列表。
GetDepositAddress返回指定币种和网络的充值地址。
GetWithdrawHistory返回提现历史记录。
Withdraw发起向外部地址的提现。
GetCapitalConfig返回资金配置(支持的网络、最小/最大提现金额、手续费)。

期货 WebSocket API

期货 WebSocket API 提供永续期货合约的实时数据。所有频道均为公共频道,无需认证。每个订阅均有对应的取消订阅方法。

订阅取消订阅说明
SubscribeDealUnSubscribeDeal期货实时成交/交易执行。
SubscribeTickersUnSubscribeTickers所有期货合约的行情数据。
SubscribeTickerUnSubscribeTicker指定期货合约的行情数据。
SubscribeDepthUnSubscribeDepth期货增量订单簿深度更新。
SubscribeDepthFullUnSubscribeDepthFull期货完整订单簿深度快照。
SubscribeKlineUnSubscribeKline期货合约的实时 K 线更新。
SubscribeFundingRateUnSubscribeFundingRate永续合约的实时资金费率更新。
SubscribeIndexPriceUnSubscribeIndexPrice实时指数价格更新。
SubscribeFairPriceUnSubscribeFairPrice用于强制平仓计算的实时公允/标记价格更新。

期货 REST API

期货 REST API 通过 oMEXCFut.REST_API(类型为 TsgcHTTP_API_MEXC_Futures)访问,涵盖行情数据、账户管理、持仓控制和订单操作。

公共端点

方法说明
GetPing测试与 MEXC 期货 API 服务器的连接。
GetServerTime返回当前期货服务器时间。
GetContracts返回所有可用期货合约及其规格列表。
GetDepth返回期货合约的订单簿深度。
GetDeals返回期货合约的近期公开成交/交易历史。
GetKlines返回期货合约的历史 K 线/蜡烛图数据。
GetIndexPrice返回合约的当前指数价格。
GetFairPrice返回合约的当前公允/标记价格。
GetFundingRate返回永续合约的当前和预测资金费率。

私有端点

方法说明
GetAccountAssets返回期货账户资产余额和保证金信息。
GetPositionList返回所有未平仓期货持仓,包含仓位大小、入场价格和盈亏。
SetPositionLeverage设置指定期货合约的杠杆倍数。
PlaceOrder下新的期货订单(市价、限价或其他支持类型)。
CancelOrder取消特定的期货挂单。
CancelAllOrders取消某合约的所有期货挂单。
GetOpenOrders返回所有当前期货挂单。
GetOrderHistory返回历史期货订单(已成交、已取消等)。
GetFundingHistory返回您的资金费用支付历史。

快速上手 — 代码示例

现货市场示例

以下示例连接到 MEXC 现货 WebSocket,订阅实时成交,通过 REST 查询交易所信息,并下一个市价买单。

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;

期货市场示例

以下示例连接到 MEXC 期货 WebSocket,订阅期货行情,并通过 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;

注意:现货和期货使用各自独立的 WebSocket 连接和 API 组件。每个市场需要独立的 TsgcWebSocketClient 实例。

配置参考

现货配置

属性类型说明
MEXCAPI.ApiKeyString用于现货已认证请求的 MEXC API 密钥。
MEXCAPI.ApiSecretString用于请求签名的 MEXC API 密钥。
MEXCUserDataStreams.UserStreamBoolean设为 True 启用私有用户数据流,接收账户更新、成交和订单事件。

期货配置

属性类型说明
MEXCFuturesAPI.ApiKeyString用于期货已认证请求的 MEXC API 密钥。
MEXCFuturesAPI.ApiSecretString用于期货请求签名的 MEXC API 密钥。

使用技巧与注意事项

现货和期货的独立组件

MEXC 将现货和期货视为完全独立的市场,具有不同的 API 端点、交易对命名规范(如现货用 BTCUSDT,期货用 BTC_USDT)和认证范围。请始终为目标市场使用正确的组件。

用户数据流

如需在现货 WebSocket 上接收私有账户事件(账户更新、成交、订单变化),必须在激活客户端之前将 MEXCUserDataStreams.UserStream 设为 True。这将告知组件自动请求监听密钥并建立私有数据流。

订单测试

使用现货 REST API 的 TestNewOrder 方法在不实际下单的情况下验证订单参数。这有助于在投入真实资金之前确认交易对、方向、类型和数量参数格式正确。

交易对命名规范

请注意两个市场的不同交易对格式。现货使用连写格式(如 BTCUSDT),期货使用下划线分隔格式(如 BTC_USDT)。使用错误格式将导致"交易对未找到"错误。

速率限制

MEXC 对 REST 和 WebSocket API 均实施速率限制。REST 端点通常允许每分钟固定数量的请求。若超过限制,将收到 429 状态码。请实现适当的退避逻辑,或对频繁变动的数据使用 WebSocket 订阅。

提示:对于高频监控,建议优先使用 WebSocket 订阅而非轮询 REST 端点。订阅以低延迟实时推送数据,且不计入 REST 速率限制。