跳到主要内容

WebSocket API

WebSocket是HTML5一种新的协议(Protocol)。它实现了客户端与服务器全双工通信,使得数据可以快速地双向传播。通过一次简单的握手就可以建立客户端和服务器连接,服务器根据业务规则可以主动推送信息给客户端。其优点如下:

  1. 客户端和服务器进行数据传输时,请求头信息比较小,大概2个字节。
  2. 客户端和服务器皆可以主动地发送数据给对方。
  3. 不需要多次创建TCP请求和销毁,节约宽带和服务器的资源。

原生ws连接地址

  • wss://contract.mexc.com/edge

数据交互命令详解

发送ping消息

{
"method": "ping"
}

服务端返回

{
"channel": "pong",
"data": 1587453241453
}

订阅/取消订阅数据命令列表(除个人相关命令列表之外,其余都不需要做ws认证)

1分钟以内未收到客户端ping,将断开该客户端连接,建议10~20秒发送一次ping

订阅过滤

取消默认推送示例

{
"subscribe": false,
"method": "login",
"param": {
"apiKey": "mxU1TzSmRDW1o5AsE",
"signature": "8c957a757ea31672eca05cb652d26bab7f46a41364adb714dda5475264aff120",
"reqTime": "1611038237237"
}
}

只要资产

{
"method":"personal.filter",
"param":{
"filters":[
{
"filter":"asset"
}
]
}
}

只要ADL等级

{
"method":"personal.filter",
"param":{
"filters":[
{
"filter":"adl.level"
}
]
}
}

只要所有的成交单

{
"method":"personal.filter",
"param":{
"filters":[
{
"filter":"order.deal",
"rules":[]
}
]
}
}

或者

{
"method":"personal.filter",
"param":{
"filters":[
{
"filter":"order.deal"
}
]
}
}

只要单个合约的成交单

{
"method":"personal.filter",
"param":{
"filters":[
{
"filter":"order.deal",
"rules":[
"BTC_USDT"
]
}
]
}
}

混合使用

{
"method":"personal.filter",
"param":{
"filters":[
{
"filter":"order",
"rules":[
"BTC_USDT"
]
},
{
"filter":"order.deal",
"rules":[
"EOS_USDT",
"ETH_USDT",
"BTC_USDT"
]
},
{
"filter":"position",
"rules":[
"EOS_USDT",
"BTC_USDT"
]
},
{
"filter":"asset"
}
]
}
}

登录之后会推送所有私有数据:order订单、order.deal成交单、position持仓、plan.order计划委托单、stop.order止盈止损单、stop.planorder止盈止损计划委托单、risk.limit风险限额、adl.level ADL等级、asset资产

1、如果要取消默认推送,登录时新加参数: "subscribe":false,默认为true;

2、登录之后通过发送 personal.filter 事件来过滤自己需要的数据,如果想要恢复推送所有数据,可发送: {"method":"personal.filter"} 或者 {"method":"personal.filter","param":{"filters":[]}}

3、filter可用key:order、order.deal、position、plan.order、stop.order、stop.planorder、risk.limit、adl.level、asset 固定值,不可更改,若有错误会提示

其中asset和adl.level不支持过滤单个币种或者单个合约,其他均可以过滤单个合约

后面发送的filter事件会覆盖前面的

公共频道

Tickers

订阅

{
"method": "sub.tickers",
"param": {}
}

如需返回明文(后面订阅一样):

{
"method": "sub.tickers",
"param": {},
"gzip": false
}

取消订阅

{
"method": "unsub.tickers",
"param": {}
}

数据示例

{"channel":"push.tickers",
"data":[
{"fairPrice":183.01,
"lastPrice":183,
"riseFallRate":-0.0708,
"symbol":"BSV_USDT",
"volume24":200,
"maxBidPrice":7073.42,
"minAskPrice":6661.37},
{"fairPrice":220.22,
"lastPrice":220.4,
"riseFallRate":-0.0686,
"symbol":"BCH_USDT",
"volume24":200,
"maxBidPrice":7073.42,
"minAskPrice":6661.37}
]}

获取平台全部永续合约的最新成交价、买一价、卖一价和24交易量,无需用户登录,订阅后1秒发送一次。

响应参数:

参数名类型说明
symbolstring合约名
timestamplong成交时间
lastPricedecimal最新价
volume24decimal24小时成交量,按张数统计
amount24decimal24小时成交额,按金额统计
riseFallRatedecimal涨跌幅
fairPricedecimal合理价
indexPricedecimal指数价
maxBidPricedecimal最大买入价格
minAskPricedecimal最低卖出价格
lower24Pricedecimal24小时最低价
high24Pricedecimal24小时最高价

获取单个ticker

订阅

{
"method":"sub.ticker",
"param":{
"symbol":"BTC_USDT"
}
}

取消订阅

{
"method":"unsub.ticker",
"param":{
"symbol":"BTC_USDT"
}
}

数据示例

