訂單
訂閱訂單數據推送
All-In-One Topic: order
Categorised Topic: order.spot
, order.linear
, order.inverse
響應參數
參數 | 類型 | 說明 |
---|---|---|
id | string | 消息id |
topic | string | Topic名 |
creationTime | number | 消息數據創建時間 |
data | array | Object |
> category | string | 產品類型
|
> orderId | string | 訂單ID |
> orderLinkId | string | 用戶自定義ID |
> symbol | string | 合約名稱 |
> price | string | 訂單價格 |
> qty | string | 訂單數量 |
> side | string | 方向. Buy ,Sell |
> positionIdx | integer | 倉位標識。用戶不同倉位模式 |
> orderStatus | string | 訂單狀態 |
> cancelType | string | 訂單被取消類型. |
> rejectReason | string | 拒絕原因. |
> avgPrice | string | 訂單平均成交價格. 若沒有成交,則返回"" .
|
> leavesQty | string | 訂單剩餘未成交的數量. |
> leavesValue | string | 訂單剩餘未成交的價值. |
> cumExecQty | string | 訂單累計成交數量 |
> cumExecValue | string | 訂單累計成交價值 |
> cumExecFee | string | 訂單累計成交的手續費. |
> timeInForce | string | 執行策略 |
> orderType | string | 訂單類型. Market ,Limit . 對於止盈止損單, 則表示為觸發後的訂單類型 |
> stopOrderType | string | 條件單類型 |
> orderIv | string | 隱含波動率 |
> triggerPrice | string | 觸發價格. 若stopOrderType =TrailingStop, 則這是激活價格. 否則, 它是觸發價格 |
> takeProfit | string | 止盈價格 |
> stopLoss | string | 止損價格 |
> tpslMode | string | 止盈止損模式 Full : 全部倉位止盈止損, Partial : 部分倉位止盈止損. |
> tpLimitPrice | string | 觸發止盈後轉換為限價單的價格 |
> slLimitPrice | string | 觸發止損後轉換為限價單的價格 |
> tpTriggerBy | string | 觸發止盈的價格類型 |
> slTriggerBy | string | 觸發止損的價格類型 |
> triggerDirection | integer | 觸發方向. 1 : 上漲, 2 : 下跌 |
> triggerBy | string | 觸發價格的觸發類型 |
> lastPriceOnCreated | string | 下單時的市場價格 |
> reduceOnly | boolean | 只減倉. true 表明這是只減倉單 |
> closeOnTrigger | boolean | 觸發後平倉委託. |
> placeType | string | Place type |
> createdTime | string | 創建訂單的時間戳 (毫秒) |
> updatedTime | string | 訂單更新的時間戳 (毫秒) |
訂閱示例
{
"op": "subscribe",
"args": [
"order"
]
}
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": ['order']}));
});
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": "5923240c6880ab-c59f-420b-9adb-3639adc9dd90",
"topic": "order",
"creationTime": 1672364262474,
"data": [
{
"symbol": "ETHUSDT",
"orderId": "5cf98598-39a7-459e-97bf-76ca765ee020",
"side": "Sell",
"orderType": "Market",
"cancelType": "UNKNOWN",
"price": "72.5",
"qty": "1",
"orderIv": "",
"timeInForce": "IOC",
"orderStatus": "Filled",
"orderLinkId": "",
"lastPriceOnCreated": "",
"reduceOnly": false,
"leavesQty": "",
"leavesValue": "",
"cumExecQty": "1",
"cumExecValue": "75",
"avgPrice": "75",
"blockTradeId": "",
"positionIdx": 0,
"cumExecFee": "0.358635",
"createdTime": "1672364262444",
"updatedTime": "1672364262457",
"rejectReason": "EC_NoError",
"stopOrderType": "",
"tpslMode": "",
"triggerPrice": "",
"takeProfit": "",
"stopLoss": "",
"tpTriggerBy": "",
"slTriggerBy": "",
"tpLimitPrice": "",
"slLimitPrice": "",
"triggerDirection": 0,
"triggerBy": "",
"closeOnTrigger": false,
"category": "linear",
"placeType": "price"
}
]
}