跳到主要内容

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
}

响应参数:

参数名类型说明
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"
}

响应参数:

参数名类型说明
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"

登录认证

示例

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

响应参数:

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

登录成功(channel = rs.login)

订单

数据示例

{
"channel":"push.personal.order",
"data":{
"category":1,
"createTime":1610005069976,
"dealAvgPrice":0.731,
"dealVol":1,
"errorCode":0,
"externalOid":"_m_95bc2b72d3784bce8f9efecbdef9fe35",
"feeCurrency":"USDT",
"leverage":0,
"makerFee":0,
"openType":1,
"orderId":"102067003631907840",
"orderMargin":0,
"orderType":5,
"positionId":1397818,
"price":0.707,
"profit":-0.0005,
"remainVol":0,
"side":4,
"state":3,
"symbol":"CRV_USDT",
"takerFee":0.00004386,
"updateTime":1610005069983,
"usedMargin":0,
"version":2,
"vol":1
},
"ts":1610005069989
}

请求参数: channel = push.personal.order

响应参数:

参数名类型说明
orderIdlong订单ID
symbolstring合约名
positionIdlong持仓id
pricedecimal委托价格
voldecimal委托数量
leveragelong杠杆倍数
sideint订单方向 1开多,2平空,3开空,4平多
categoryint订单类别:1限价委托,2强平代管委托,3代管平仓委托,4ADL减仓
orderTypeint1:限价单,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
externalOidstring外部订单号
createTimelong创建时间
updateTimelong修改时间
remainVoldecimal剩余数量
positionModeint持仓模式
reduceOnlyboolean只减仓
bboTypeNumint限价订单类型-BBO类型订单
makerFeeRatedecimalmaker手续费率
takerFeeRatedecimaltaker手续费率

资产

数据示例

{
"channel":"push.personal.asset",
"data":{
"availableBalance":0.7514236,
"bonus":0,
"currency":"USDT",
"frozenBalance":0,
"positionMargin":0
},
"ts":1610005070083
}

请求参数: channel = push.personal.asset

响应参数:

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

仓位

数据示例

{
"channel":"push.personal.position",
"data":{
"autoAddIm":false,
"closeAvgPrice":0.731,
"closeVol":1,
"frozenVol":0,
"holdAvgPrice":0.736,
"holdFee":0,
"holdVol":0,
"im":0,
"leverage":15,
"liquidatePrice":0,
"oim":0,
"openAvgPrice":0.736,
"openType":1,
"positionId":1397818,
"positionType":1,
"realised":-0.0005,
"state":3,
"symbol":"CRV_USDT"
},
"ts":1610005070157
}

请求参数: 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版本号

抵扣信息

请求参数:

响应参数:

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

计划委托订单

请求参数: 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执行失败时错误码,0:正常
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

响应参数:

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

止盈止损委托

请求参数: 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

响应参数:

参数名类型说明
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触发失败的错误码
stateint当前跟踪委托单状态(0未激活 1 已激活 2 执行成功 3 执行失败 4 已取消)
positionModeint用户设置持仓类型
reduceOnlyboolean只减仓
createTimelong创建时间
updateTimelong更新时间

止盈止损价格

请求参数: channel = push.personal.stop.order

响应参数:

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

成交明细

请求参数: 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

响应参数:

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

强平风险变更

请求参数: channel = push.personal.liquidate.risk

响应参数:

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

杠杆模式变更

请求参数: channel = push.personal.leverage.mode

响应参数:

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

持仓模式变更

请求参数: channel = push.personal.position.mode

响应参数:

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

全平仓失败

请求参数: channel = push.personal.position.closeall.fail

响应参数:

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

反手仓位

请求参数: channel = push.personal.reverse.position

响应参数:

参数名类型说明
contractIdint合约ID
positionIdlong仓位ID
stateint状态
errorCodeint错误码

体验金通知

请求参数: channel = push.personal.bonus

响应参数:

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

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

请求参数: 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

响应参数:

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

如何维护深度信息

例如订阅成交信息

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

订阅成功响应

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

订阅失败响应

{"channel":"rs.error",
"data":"合约不存在!",
"ts":"1587442022003"
}

仓位模式

数据示例

{
"channel":"push.personal.position.mode",
"data":{
positionMode: 1
},
"ts":1610005070157
}

请求参数: channel = push.personal.position.mode

响应参数:

参数名类型说明
positionModeint仓位模式,1:双向,2:单向

如何维护增量深度信息:

  1. 通过接口 https://contract.mexc.com/api/v1/contract/depth/BTC_USDT获取全量深度信息,保存当前version
  2. 订阅ws深度信息,收到更新后,如果收到的数据version>当前version,同一个价位,后收到的更新覆盖前面的。
  3. 通过接口 https://contract.mexc.com/api/v1/contract/depth_commits/BTC_USDT/1000获取最新1000条深度快照
  4. 将目前缓存的深度信息中同一价格,version<步骤3获取到的快照中的version的数据丢弃
  5. 将深度快照中的内容更新至本地缓存,并从ws接收到的event开始继续更新
  6. 每一个新event的version应该恰好等于上一个event的version+1,否则可能出现了丢包,如出现丢包或者获取到的event的version不连续,请从步骤3重新进行初始化。
  7. 每一个event中的挂单量代表这个价格目前的挂单量绝对值,而不是相对变化。
  8. 如果某个价格对应的挂单量为0,表示该价位的挂单已经撤单或者被吃,应该移除这个价位。

订阅类事件,订阅成功响应:

channel 为 rs. + 订阅的method, data为 "success"