{"channel":"push.ticker",
"data":{
"ask1":6866.5,
"bid1":6865,
"contractId":1,
"fairPrice":6867.4,
"fundingRate":0.0008,
"high24Price":7223.5,
"indexPrice":6861.6,
"lastPrice":6865.5,
"lower24Price":6756,
"maxBidPrice":7073.42,
"minAskPrice":6661.37,
"riseFallRate":-0.0424,
"riseFallValue":-304.5,
"symbol":"BTC_USDT",
"timestamp":1587442022003,
"holdVol":2284742,
"volume24":164586129},
"symbol":"BTC_USDT"
}

获取某个合约的最新成交价、买一价、卖一价和24交易量,无需用户登录,有成交数据就推送,订阅后1秒发送一次。

响应参数:

参数名类型说明
symbolstring合约名
timestamplong成交时间
lastPricedecimal最新价
bid1decimal买一价
ask1decimal卖一价
holdVoldecimal总持仓量
fundingRatedecimal资金费率
riseFallRatedecimal涨跌幅
riseFallValuedecimal涨跌额
volume24decimal24小时成交量,按张数统计
amount24decimal24小时成交额,按金额统计
fairPricedecimal合理价
indexPricedecimal指数价
maxBidPricedecimal最大买入价格
minAskPricedecimal最低卖出价格
lower24Pricedecimal24小时最低价
high24Pricedecimal24小时最高价

成交

订阅

{
"method":"sub.deal",
"param":{
"symbol":"BTC_USDT"
}
}

取消订阅

{
"method":"unsub.deal",
"param":{
"symbol":"BTC_USDT"
}
}

数据示例

{
"symbol": "BTC_USDT",
"data": [{
"p": 115309.8,
"v": 55,
"T": 2,
"O": 3,
"M": 1,
"t": 1755487578276
}, {
"p": 115309.8,
"v": 11,
"T": 1,
"O": 3,
"M": 1,
"t": 1755487578275
}],
"channel": "push.deal",
"ts": 1755487578276
}

获取最近的成交数据,无需用户登录,有成交数据就推送。 成交数据订阅,默认启用合并,如不需启用,订阅时请将compress设置为false。

响应参数:

参数名类型说明
pdecimal成交价
vdecimal数量
Tint成交方向,1:买,2:卖
Oint是否是开仓,1:新增仓位,2:减少仓位,3:仓位不变。当O为1的时候, vol是新增的持仓量
Mint是否为自成交,1:是,2:否
tlong成交时间

深度

订阅

{
"method":"sub.depth",
"param":{
"symbol":"BTC_USDT"
}
}

取消订阅

{
"method":"unsub.depth",
"param":{
"symbol":"BTC_USDT"
}
}

数据示例

{
"channel":"push.depth",
"data":{
"asks":[
[
6859.5,
3251,
1
]
],
"bids":[
],
"version":96801927
},
"symbol":"BTC_USDT",
"ts":1587442022003
}

获取某个合约的深度数据推送,订阅后200ms发送一次。

响应参数:

参数名类型说明
asksList<Numeric[]>卖方深度
bidsList<Numeric[]>买方深度
versionlong版本号
备注: [411.8, 10, 1] 411.8为价格,10为此价格的合约张数,1为订单数量

深度-指定最小金额单位

订阅

{"method":"sub.depth.step","param":{"symbol":"BTC_USDT","step":"10"}}

备注: 10表示以10为金额的最小比例单位,如100010,100020,100030 拆分深度数据

取消订阅

{"method":"unsub.depth.step","param":{"symbol":"BTC_USDT","step":"10"}}

数据示例

{
"channel": "push.depth.step",
"data": {
"askMarketLevelPrice": 111089.4,
"asks": [
[111090, 398676, 26],
[111100, 410175, 8]
],
"bidMarketLevelPrice": 111085.5,
"bids": [
[111080, 461204, 35],
[111070, 386809, 3]
],
"ct": 1760950364388,
"version": 27883254360
},
"symbol": "BTC_USDT"
}

获取指定最小金额单位合约的深度数据推送,订阅后200ms发送一次

响应参数:

参数名类型说明
asksList<Numeric[]>卖方深度
bidsList<Numeric[]>买方深度
askMarketLevelPricedecimal愿意卖出的最高价
bidMarketLevelPricedecimal愿意买入的最高价
versionlong版本号

备注: [111090,398676,26] 111090为价格,398676为此价格的合约张数,26为订单数量

K线数据

订阅

{
"method":"sub.kline",
"param":{
"symbol":"BTC_USDT",
"interval":"Min60"
},
"gzip":false
}

取消订阅

{
"method":"unsub.kline",
"param":{
"symbol":"BTC_USDT"
}
}

数据示例

{
"channel": "push.kline",
"data": {
"a": 233.740269343644737245,
"c": 6885,
"h": 6910.5,
"interval": "Min60",
"l": 6885,
"o": 6894.5,
"q": 1611754,
"symbol": "BTC_USDT",
"t": 1587448800
},
"symbol": "BTC_USDT"
}

获取合约的K线数据,有更新就推送。

interval可选参数: Min1、Min5、Min15、Min30、Min60、Hour4、Hour8、Day1、Week1、Month1

响应参数:

