API MEXC

MEXC 是一家全球加密货币交易所,通过安全的 WebSocket 连接提供流式市场和账户数据。

 

WebSocket 现货 API 遵循 Market StreamsUser Data Streams 文档中发布的规范。市场频道以 Protocol Buffers 帧传送,而私有流使用 JSON。TsgcWSAPI_MEXC 组件管理连接生命周期、认证及监听密钥维护,使应用程序可以专注于处理推送数据。

 

除了通过 WebSocket 进行流式传输外,该工具包还提供完整的 Spot HTTP API。TsgcHTTP_API_MEXC_Spot 组件(单元 sgcHTTP_API_MEXC)封装了所有官方 REST 端点,使应用程序可以查询市场数据或通过签名请求进行交易。

 

组件配置

基础 WebSocket 端点为 wss://wbs-api.mexc.com/ws。当 MEXCUserDataStreams.UserStream 启用且提供了有效的 API 密钥时,组件会自动请求监听密钥并将其附加到连接 URL 中。

 

在窗体上(或通过代码创建)拖放一个 TsgcWebSocketClient 和一个 TsgcWSAPI_MEXC 组件,将客户端实例分配给 API 组件,然后激活客户端以启动会话。

 

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;

 

属性

 

事件

 

以下示例演示如何解码交易帧:

 

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;

 

WebSocket 订阅方法

该组件为每个公开现货频道提供辅助方法。调用 Subscribe* 方法开始流式传输数据,调用相应的 UnSubscribe* 停止。

 

公共频道

方法 参数 描述
SubscribeTrade Symbol, Interval (ms) 以 Protobuf publicdeals 格式传送的聚合成交执行数据。
SubscribeKline Symbol, Interval 可配置时间间隔(1 分钟至 1 个月)的蜡烛图更新。
SubscribeDiffDepth Symbol, Interval (ms) 用于本地订单簿维护的订单簿增量深度差异数据。
SubscribeBookDepth Symbol,Levels 以请求的深度(默认为 5)定期快照限价订单簿。
SubscribeBookTicker Symbol, Interval (ms) 单个交易对的最优买卖价更新。
SubscribeBookTickerBatch UTC 标志 多个交易对的聚合最优买卖价更新。
SubscribeMiniTickers UTC 标志 所有活跃仪器的滚动 24 小时迷你行情统计。
SubscribeMiniTicker 交易对,UTC 标志 单个品种的迷你行情。

 

私有频道

私有主题需要有效的 API 密钥。组件使用活跃的监听密钥进行订阅,并定期更新。

 

方法 描述
SubscribeAccountUpdate 账户余额和持仓变化。
SubscribeAccountDeals 已成交订单的执行报告。
SubscribeAccountOrders 订单生命周期更新(新建、已取消、已拒绝等)。

 

使用相应的 UnSubscribe* 方法终止数据流。组件自动发送 PING 命令并验证返回的 PONG 以监控连接状态。

 

 

公开 REST 端点

公开可用的 REST 方法。

 

方法 描述
Ping 连接检查,调用 /api/v3/ping,当交易所回复空对象时返回 True
GetServerTime /api/v3/time 获取当前交易所时间戳。
GetExchangeInformation /api/v3/exchangeInfo 返回交易规则和交易对元数据。
GetOrderBook /api/v3/depth 下载订单薄快照;设置可选的 limit 参数以控制层级数量(默认 100)。
GetTrades /api/v3/trades 检索最近的公共成交,可选指定 limit(默认 100)。
GetHistoricalTrades 提供历史成交数据,支持可选的 limitfromId 过滤器。
GetAggregateTrades 通过 /api/v3/aggTrades 返回压缩/聚合的成交记录,支持可选的 limitfromIdstartTimeendTime 过滤器。
GetKlines /api/v3/klines 下载蜡烛图数据,支持时间范围和数量限制过滤。
GetAveragePrice /api/v3/avgPrice 返回当前加权平均价格。
Get24hrTicker 通过 /api/v3/ticker/24hr 检索一个或所有交易对的 24 小时行情统计数据。
GetPriceTicker 使用 /api/v3/ticker/price 获取最新价格;传入空交易对可获取所有交易对的价格。
GetBookTicker /api/v3/ticker/bookTicker 获取最优买卖报价,支持单一品种或全交易所请求。

 

私有 REST 端点

私有端点需要有效的 API 密钥和已签名的查询字符串。组件自动追加时间戳、recvWindow 和 HMAC 签名。

 

方法 描述
GetAccountInformation /api/v3/account 返回余额和权限。
GetOpenOrders 列出当前未成交订单(可选择按交易对过滤)。
GetAllOrders 检索带有可选时间和数量过滤器的历史订单。
GetOrder 通过提供 orderIdorigClientOrderId 查询特定订单的状态。
GetMyTrades 列出私有交易执行记录,支持可选的 limitfromIdstartTimeendTime 过滤器。
NewOrder /api/v3/order 下单(市价、限价、止损等),可选参数包括 timeInForcequantityquoteOrderQtypricenewClientOrderIdstopPriceicebergQty 及额外参数。
TestNewOrder /api/v3/order/test 发送仅验证请求,接受与 NewOrder 相同的参数集。
CancelOrder 通过 /api/v3/order 使用 orderIdorigClientOrderId 取消特定订单。
CancelAllOrders 通过 /api/v3/openOrders 批量取消某个交易对的所有未成交订单。
GetSubAccounts 列出托管子账户(/api/v3/sub-account/list)。
GetSubAccountAssets 返回特定子账户的余额。
TransferSubAccount 通过 /api/v3/sub-account/transfer 在子账户之间划转资产;提供金额,并可选择提供划转 类型
GetDepositAddress 通过此端点请求获取存款地址,支持可选的 network 过滤器。
GetDepositHistory 获取存款记录,支持可选的 coinstatusstartTimeendTime 过滤条件。
GetWithdrawHistory coinstatus 和可选时间范围过滤的提款历史记录。
提款 通过 /api/v3/capital/withdraw/apply 提交提现请求,包括必填的 coinaddressamount,以及可选的 networkaddressTagwithdrawOrderId 和其他参数。
BatchOrders 在单个请求中为多个标的提交批量订单。
GetTradeFee 获取特定交易对的交易手续费率。
GetDepositHistory 获取存款记录,支持可选的 coinstatusstartTimeendTime 过滤条件。
CancelWithdraw 通过提款 ID 取消待处理的提款请求。
CreateInternalTransfer 在账户内部转移资产。
GetTransferHistory 获取账户间内部划转的历史记录。