跳至主要内容

持倉

訂閱持倉數據的推送

Topic: position

響應參數

參數類型說明
idstring消息id
topicstringTopic名
creationTimenumber消息數據創建時間
dataarrayObject
> categorystring產品類型
> symbolstring合約名稱
> sidestring持倉方向. Buy,Sell
> sizestring持倉大小
> positionIdxinteger倉位標識
> tradeModeinteger交易模式。
  • 反向合約 & USDT永續:0 全倉,1 逐倉
  • 交易帳戶:該字段無效,總是 0,請通過接口查詢帳戶配置查詢帳戶保證金模式
> positionValuestring倉位價值
> riskIdinteger風險限額id.
> riskLimitValuestring風險限額id對應的風險限額度.
> entryPricestring入場價
> markPricestring標記價
> leveragestring槓桿.
> positionBalancestring倉位保證金.
> autoAddMargininteger是否自動追加保證金. 0: 否, 1: 是.
> positionMMstring倉位維持保證金。
  • 經典帳戶:忽略該字段
  • 交易帳戶組合保證金模式(PM)下,該字段返回為空字符串
> positionIMstring倉位初始保證金。
  • 經典帳戶:忽略該字段
  • 交易帳戶組合保證金模式(PM)下,該字段返回為空字符串
> liqPricestring倉位強平價格。
  • 普通帳戶 & 交易帳戶(開啟逐倉保證金模式):是逐倉和全倉持倉的真實價格,當強平價 <= minPrice 或者 強平價 >= maxPrice,則為 ""
  • 交易帳戶(全倉保證金):是全倉持倉的預估價格(因為交易帳戶模式是按照帳戶維度控制風險率),當強平價 <= minPrice 或者 強平價 >= maxPrice,則為 ""
  • 對於組合保證金模式,此字段為空,不會提供強平價格
> bustPricestring預估破產價.
> tpslModestring該字段廢棄, 無意義, 總是返回"Full".
> takeProfitstring止盈價格
> stopLossstring止損價格
> trailingStopstring追蹤止損
> unrealisedPnlstring未結盈虧
> cumRealisedPnlstring累計盈虧
> isReduceOnlyboolean僅當Zoomex需要降低某個交易對的風險限額時有用。
  • true: 僅允許減倉操作。您可以考慮一系列的方式,比如,降低 risk limit 檔位,或者同檔位修改槓桿或減少倉位,或者增加保證金,或者撤單。這些操作做完後,可以主動調用「確認新的風險限額」接口
  • false(默認): 無交易限制,表示您的倉位在系統調整時處於風險水平之下
  • 僅對逐倉和全倉的期貨倉位有意義
> mmrSysUpdatedTimestring僅當Zoomex需要降低某個交易對的風險限額時有用。
  • 當 isReduceOnly=true: 這個時間戳表示系統強制修改 MMR 的時間
  • 當 isReduceOnly=false: 若不為空,則表示系統已經完成了 MMR 調整的時間
  • 僅當系統調整才會賦值,對於主動的調整,不會在這裡展示時間戳
  • 默認為 "",但如果曾經這個 symbol 有過系統降檔的操作,那麼這裡會顯示上一次操作的時間
  • 僅對逐倉和全倉的期貨倉位有意義
> leverageSysUpdatedTimestring僅當Zoomex需要降低某個交易對的風險限額時有用。
  • 當 isReduceOnly=true: 這個時間戳表示系統強制修改槓桿的時間
  • 當 isReduceOnly=false: 若不為空,則表示系統已經完成了槓桿調整的時間
  • 僅當系統調整才會賦值,對於主動的調整,不會在這裡展示時間戳
  • 默認為 "",但如果曾經這個 symbol 有過系統降檔的操作,那麼這裡會顯示上一次操作的時間
  • 僅對逐倉和全倉的期貨倉位有意義
> positionStatusstring倉位狀態. Normal,Liq, Adl
> adlRankIndicatorinteger自動減倉燈. 什麼是自動減倉機制?
> createdTimestring倉位創建時間戳 (毫秒)
> updatedTimestring倉位數據更新時間戳 (毫秒)

訂閱示例

{
"op": "subscribe",
"args": [
"position"
]
}
var url = require('url');
var WebSocket = require('ws');
var crypto = require('crypto');
var endpoint = "wss://stream-testnet.zoomex.com/v3/private"
console.log('attempting to connect to WebSocket %j', endpoint);
var client = new WebSocket(endpoint);
const apiKey="XXXXXXXXX";
const apiSecret="XXXXXXXXX";
client.on('open', function () {
console.log('"open" event!');
console.log('WebSocket Client Connected');
const expires = new Date().getTime() + 10000;
const signature = crypto.createHmac("sha256", apiSecret).update("GET/realtime" + expires).digest("hex");
const payload={
op: "auth",
args: [apiKey, expires.toFixed(0), signature],
}
client.send(JSON.stringify(payload));
setInterval(()=>{client.ping()}, 30000);
client.ping();
client.send(JSON.stringify({"op": "subscribe", "args": ['position']}));
});

client.on('message', function (data) {
console.log('"message" event! %j', JSON.parse(Buffer.from(data).toString()));
});
client.on('ping', function (data, flags) {
console.log("ping received");
});
client.on('pong', function (data, flags) {
console.log("pong received");
});

推送示例

{
"id": "59232430b58efe-5fc5-4470-9337-4ce293b68edd",
"topic": "position",
"creationTime": 1672364174455,
"data": [
{
"positionIdx": 0,
"tradeMode": 0,
"riskId": 41,
"riskLimitValue": "200000",
"symbol": "XRPUSDT",
"side": "Buy",
"size": "75",
"entryPrice": "0.3615",
"leverage": "10",
"positionValue": "27.1125",
"positionBalance": "0",
"markPrice": "0.3374",
"positionIM": "2.72589075",
"positionMM": "0.28576575",
"takeProfit": "0",
"stopLoss": "0",
"trailingStop": "0",
"unrealisedPnl": "-1.8075",
"cumRealisedPnl": "0.64782276",
"createdTime": "1672121182216",
"updatedTime": "1672364174449",
"tpslMode": "Full",
"liqPrice": "",
"bustPrice": "",
"category": "linear",
"positionStatus": "Normal",
"adlRankIndicator": 2
}
]
}