参数名类型说明
symbolstring合约名
intervalstring间隔: Min1、Min5、Min15、Min30、Min60、Hour4、Hour8、Day1、Week1、Month1
adecimal总成交金额
qdecimal总成交量
odecimal开盘价
cdecimal收盘价
hdecimal最高价
ldecimal最低价
vdecimal总成交量
rodecimal真实开盘价
rcdecimal真实收盘价
rhdecimal真实最高价
rldecimal真实最低价
tlong交易时间,单位:秒(s),为窗口的开始时间(windowStart)

资金费率

订阅

{
"method":"sub.funding.rate",
"param":{
"symbol":"BTC_USDT"
}
,"gzip":false
}

取消订阅

{
"method":"unsub.funding.rate",
"param":{
"symbol":"BTC_USDT"
}
}

数据示例

{
"channel":"push.funding.rate",
"data":{
"rate":0.001,
"symbol":"BTC_USDT"
},
"symbol":"BTC_USDT",
"ts":1587442022003
}

获取合约资金费率,有更新就推送。

响应参数:

参数名类型说明
symbolstring合约名
fundingRatedecimal资金费率
nextSettleTimelong下一次结算时间

指数价格

订阅

正向及方向合约都使用同一个symbol,例如BTC_USD反向合约,订阅指数价格时,使用BTC_USDT

{
"method":"sub.index.price",
"param":{
"symbol":"BTC_USDT"
}
,"gzip":false
}

取消订阅

{
"method":"unsub.index.price",
"param":{
"symbol":"BTC_USDT"
}
}

数据示例

{
"channel":"push.index.price",
"data":{
"price":0.001,
"symbol":"BTC_USDT"
},
"symbol":"BTC_USDT",
"ts":1587442022003
}

获取指数价格,指数价格有变化时就会推送一次数据。

响应参数:

参数名类型说明
symbolstring合约名
pricedecimal价格

合理价格

订阅

{
"method":"sub.fair.price",
"param":{
"symbol":"BTC_USDT"
}
,"gzip":false
}

取消订阅

{
"method":"unsub.fair.price",
"param":{
"symbol":"BTC_USDT"
}
}

数据示例

{
"channel":"push.fair.price",
"data":{
"price":0.001,
"symbol":"BTC_USDT"
},
"symbol":"BTC_USDT",
"ts":1587442022003
}

获取合约的合理价格,有更新就推送。

响应参数:

参数名类型说明
symbolstring合约名
pricedecimal价格

合约数据

订阅

{"method":"sub.contract"}

取消订阅

{"method":"unsub.contract"}

数据示例

{
"channel": "push.contract",
"data": {
"amountScale": 4,
"askLimitPriceRate": 0.2,
"baseCoin": "CLO",
"baseCoinName": "CLO",
"bidLimitPriceRate": 0.2,
"conceptPlate": [],
"conceptPlateId": [],
"contractSize": 10,
"depthStepList": ["0.0001", "0.001", "0.01", "0.1"],
"displayName": "CLO_USDT永续",
"displayNameEn": "CLO_USDT PERPETUAL",
"feeRateMode": "NORMAL",
"futureType": 1,
"indexOrigin": ["MEXC_FUTURE", "MEXC", "KUCOIN"],
"initialMarginRate": 0.02,
"isHidden": false,
"isHot": false,
"isNew": false,
"liquidationFeeRate": 0.0002,
"limitMaxVol": 9000,
"maintenanceMarginRate": 0.01,
"makerFeeRate": 0,
"maxLeverage": 50,
"maxNumOrders": [200, 50],
"maxVol": 9000,
"minLeverage": 1,
"minVol": 1,
"openingCountdownOption": 1,
"openingTime": 1760440200000,
"positionOpenType": 3,
"priceCoefficientVariation": 0.4,
"priceScale": 4,
"priceUnit": 0.0001,
"quoteCoin": "USDT",
"quoteCoinName": "USDT",
"riskBaseVol": 9000,
"riskIncrImr": 0.005,
"riskIncrMmr": 0.005,
"riskIncrVol": 9000,
"riskLevelLimit": 1,
"riskLimitMode": "INCREASE",
"riskLimitType": "BY_VOLUME",
"riskLongShortSwitch": 0,
"settleCoin": "USDT",
"state": 0,
"symbol": "CLO_USDT",
"takerFeeRate": 0.0002,
"triggerProtect": 0.1,
"volScale": 0,
"volUnit": 1
},
"symbol": "CLO_USDT",
"ts": 1760942212002
}

获取合约数据,有更新就推送。

响应参数:

