MEXC 是一家支持现货交易和永续期货合约的全球加密货币交易所,涵盖数百个代币交易对。Delphi 开发者可通过两个专用组件与 MEXC 集成:TsgcWSAPI_MEXC 用于现货市场,TsgcWSAPI_MEXC_Futures 用于期货市场。每个组件均提供实时数据的 WebSocket 订阅和按需查询及订单管理的 REST 接口。本文详细介绍两个市场所有可用的方法。
架构概述
MEXC 为其现货和期货市场提供各自独立的 API。在 sgcWebSockets 库中,这通过两个不同的组件体现:
TsgcWSAPI_MEXC— 处理现货市场。提供实时成交、K 线、深度和行情的 WebSocket 订阅,以及私有账户事件流。REST 接口通过REST_API(类型为TsgcHTTP_API_MEXC_Spot)访问。TsgcWSAPI_MEXC_Futures— 处理期货市场。提供期货特定数据(如成交、资金费率、指数价格和公允价格)的 WebSocket 订阅。REST 接口通过REST_API(类型为TsgcHTTP_API_MEXC_Futures)访问。
两个组件遵循相同模式:分配一个 TsgcWebSocketClient,配置 API 凭证,激活客户端进行 WebSocket 订阅,并通过 REST_API 进行同步 HTTP 调用。
现货 WebSocket API
现货 WebSocket API 通过公共频道提供实时行情数据,通过私有频道提供账户更新。每个订阅均有对应的取消订阅方法。
公共频道
| 订阅 | 取消订阅 | 说明 |
|---|---|---|
SubscribeTrade | UnSubscribeTrade | 交易对的实时成交执行。 |
SubscribeKline | UnSubscribeKline | 交易对和时间间隔的实时 K 线更新。 |
SubscribeDiffDepth | UnSubscribeDiffDepth | 增量订单簿深度更新(差分流)。 |
SubscribeBookDepth | UnSubscribeBookDepth | 指定档位的完整订单簿深度快照。 |
SubscribeBookTicker | UnSubscribeBookTicker | 指定交易对的最优买/卖价和数量。 |
SubscribeBookTickerBatch | UnSubscribeBookTickerBatch | 所有交易对的最优买/卖价汇总流。 |
SubscribeMiniTickers | UnSubscribeMiniTickers | 所有交易对的精简行情数据(价格、成交量)。 |
SubscribeMiniTicker | UnSubscribeMiniTicker | 指定交易对的精简行情数据。 |
私有频道
私有频道需要认证,提供账户活动的实时更新。通过 MEXCUserDataStreams.UserStream 属性启用用户数据流。
| 订阅 | 取消订阅 | 说明 |
|---|---|---|
SubscribeAccountUpdate | UnSubscribeAccountUpdate | 发生变动时的账户余额和持仓更新。 |
SubscribeAccountDeals | UnSubscribeAccountDeals | 订单成交时的实时通知(成交执行)。 |
SubscribeAccountOrders | UnSubscribeAccountOrders | 订单状态变化(已下单、部分成交、全部成交、取消)。 |
现货 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 提供永续期货合约的实时数据。所有频道均为公共频道,无需认证。每个订阅均有对应的取消订阅方法。
| 订阅 | 取消订阅 | 说明 |
|---|---|---|
SubscribeDeal | UnSubscribeDeal | 期货实时成交/交易执行。 |
SubscribeTickers | UnSubscribeTickers | 所有期货合约的行情数据。 |
SubscribeTicker | UnSubscribeTicker | 指定期货合约的行情数据。 |
SubscribeDepth | UnSubscribeDepth | 期货增量订单簿深度更新。 |
SubscribeDepthFull | UnSubscribeDepthFull | 期货完整订单簿深度快照。 |
SubscribeKline | UnSubscribeKline | 期货合约的实时 K 线更新。 |
SubscribeFundingRate | UnSubscribeFundingRate | 永续合约的实时资金费率更新。 |
SubscribeIndexPrice | UnSubscribeIndexPrice | 实时指数价格更新。 |
SubscribeFairPrice | UnSubscribeFairPrice | 用于强制平仓计算的实时公允/标记价格更新。 |
期货 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.ApiKey | String | 用于现货已认证请求的 MEXC API 密钥。 |
MEXCAPI.ApiSecret | String | 用于请求签名的 MEXC API 密钥。 |
MEXCUserDataStreams.UserStream | Boolean | 设为 True 启用私有用户数据流,接收账户更新、成交和订单事件。 |
期货配置
| 属性 | 类型 | 说明 |
|---|---|---|
MEXCFuturesAPI.ApiKey | String | 用于期货已认证请求的 MEXC API 密钥。 |
MEXCFuturesAPI.ApiSecret | String | 用于期货请求签名的 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 速率限制。
