MEXC 的永续和交割合约提供了专用的流式 API,详见官方 期货 WebSocket 规范。TsgcWSAPI_MEXC_Futures 组件封装了消费实时衍生品数据所需的连接、登录握手和主题管理。
MEXC 还为衍生品交易维护了一个 REST 接口。sgcHTTP_API_MEXC 中包含的 TsgcHTTP_API_MEXC_Futures 组件通过与官方端点一一对应的 HTTP 辅助方法来补充 WebSocket 数据流。
Futures WebSocket 端点为 wss://contract.mexc.com/edge。消息以 JSON 对象编码,交易所要求定期发送 ping/pong 帧,这由组件自动处理。
要接收私有通知(订单和账户数据),您必须进行身份验证。在激活 WebSocket 客户端之前,请设置 MEXCAPI.ApiKey 和 MEXCAPI.ApiSecret。凭据存在时,组件将在套接字连接后立即签署登录请求(HMAC SHA256)。
var
WSClient: TsgcWebSocketClient;
Futures: TsgcWSAPI_MEXC_Futures;
begin
WSClient := TsgcWebSocketClient.Create(nil);
Futures := TsgcWSAPI_MEXC_Futures.Create(nil);
Futures.Client := WSClient;
Futures.MEXCAPI.ApiKey := 'YOUR_KEY';
Futures.MEXCAPI.ApiSecret := 'YOUR_SECRET';
if WSClient.Connect then
Futures.SubscribeDepth('BTC_USDT', True);
end;
以下处理程序记录订阅确认并打印传入的深度快照:
procedure TMainForm.MEXCSubscribed(Sender: TObject; const aChannel, aRaw: string);
begin
Memo1.Lines.Add('Subscribed to ' + aChannel);
end;
procedure TMainForm.MEXCMessage(Sender: TObject; const aChannel, aRaw: string);
begin
if SameText(aChannel, 'push.depth') then
Memo1.Lines.Add(aRaw);
end;
每个辅助方法将 订阅/取消订阅请求封装为官方 API 所描述的格式。使用对应的 UnSubscribe* 方法可取消流。
| 方法 | 参数 | 描述 |
| SubscribeDeal | 交易对 | 在合约上执行的交易(频道:deal)。 |
| SubscribeTickers | – | 所有合约的全局行情统计。 |
| SubscribeTicker | 交易对 | 单个合约的行情摘要。 |
| SubscribeDepth | Symbol, Compress | 增量订单簿更新 |
| SubscribeDepthFull | Symbol, Level | 可配置深度级别数的完整深度快照(默认 20)。 |
| SubscribeKline | Symbol, Interval | 支持的时间框架(Min1、Min5、Min15、Min30、Min60、Hour4、Hour12、Day1、Week1、Month1)的 K 线数据。 |
| SubscribeFundingRate | 交易对 | 最新资金费率公告。 |
| SubscribeIndexPrice | 交易对 | 标的指数价格数据流。 |
| SubscribeFairPrice | 交易对 | 交易所推送的标记(公允)价格更新。 |
服务器确认请求时,OnMEXCSubscribed 事件将以通道名称(例如 rs.sub.depth.BTC_USDT)触发。错误通过 OnMEXCError 转发,包含服务器消息以供故障排查。
私有通道需要有效的 API 密钥。提供凭据后,组件将自动进行身份验证。
| 方法 | 描述 |
| SubscribePersonalOrder | 个人订单更新。 |
| SubscribePersonalOrderDeal | 个人订单成交更新。 |
| SubscribePersonalPosition | 个人持仓更新。 |
| SubscribePersonalPlanOrder | 个人计划(触发器)订单更新。 |
| SubscribePersonalStopOrder | 个人止损订单更新。 |
| SubscribePersonalStopPlanOrder | 个人停止计划订单更新。 |
| SubscribePersonalRiskLimit | 个人风险限额更新。 |
| SubscribePersonalADLLevel | 个人 ADL(自动去杠杆)级别更新。 |
| SubscribePersonalAsset | 个人资产更新。 |
公开可用的 REST 方法。
| 方法 | 描述 |
| GetPing | 通过 /api/v1/ping 检查 API 可达性。 |
| GetServerTime | 从 /api/v1/time 返回服务器时间戳。 |
| GetContracts | 提供可用合约列表(/api/v1/contract/detail)。 |
| GetDepth | 通过 /api/v1/contract/depth 下载订单簿深度;使用可选 limit 参数(默认 50)选择级别数。 |
| GetDeals | 通过 /api/v1/contract/deals 检索最近的交易,可选 limit 参数(默认 100)。 |
| GetKlines | 通过 /api/v1/contract/kline 返回 K 线数据,支持可选的 startTime、endTime 和 limit 过滤条件(默认 200)。 |
| GetIndexPrice | 获取请求交易对的底层指数价格(/api/v1/contract/indexPrice)。 |
| GetFairPrice | 从 /api/v1/contract/fairPrice 返回合约的公允(标记)价格。 |
| GetFundingRate | 使用 /api/v1/contract/fundingRate 报告交易对的最新资金费率。 |
| GetAllTickers | 获取所有期货合约行情及实时价格摘要。 |
| GetFundingRateHistory | 获取合约的历史资金费率记录。 |
| GetFairPriceKline | 获取合约的公允价格(标记价格)K 线/蜡烛图数据。 |
| GetIndexPriceKline | 获取某一合约的指数价格K线/蜡烛图数据。 |
私有衍生品端点需要 API 凭据。组件会自动使用时间戳和 recvWindow 对每个请求进行签名。
| 方法 | 描述 |
| GetAccountAssets | 从 /api/v1/private/account/assets 返回保证金余额。 |
| GetPositionList | 通过 /api/v1/private/position/list 列出当前持仓,可选择按 symbol 过滤。 |
| SetPositionLeverage | 更新某交易对的杠杆,如果提供了保证金模式,也一并更新。 |
| PlaceOrder | 在 /api/v1/private/order 上下期货订单,需提供 symbol、side、positionSide、type 和 quantity,以及可选的 price、clientOrderId 和额外参数。 |
| CancelOrder | 使用 /api/v1/private/order/cancel 通过 orderId 或 clientOrderId 取消特定订单。 |
| CancelAllOrders | 通过 /api/v1/private/order/cancel-all 取消某个交易对的所有未成交订单。 |
| GetOpenOrders | 通过 /api/v1/private/order/list/open 列出当前未成交订单,支持可选的品种过滤器。 |
| GetOrderHistory | 获取订单历史(/api/v1/private/order/list/history),支持可选的交易对、时间范围和条数限制参数。 |
| GetFundingHistory | 从 /api/v1/private/account/funding 返回过去的资金支付,支持可选的 startTime、endTime 和 limit 过滤器。 |
| GetOpenPositions | 获取所有当前持仓。 |
| ChangeMargin | 更改某持仓的保证金金额。 |
| GetPositionMode | 获取当前持仓模式(单向或对冲模式)。 |
| ChangePositionMode | 在单向和对冲模式之间更改持仓模式。 |
| PlaceBatchOrder | 在单个批量请求中下多个期货订单。 |
| GetOrderDetail | 获取特定订单的详细信息。 |
| GetOrderDealDetails | 获取特定订单的成交/交易详情。 |
| PlaceTriggerOrder | 下达在满足条件时执行的触发(计划)订单。 |
| CancelTriggerOrder | 取消特定触发订单。 |
| CancelAllTriggerOrders | 取消所有未成交的触发委托单。 |
| GetTriggerOrders | 获取触发(计划)订单列表。 |
| GetStopOrders | 获取止损单列表。 |
| CancelStopOrder | 取消特定止损单。 |
| CancelAllStopOrders | 取消所有未结止损订单。 |