参数名类型说明
symbolstring合约名,如BTC_USDT
displayNamestring展示合约名,如BTC_USDT永续
displayNameEnstring展示合约英文名,如BTC_USDT PERPETUAL
positionOpenTypeint开仓模式,1 表示全仓和逐仓; 2表示全仓;3表示逐仓
baseCoinstring标的货币 如 BTC
quoteCoinstring标价货币 如 USDT
baseCoinNamestring标的货币名称
quoteCoinNamestring标价货币名称
futureTypeint1 PERPETUAL ,2 DAILY
settleCoinstring结算货币 如 USDT
contractSizedecimal合约面值
minLeverageint杠杆倍数下限
maxLeverageint杠杆倍数上限
priceScaleint价格小数位数
volScaleint交易量小数位数
amountScaleint交易金额小数位数
priceUnitdecimal价格的最小步进单位
volUnitdecimal交易量的最小步进单位
minVoldecimal订单张数下限
maxVoldecimal订单张数上限
limitMaxVoldecimal限价订单张数最大值
bidLimitPriceRatedecimal合约下单价格限制-卖家
askLimitPriceRatedecimal合约下单价格限制-买家
takerFeeRatedecimaltaker 费用
makerFeeRatedecimalmaker 费用
maintenanceMarginRatedecimal维持保证金率
initialMarginRatedecimal初始保证金率
riskBaseVoldecimal基本张数
riskIncrVoldecimal递增张数
riskIncrMmrdecimal维持保证金率递增量
riskIncrImrdecimal初始保证金率递增量
riskLevelLimitdecimal风险限额档位数
priceCoefficientVariationdecimal合理价格偏离指数价格系数
stateint0:启用、1:交割、2:交割完成、3:下线、4:暂停
isNewboolean是否是新合约
isHotboolean是否是热门合约
isHiddenboolean是否是隐藏合约
triggerProtectdecimal价差保护阈值
riskLongShortSwitchint多空风险限额是否独立,0:关闭;1:启动
riskBaseVolLongdecimal多方向订单基本张数
riskIncrVolLongdecimal多方向订单递增张数
riskBaseVolShortdecimal空方向订单基本张数
riskIncrVolShortdecimal空方向订单递增张数
openingCountdownOptionint开盘倒计时选项 1-显示开盘时间和倒计时, 2-仅显示开盘时间, 3-不显示开盘时间和倒计时
openingTimelong开盘时间 时间戳
liquidationFeeRatedecimal强平手续费率
tieredDealAmountdecimal交易金额
tieredEffectiveDayint有效天数
tieredExcludeZeroFeebooleanfalse:不排除,true:排除;是否排除0费率交易额
tieredAppointContractboolean是否指定合约;false:不指定;true:指定
tieredExcludeContractIdboolean是否包含合约; false:不包含,true:包含

事件合约

订阅

{"method":"sub.event.contract"}

取消订阅

{"method":"unsub.event.contract"}

获取事件合约,有更新就推送。

响应参数:

参数名类型说明
contractIdstring合约id
symbolstring合约名,如BTC_USDT
baseCoinstring标的货币,如BTC
quoteCoinstring标价货币,如USDT
baseCoinNamestring标的货币名称
quoteCoinNamestring标价货币名称
settleCoinstring结算货币
baseCoinIconUrlstring标的货币
baseCoinNamestring标的货币图标配置
investMinAmountdecimal最小投入金额
investMaxAmountdecimal最大投入金额
amountScaleint下单数量精度
payRateScaleint支付率精度
indexPriceScaleint指数价格精度
availableScaleint可用精度精度

私有频道

签名方式:

api_key和req_time拼接,将得到的参数字符串用HMAC SHA256进行加密。api_key和sec_key分别为申请api时的ACCESS KEY 和SECRET KEY。

签名字符串

"mx0aBYs33eIilxBW5C1657186536762"

登录认证

示例

{
"method":"login",
"param":{
"token":"token", // web和app需要传token进行完成认证
"apiKey":"apiKey", // openapi需要传此参数,参数构造方式参照openapi文档
"reqTime":"reqTime", // openapi需要传此参数,参数构造方式参照openapi文档
"signature":"signature" // openapi需要传此参数,参数构造方式参照openapi文档
}
}

响应参数:

示例

{
"channel":"rs.login",
"data":"success",
"ts":"1587442022003"
}

成功: 无,失败:返回对应错误信息,channel = rs.error

登录成功(channel = rs.login)

订单

数据示例

{
"channel": "push.personal.order",
"data": {
"orderId": 123456789,
"symbol": "BTC_USDT",
"positionId": 987654321,
"price": 45000.50,
"vol": 10,
"leverage": 20,
"side": 1,
"category": 1,
"orderType": 1,
"dealAvgPrice": 45000.00,
"dealVol": 5,
"orderMargin": 2250.00,
"usedMargin": 1125.00,
"takerFee": 0.1125,
"makerFee": 0.09,
"profit": 0,
"feeCurrency": "USDT",
"openType": 1,
"state": 2,
"errorCode": 0,
"externalOid": "ext_001",
"createTime": 1760942212000,
"updateTime": 1760942212000,
"remainVol": 5,
"positionMode": 1,
"reduceOnly": false,
"bboTypeNum": 0,
"makerFeeRate": 0.0002,
"takerFeeRate": 0.0004
},
"ts": 1760942212000
}

channel = push.personal.order

响应参数:

