MEXC 是一家全球加密货币交易所,通过安全的 WebSocket 连接提供流式市场和账户数据。
WebSocket 现货 API 遵循 Market Streams 和 User 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;
该组件为每个公开现货频道提供辅助方法。调用 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 方法。
| 方法 | 描述 |
| 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 | 提供历史成交数据,支持可选的 limit 和 fromId 过滤器。 |
| GetAggregateTrades | 通过 /api/v3/aggTrades 返回压缩/聚合的成交记录,支持可选的 limit、fromId、startTime 和 endTime 过滤器。 |
| GetKlines | 从 /api/v3/klines 下载蜡烛图数据,支持时间范围和数量限制过滤。 |
| GetAveragePrice | 从 /api/v3/avgPrice 返回当前加权平均价格。 |
| Get24hrTicker | 通过 /api/v3/ticker/24hr 检索一个或所有交易对的 24 小时行情统计数据。 |
| GetPriceTicker | 使用 /api/v3/ticker/price 获取最新价格;传入空交易对可获取所有交易对的价格。 |
| GetBookTicker | 从 /api/v3/ticker/bookTicker 获取最优买卖报价,支持单一品种或全交易所请求。 |
私有端点需要有效的 API 密钥和已签名的查询字符串。组件自动追加时间戳、recvWindow 和 HMAC 签名。
| 方法 | 描述 |
| GetAccountInformation | 从 /api/v3/account 返回余额和权限。 |
| GetOpenOrders | 列出当前未成交订单(可选择按交易对过滤)。 |
| GetAllOrders | 检索带有可选时间和数量过滤器的历史订单。 |
| GetOrder | 通过提供 orderId 或 origClientOrderId 查询特定订单的状态。 |
| GetMyTrades | 列出私有交易执行记录,支持可选的 limit、fromId、startTime 和 endTime 过滤器。 |
| NewOrder | 在 /api/v3/order 下单(市价、限价、止损等),可选参数包括 timeInForce、quantity、quoteOrderQty、price、newClientOrderId、stopPrice、icebergQty 及额外参数。 |
| TestNewOrder | 向 /api/v3/order/test 发送仅验证请求,接受与 NewOrder 相同的参数集。 |
| CancelOrder | 通过 /api/v3/order 使用 orderId 或 origClientOrderId 取消特定订单。 |
| CancelAllOrders | 通过 /api/v3/openOrders 批量取消某个交易对的所有未成交订单。 |
| GetSubAccounts | 列出托管子账户(/api/v3/sub-account/list)。 |
| GetSubAccountAssets | 返回特定子账户的余额。 |
| TransferSubAccount | 通过 /api/v3/sub-account/transfer 在子账户之间划转资产;提供金额,并可选择提供划转 类型。 |
| GetDepositAddress | 通过此端点请求获取存款地址,支持可选的 network 过滤器。 |
| GetDepositHistory | 获取存款记录,支持可选的 coin、status、startTime 和 endTime 过滤条件。 |
| GetWithdrawHistory | 按 coin、status 和可选时间范围过滤的提款历史记录。 |
| 提款 | 通过 /api/v3/capital/withdraw/apply 提交提现请求,包括必填的 coin、address 和 amount,以及可选的 network、addressTag、withdrawOrderId 和其他参数。 |
| BatchOrders | 在单个请求中为多个标的提交批量订单。 |
| GetTradeFee | 获取特定交易对的交易手续费率。 |
| GetDepositHistory | 获取存款记录,支持可选的 coin、status、startTime 和 endTime 过滤条件。 |
| CancelWithdraw | 通过提款 ID 取消待处理的提款请求。 |
| CreateInternalTransfer | 在账户内部转移资产。 |
| GetTransferHistory | 获取账户间内部划转的历史记录。 |