参数名类型说明
orderIdlong订单ID
symbolstring合约名
positionIdlong持仓id
pricedecimal委托价格
voldecimal委托数量
leveragelong杠杆倍数
sideint订单方向 1:开多,2:平空,3:开空,4:平多
categoryint订单类别 1:限价委托,2:强平代管委托,3:代管平仓委托,4:ADL减仓
orderTypeint订单类型 1:限价单,2:Post Only只做Maker,3:立即成交或立即取消,4:全部成交或者全部取消,5:市价单,6:市价转限价单
dealAvgPricedecimal成交均价
dealVoldecimal成交数量
orderMargindecimal委托保证金
usedMargindecimal已经使用的保证金
takerFeedecimal买单手续费
makerFeedecimal卖单手续费
profitdecimal平仓盈亏
feeCurrencystring手续费币种
openTypeint开仓类型,1逐仓,2全仓
stateint订单状态,1:等待接收,2未完成,3已完成,4已撤销,5无效
errorCodeint详见枚举定义:errorCode
externalOidstring外部订单号
createTimelong创建时间
updateTimelong修改时间
remainVoldecimal剩余数量
positionModeint持仓模式
reduceOnlyboolean只减仓
bboTypeNumint限价订单类型-BBO类型订单
makerFeeRatedecimalmaker手续费率
takerFeeRatedecimaltaker手续费率

资产

数据示例

{
"channel": "push.personal.asset",
"data": {
"currency": "USDT",
"positionMargin": 5000.0000,
"frozenBalance": 1000.0000,
"availableBalance": 9000.0000,
"bonus": 100.0000
},
"ts": 1760942212000
}

channel = push.personal.asset

响应参数:

参数名类型说明
currencystring币种
positionMargindecimal仓位保证金
frozenBalancedecimal冻结余额
availableBalancedecimal当前可用余额
bonusdecimal体验金

仓位

数据示例

{
"channel": "push.personal.position",
"data": {
"positionId": 123456789,
"symbol": "BTC_USDT",
"holdVol": 10,
"positionType": 1,
"openType": 1,
"state": 1,
"frozenVol": 0,
"closeVol": 0,
"holdAvgPrice": 45000.50,
"holdAvgPriceFullyScale": "45000.500000000000000000",
"closeAvgPrice": 0,
"openAvgPrice": 45000.50,
"openAvgPriceFullyScale": "45000.500000000000000000",
"liquidatePrice": 40000.00,
"oim": 2250.025,
"adlLevel": 1,
"im": 2250.025,
"holdFee": 0,
"realised": 0,
"leverage": 20,
"autoAddIm": false,
"pnl": 100.50,
"marginRatio": 0.2,
"newOpenAvgPrice": 45000.50,
"newCloseAvgPrice": 0,
"closeProfitLoss": 0,
"fee": 0,
"deductFeeList": [
{
"currency": "USDT",
"deductFee": 0.1125,
"convertSettleFee": 0.1125
}
],
"makerFeeRate": 0.0002,
"takerFeeRate": 0.0004,
"createTime": 1760942212000,
"updateTime": 1760942212000,
"version": 1
},
"ts": 1760942212000
}

channel = push.personal.position

响应参数:

参数名类型说明
positionIdlong持仓id
symbolstring合约名
holdVoldecimal持仓数量
positionTypeint仓位类型, 1多 2空
openTypeint开仓类型, 1逐仓 2全仓
stateint仓位状态,1持仓中2系统代持3已平仓
frozenVoldecimal冻结量
closeVoldecimal平仓量
holdAvgPricedecimal持仓均价
holdAvgPriceFullyScalestring全精度持仓均价
closeAvgPricedecimal平仓均价
openAvgPricedecimal开仓均价
openAvgPriceFullyScalestring全精度开仓均价
liquidatePricedecimal逐仓时的爆仓价
oimdecimal原始初始保证金
adlLevelintadl减仓等级
imdecimal初始保证金, 逐仓时可以加减此项以调节爆仓价
holdFeedecimal资金费, 正数表示得到,负数表示支出
realiseddecimal已实现盈亏
leverageint杠杆倍数
autoAddImboolean是否自动追加保证金
pnldecimal浮动盈亏
marginRatiodecimal保证金率
newOpenAvgPricedecimal开仓均价
newCloseAvgPricedecimal平仓均价
closeProfitLossdecimal平仓盈亏
feedecimal手续费
deductFeeListarray抵扣信息
makerFeeRatedecimalmaker手续费率
takerFeeRatedecimaltaker手续费率
createTimelong创建时间
updateTimelong修改时间
versionlong版本号

抵扣信息

数据示例

{
"channel": "push.personal.plan.order",
"data": {
"currency": "USDT",
"deductFee": 0.1125,
"convertSettleFee": 0.1125
},
"ts": 1760942212000
}

channel = push.personal.position

响应参数:

参数名类型说明
currencystring抵扣币种
deductFeedecimal抵扣币种手续费
convertSettleFeedecimal折算成结算币种手续费

计划委托订单

数据示例

{
"channel": "push.personal.plan.order",
"data": {
"id": 987654321,
"symbol": "BTC_USDT",
"leverage": 20,
"side": 1,
"triggerPrice": 46000.00,
"price": 45990.00,
"vol": 5,
"openType": 1,
"triggerType": 1,
"state": 1,
"executeCycle": 24,
"trend": 1,
"errorCode": 0,
"orderId": 0,
"orderType": 1,
"marketOrderLevel": 0,
"positionMode": 1,
"lossTrend": 1,
"profitTrend": 1,
"stopLossPrice": 44000.00,
"takeProfitPrice": 47000.00,
"reduceOnly": false,
"createTime": 1760942212000,
"updateTime": 1760942212000
},
"ts": 1760942212000
}

channel = push.personal.plan.order

响应参数:

参数名类型说明
idlong订单id
symbolstring合约名
leverageint杠杆倍数
sideint订单方向 1开多,2平空,3开空,4平多
triggerPricedecimal触发价
pricedecimal执行价格
voldecimal下单数量
openTypeint开仓类型,1:逐仓,2:全仓
triggerTypeint触发类型,1:大于等于,2:小于等于
stateint状态,1:未触发,2:已取消,3:已执行,4:已失效,5:执行失败
executeCycleint执行周期,单位:小时
trendint触发价格类型,1:最新价,2:合理价,3:指数价
errorCodeint详见枚举定义:errorCode
orderIdlong订单id,执行成功时返回
orderTypeint订单类型,1:限价单,2:Post Only只做Maker,3:立即成交或立即取消,4:全部成交或者全部取消,5:市价单
marketOrderLevelint市价订单的自定义档位
positionModeint用户设置持仓类型 默认0:历史订单无记录 2:单向 1:双向
lossTrendint止损参考价格类型 1 最新价 2合理价 3 指数价
profitTrendint止盈参考价格类型 1 最新价 2合理价 3 指数价
stopLossPricedecimal止损价
takeProfitPricedecimal止盈价
reduceOnlyboolean只减仓
createTimelong创建时间
updateTimelong修改时间

风险限额

数据示例

{
"channel": "push.personal.risk.limit",
"data": {
"symbol": "BTC_USDT",
"positionType": 1,
"riskSource": 1,
"level": 2,
"maxVol": 500,
"maxLeverage": 50,
"mmr": 0.02,
"imr": 0.04,
"leverage": 20,
"openType": 1,
"limitBySys": true,
"maxVolView": 1000
},
"ts": 1760942212000
}

channel = push.personal.risk.limit

响应参数:

参数名类型说明
symbolstring合约名
positionTypeint持仓类型 1:多仓,2:空仓
riskSourceint风险限制来源 0:其它 1:爆仓服务
levelint当前风险等级
maxVoldecimal最大可持仓数量
maxLeverageint最大杠杆倍数
mmrdecimal维持保证金率
imrdecimal初始保证金率
leverageint当前杠杆倍数
openTypeint保证金模式,默认逐仓
limitBySysboolean限额标识
maxVolViewdecimal用于前端滑动杠杆计算最大风险限额,不依赖杠杆倍数

止盈止损委托

数据示例

{
"channel": "push.personal.stop.planorder",
"data": {
"id": 987654321,
"orderId": 123456789,
"symbol": "BTC_USDT",
"positionId": 456789123,
"lossTrend": 1,
"profitTrend": 2,
"stopLossPrice": 42000.00,
"takeProfitPrice": 48000.00,
"state": 1,
"triggerSide": 1,
"positionType": 1,
"vol": 10,
"takeProfitVol": 10,
"stopLossVol": 10,
"realityVol": 10,
"placeOrderId": 987654321,
"version": 1,
"isFinished": 0,
"profitLossVolType": "SAME",
"volType": 1,
"takeProfitReverse": 2,
"stopLossReverse": 2,
"closeTryTimes": 0,
"reverseTryTimes": 0,
"reverseErrorCode": 0,
"stopLossType": 1,
"stopLossOrderPrice": 41990.00,
"createTime": 1760942212000,
"updateTime": 1760942212000
},
"ts": 1760942212000
}

channel = push.personal.stop.planorder

响应参数:

参数名类型说明
idlong主键id
orderIdlong订单ID
symbolstring合约名
positionIdlong仓位ID
lossTrendint止损参考价格类型
profitTrendint止盈参考价格类型
stopLossPricedecimal止损价
takeProfitPricedecimal止盈价
stateint状态
triggerSideint触发方向,1:止盈,2:止损
positionTypeint仓位类型
voldecimal委托数量
takeProfitVoldecimal止盈数量
stopLossVoldecimal止损数量
realityVoldecimal实际下单数量
placeOrderIdlong实际下单订单id
versionint版本号
isFinishedint是否完成
profitLossVolTypestring止盈止损数量类型(SAME: 数量相同;SEPARATE:数量不同)
volTypeint数量类型1、分批止盈止损2、仓位止盈止损
takeProfitReverseint止盈反手:1是2否
stopLossReverseint止损反手:1是2否
closeTryTimesint平仓重试次数
reverseTryTimesint反手重试次数
reverseErrorCodeint反手开仓失败原因默认值0
stopLossTypeint止损类型 0-市价止损 1-限价止损
stopLossOrderPricedecimal限价止损 委托价格
createTimelong创建时间
updateTimelong更新时间

跟踪委托

数据示例

{
"channel": "push.personal.track.order",
"data": {
"id": 987654321,
"symbol": "BTC_USDT",
"leverage": 20,
"side": 1,
"vol": 50,
"openType": 1,
"trend": 1,
"activePrice": 45000.00,
"markPrice": 44950.00,
"backType": 1,
"backValue": 0.5,
"triggerPrice": 44750.00,
"triggerType": 2,
"orderId": 123456789,
"errorCode": 0,
"state": 1,
"positionMode": 2,
"reduceOnly": false,
"createTime": 1760942212000,
"updateTime": 1760942212000
},
"ts": 1760942212000
}

channel = push.personal.track.order

响应参数:

参数名类型说明
idlong主键id
symbolstring合约名
leverageint杠杆倍数
sideint订单方向(1 开多 2平空 3开空 4平多)
voldecimal委托数量
openTypeint持仓类型(1 逐仓 2 全仓)
trendint参考价格(1 最新价 2合理价 3 指数价)
activePricedecimal激活价格
markPricedecimal对标价格(激活后的最高价或者最低价)
backTypeint价格回调类型(1回调百分比 2回调跨度值)
backValuedecimal回调值
triggerPricedecimal触发价格(随对标价格更新而更新)
triggerTypeint触发类型
orderIdlong触发成功后的委托单id
errorCodeint详见枚举定义:errorCode
stateint当前跟踪委托单状态(0未激活 1 已激活 2 执行成功 3 执行失败 4 已取消)
positionModeint用户设置持仓类型
reduceOnlyboolean只减仓
createTimelong创建时间
updateTimelong更新时间

止盈止损价格

数据示例

{
"channel": "push.personal.stop.order",
"data": {
"symbol": "BTC_USDT",
"orderId": 123456789,
"lossTrend": 1,
"profitTrend": 2,
"stopLossPrice": 42000.00,
"takeProfitPrice": 48000.00
},
"ts": 1760942212000
}

channel = push.personal.stop.order

响应参数:

参数名类型说明
symbolstring合约名
orderIdlong订单ID
lossTrendint止损参考价格类型
profitTrendint止盈参考价格类型
stopLossPricedecimal止损价
takeProfitPricedecimal止盈价

成交明细

数据示例

{
"channel": "push.personal.order.deal",
"data": {
"id": 987654321,
"symbol": "BTC_USDT",
"side": 1,
"vol": 10,
"price": 45000.50,
"feeCurrency": "USDT",
"fee": 0.225,
"timestamp": 1760942212000,
"profit": 0,
"isTaker": true,
"category": 1,
"orderId": 123456789,
"isSelf": false,
"externalOid": "ext_001",
"positionMode": 1,
"reduceOnly": false,
"opponentUid": 987654321
},
"ts": 1760942212000
}

channel = push.personal.order.deal

响应参数:

参数名类型说明
idlong成交ID
symbolstring合约名
sideint订单方向:1开多,2平空,3开空,4平多
voldecimal数量
pricedecimal价格
feeCurrencystring手续费币种
feedecimal单边产生的手续费, 正数表示用户付出, 负数表示用户获得
timestamplong成交时间
profitdecimal盈亏
isTakerboolean是否为taker
categoryint订单类别
orderIdlong订单ID
isSelfboolean是否为自成交
externalOidstring外部订单号
positionModeint持仓模式
reduceOnlyboolean只减仓
opponentUidlong对手方uid

追单失败

数据示例

{
"channel": "push.personal.order.chase",
"data": {
"ec": 1001,
"s": "BTC_USDT"
},
"ts": 1760942212000
}

channel = push.personal.order.chase

响应参数:

参数名类型说明
ecint错误码
sstring合约名

强平风险变更

数据示例

{
"channel": "push.personal.liquidate.risk",
"data": {
"symbol": "BTC_USDT",
"positionId": 123456789,
"liquidatePrice": 35000.0,
"marginRatio": 0.1,
"adlLevel": 3
},
"ts": 1760942212000
}

channel = push.personal.liquidate.risk

响应参数:

参数名类型说明
symbolstring合约名
positionIdlong仓位ID
liquidatePricedecimal强平价
marginRatiodecimal保证金率
adlLevelintadl等级

杠杆模式变更

数据示例

{
"channel": "push.personal.leverage.mode",
"data": {
"lm": 1
},
"ts": 1760942212000
}

channel = push.personal.leverage.mode

响应参数:

参数名类型说明
lmint杠杆模式

持仓模式变更

数据示例

{
"channel": "push.personal.position.mode",
"data": {
"positionMode": 2
},
"ts": 1760942212000
}

channel = push.personal.position.mode

响应参数:

参数名类型说明
positionModeint持仓模式

全平仓失败

channel = push.personal.position.closeall.fail

响应参数:

无数据体,仅推送频道消息

反手仓位

数据示例

{
"channel": "push.personal.reverse.position",
"data": {
"contractId": 1,
"positionId": 123456789,
"state": 2,
"errorCode": 0
},
"ts": 1760942212000
}

channel = push.personal.reverse.position

响应参数:

参数名类型说明
contractIdint合约ID
positionIdlong仓位ID
stateint状态
errorCodeint详见枚举定义:errorCode

体验金通知

数据示例

{
"channel": "push.personal.bonus",
"data": {
"c": "USDT",
"b": 100.0000,
"be": 1763539200000,
"g": true,
"ret": 1763539200000,
"rea": 100.0000
},
"ts": 1760942212000
}

channel = push.personal.bonus

响应参数:

参数名类型说明
cstring币种
bdecimal体验金金额
belong体验金过期时间
gboolean是否发放体验金
retlong最近一笔到期时间
readecimal最近一笔到期金额

用户通知-强平预警/强平通知

数据示例

{
"channel": "push.personal.generic.notify",
"data": {
"type": 1,
"param": {
"notifyType": 2,
"openType": 1,
"dn": "BTC_USDT永续",
"dne": "BTC_USDT PERPETUAL",
"multiAssets": false,
"marginRate": 0.085
}
},
"ts": 1760942212000
}

channel = push.personal.generic.notify

响应参数:

参数名类型说明
typeint通知类型 1-强平通知
paramobject通知参数

通知参数(type为强平相关时)

参数名类型说明
notifyTypeint通知类型:1-强平通知, 2-强平预警
openTypeint开仓类型:1-逐仓, 2-全仓
dnstring显示名称
dnestring显示名称(英文)
multiAssetsboolean是否开启联保模式
marginRatedecimal保证金率

事件合约仓位

数据示例

{
"channel": "push.personal.event.contract.position",
"data": {
"positionId": 123456789,
"symbol": "BTC_USDT",
"side": "1",
"payRate": 0.15,
"amount": 1000.0000,
"openPrice": 45000.50,
"closePrice": 46250.75,
"rewardAmount": 25.5000,
"rewardAmountUsdt": 25.5000,
"state": "3",
"closeResult": "PROFIT",
"createTime": 1760942212000,
"closeTime": 1760945812000,
"pnlAmount": 125.25
},
"ts": 1760945812000
}

channel = push.personal.event.contract.position

响应参数:

参数名类型说明
positionIdlong仓位id
symbolstring合约名
sidestring方向
payRatedecimal奖金支付率
amountdecimal下单金额
openPricedecimal开仓价格
closePricedecimal平仓价格
rewardAmountdecimal奖励金额
rewardAmountUsdtdecimal奖励金额折U
statestring状态
closeResultstring平仓结果
createTimelong创建时间
closeTimelong平仓时间
pnlAmountdecimal总盈亏

增量深度订单簿维护机制

  1. 通过 REST 接口获取全量深度 访问接口:
    GET https://contract.mexc.com/api/v1/contract/depth/{symbol}
    示例:/BTC_USDT
    获取当前完整深度快照,并记录返回的 version 作为初始版本号。

  2. 订阅 WebSocket 深度增量数据 订阅深度更新事件。对于同一价格档位,若接收到多条更新,以 version 更高的数据覆盖 version 更低的数据。

  3. 获取深度 Commit 快照
    定期或在初始化时,通过该接口获取最近 N 条深度快照(例如 1000 条):
    GET https://contract.mexc.com/api/v1/contract/depth_commits/{symbol}/{limit}
    示例:/BTC_USDT/1000

  4. 移除过期的本地缓存数据
    若本地缓存中某个价格档位的数据 version < Commit 快照中的同价格 version,则需将其丢弃。

  5. 合并 Commit 快照到本地缓存
    将 Commit 快照内容应用到本地订单簿,然后从 WebSocket event 中继续按顺序更新。

  6. 确保 version 连续性
    每条 WebSocket 增量事件的版本号需满足:
    new_event.version == previous_event.version + 1
    若发现 version 不连续(例如跳号),表示可能丢包,客户端需回到 步骤 3 重新加载 Commit 快照并重新同步。

  7. 当快照的 version 落在推送消息的 [fromVersion, toVersion] 范围内时,可将推送消息与快照数据整合,方法如下:

    • 推送消息中的价位在快照中已存在,按照推送消息中的数量重新设置该价位的数量;
    • 推送消息中的价位在快照中不存在,按照推送消息中的数量插入新的价位;
    • 推送消息中存在数量为 0 的价位,则在快照中删除该价位。
  8. 挂单量为绝对值
    event 中的数量表示该价格档位当前挂单量的绝对值,而不是相对变化。

  9. 挂单量为 0 的处理
    当某个价格档位的数量为 0 时,表示该档位已被完全成交或撤单,应从本地订单簿中移除。

枚举定义

errorCode

  • 0 正常状态
  • 1 参数错误
  • 2 账户余额不足
  • 3 仓位不存在
  • 4 仓位可用持仓不足
  • 5 多仓时委托价小于强平价 / 空仓时委托价大于强平价
  • 6 开多时强平价小于合理价 / 开空时强平价大于合理价
  • 7 超过风险限额限制
  • 8 系统撤销
  • 9 仓位模式不匹配
  • 10 因存在其他价格更优订单被撤销
  • 11 合约未启用
  • 12 交割撤单
  • 13 仓位将被强平撤单
  • 14 ADL撤单
  • 15 黑名单用户下单撤销
  • 16 单向持仓资金费用结算余额不足撤单
  • 17 划出保证金撤单
  • 18 IOC订单撤销剩余
  • 19 FOK订单撤销
  • 20 只做Maker撤销
  • 21 市价吃不到任何订单
  • 22 order id重复
  • 23 externalOid重复
  • 999 其他通用情况