ZG交易所API接口文档

公有Broker Rest API (2019-07-01)

通用API信息

  • 所有的端点都会返回一个JSON object或者array.
  • 数据返回的是一个 升序。更早的在前,更新的在后。
  • 所有的时间/时间戳有关的变量都是milliseconds(毫秒级)。
  • HTTP 4XX 返回错误码是指请求内容有误,这个问题是在请求发起者这边。
  • HTTP 429 返回错误码是指请求次数上限被打破。
  • HTTP 418 返回错误码是指IP在收到429错误码后还继续发送请求被自动封禁。
  • HTTP 5XX 返回错误码是内部系统错误;这说明这个问题是在券商这边。在对待这个错误时,千万 不要把它当成一个失败的任务,因为执行状态 未知,有可能是成功也有可能是失败。
  • 任何端点都可能返回ERROR(错误); 错误的返回payload如下
{
  "code": -1121,
  "msg": "Invalid symbol."
}
  • 详细的错误码和错误信息在请见错误码文件。
  • 对于GET端点,必须发送参数为query string(查询字串)。
  • 对于POST, PUT, 和 DELETE 端点,必需要发送参数为query string(查询字串)或者发送参数在request body(请求主体)并设置content type(内容类型)为application/x-www-form-urlencoded。可以同时在query string或者request body里混合发送参数如果有需要的话。
  • 参数可以以任意顺序发送。
  • 如果有参数同时在query stringrequest body里存在,只有query string的参数会被使用。

限制

  • /openapi/v1/brokerInforateLimits array里存在当前broker的REQUEST_WEIGHTORDER频率限制。
  • 如果任一频率限额被超过,429 会被返回。
  • 每条线路有一个weight特性,这个决定了这个请求占用多少容量(比如weight=2说明这个请求占用两个请求的量)。返回数据多的端点或者在多个symbol执行任务的端点可能有更高的weight
  • 429被返回后,你有义务停止发送请求。
  • 多次反复违反频率限制和/或者没有在收到429后停止发送请求的用户将会被收到封禁IP(错误码418)
  • IP封禁会被跟踪和 调整封禁时长(对于反复违反规定的用户,时间从 2分钟到3天不等

端点安全类型

  • 每个端点有一个安全类型,这决定了你会怎么跟其交互。
  • API-key要以X-BH-APIKEY的名字传到REST API header里面。
  • API-keys和secret-keys 要区分大小写
  • 默认情况下,API-keys可以访问所有的安全节点。
安全类型描述
NONE端点可以自由访问。
TRADE端点需要发送有效的API-Key和签名。
USER_DATA端点需要发送有效的API-Key和签名。
USER_STREAM端点需要发送有效的API-Key。
MARKET_DATA端点需要发送有效的API-Key。
  • TRADEUSER_DATA 端点是 SIGNED(需要签名)的端点。

SIGNED(有签名的)(TRADE和USER_DATA) 端点安全

  • SIGNED(需要签名)的端点需要发送一个参数,signature,在query string 或者 request body里。
  • 端点用HMAC SHA256签名。HMAC SHA256 signature是一个对key进行HMAC SHA256加密的结果。用你的secretKey作为key和totalParams作为value来完成这一加密过程。
  • signature 不区分大小写
  • totalParams 是指 query string串联request body

时效安全

  • 一个SIGNED(有签名)的端点还需要发送一个参数,timestamp,这是当请求发起时的毫秒级时间戳。

  • 一个额外的参数(非强制性), recvWindow, 可以说明这个请求在多少毫秒内是有效的。如果recvWindow没有被发送,默认值是5000

  • 在当前,只有创建订单的时候才会用到recvWindow

  • 该参数的逻辑如下:

    if (timestamp < (serverTime + 1000) && (serverTime - timestamp) <= recvWindow) {
      // process request
    } else {
      // reject request
    }
    

严谨的交易和时效紧紧相关 网络有时会不稳定或者不可靠,这会导致请求发送服务器的时间不一致。
有了recvWindow,你可以说明在多少毫秒内请求是有效的,否则就会被服务器拒绝。

建议使用一个相对小的recvWindow(5000或以下)!

SIGNED(签名) 的例子(对于POST /openapi/v1/order)

这里有一个详细的用Linuxecho, openssl, 和 curl举例来展示如何发送一个有效的签名payload。

Key
apiKeytAQfOrPIZAhym0qHISRt8EFvxPemdBm5j5WMlkm3Ke9aFp0EGWC2CGM8GHV4kCYW
secretKeylH3ELTNiFxCQTmi9pPcWWikhsjO04Yoqw3euoHUuOLC3GYBW64ZqzQsiOEHXQS76
参数名参数值
symbolETHBTC
sideBUY
typeLIMIT
timeInForceGTC
quantity1
price0.1
recvWindow5000
timestamp1538323200000
例子 1: 在queryString
  • queryString: symbol=ETHBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1538323200000
  • HMAC SHA256 signature:
[linux]$ echo -n "symbol=ETHBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1538323200000" | openssl dgst -sha256 -hmac "lH3ELTNiFxCQTmi9pPcWWikhsjO04Yoqw3euoHUuOLC3GYBW64ZqzQsiOEHXQS76"
(stdin)= 5f2750ad7589d1d40757a55342e621a44037dad23b5128cc70e18ec1d1c3f4c6
  • curl command:
(HMAC SHA256)
[linux]$ curl -H "X-BH-APIKEY: tAQfOrPIZAhym0qHISRt8EFvxPemdBm5j5WMlkm3Ke9aFp0EGWC2CGM8GHV4kCYW" -X POST 'https://$HOST/openapi/v1/order?symbol=ETHBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1538323200000&signature=5f2750ad7589d1d40757a55342e621a44037dad23b5128cc70e18ec1d1c3f4c6'
例子 2: 在request body
  • requestBody: symbol=ETHBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1538323200000
  • HMAC SHA256 signature:
[linux]$ echo -n "symbol=ETHBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1538323200000" | openssl dgst -sha256 -hmac "lH3ELTNiFxCQTmi9pPcWWikhsjO04Yoqw3euoHUuOLC3GYBW64ZqzQsiOEHXQS76"
(stdin)= 5f2750ad7589d1d40757a55342e621a44037dad23b5128cc70e18ec1d1c3f4c6
  • curl command:
(HMAC SHA256)
[linux]$ curl -H "X-BH-APIKEY: tAQfOrPIZAhym0qHISRt8EFvxPemdBm5j5WMlkm3Ke9aFp0EGWC2CGM8GHV4kCYW" -X POST 'https://$HOST/openapi/v1/order' -d 'symbol=ETHBTC&side=BUY&type=LIMIT&timeInForce=GTC&quantity=1&price=0.1&recvWindow=5000&timestamp=1538323200000&signature=5f2750ad7589d1d40757a55342e621a44037dad23b5128cc70e18ec1d1c3f4c6'
例子 3: queryStringrequest body混合在一起
  • queryString: symbol=ETHBTC&side=BUY&type=LIMIT&timeInForce=GTC
  • requestBody: quantity=1&price=0.1&recvWindow=5000&timestamp=1538323200000
  • HMAC SHA256 signature:
[linux]$ echo -n "symbol=ETHBTC&side=BUY&type=LIMIT&timeInForce=GTCquantity=1&price=0.1&recvWindow=5000&timestamp=1538323200000" | openssl dgst -sha256 -hmac "lH3ELTNiFxCQTmi9pPcWWikhsjO04Yoqw3euoHUuOLC3GYBW64ZqzQsiOEHXQS76"
(stdin)= 885c9e3dd89ccd13408b25e6d54c2330703759d7494bea6dd5a3d1fd16ba3afa
  • curl command:
(HMAC SHA256)
[linux]$ curl -H "X-BH-APIKEY: tAQfOrPIZAhym0qHISRt8EFvxPemdBm5j5WMlkm3Ke9aFp0EGWC2CGM8GHV4kCYW" -X POST 'https://$HOST/openapi/v1/order?symbol=ETHBTC&side=BUY&type=LIMIT&timeInForce=GTC' -d 'quantity=1&price=0.1&recvWindow=5000&timestamp=1538323200000&signature=885c9e3dd89ccd13408b25e6d54c2330703759d7494bea6dd5a3d1fd16ba3afa'

注意在例子3里有一点不一样,"GTC"和"quantity=1"之间没有&。

公共 API 端点

术语解释

  • base asset 指的是symbol的quantity(即数量)。

  • quote asset 指的是symbol的price(即价格)。

ENUM 定义

Symbol 状态:

  • TRADING - 交易中
  • HALT - 终止
  • BREAK - 断开

Symbol 类型:

  • SPOT - 现货

资产类型:

  • CASH - 现金
  • MARGIN - 保证金

订单状态:

  • NEW - 新订单,暂无成交
  • PARTIALLY_FILLED - 部分成交
  • FILLED - 完全成交
  • CANCELED - 已取消
  • PENDING_CANCEL - 等待取消
  • REJECTED - 被拒绝

订单类型:

  • LIMIT - 限价单
  • MARKET - 市价单
  • LIMIT_MAKER - maker限价单
  • STOP_LOSS (unavailable now) - 暂无
  • STOP_LOSS_LIMIT (unavailable now) - 暂无
  • TAKE_PROFIT (unavailable now) - 暂无
  • TAKE_PROFIT_LIMIT (unavailable now) - 暂无
  • MARKET_OF_PAYOUT (unavailable now) - 暂无

订单方向:

  • BUY - 买单
  • SELL - 卖单

订单时效类型:

  • GTC
  • IOC
  • FOK

k线/烛线图区间:

m -> 分钟; h -> 小时; d -> 天; w -> 周; M -> 月

  • 1m
  • 3m
  • 5m
  • 15m
  • 30m
  • 1h
  • 2h
  • 4h
  • 6h
  • 8h
  • 12h
  • 1d
  • 3d
  • 1w
  • 1M

频率限制类型 (rateLimitType)

  • REQUESTS_WEIGHT
  • ORDERS

频率限制区间

  • SECOND
  • MINUTE
  • DAY

通用端点

测试连接
GET /openapi/v1/ping

测试REST API的连接。

Weight:
0

Parameters:
NONE

Response:

{}
服务器时间
GET /openapi/v1/time

测试连接并获取当前服务器的时间。

Weight:
0

Parameters:
NONE

Response:

{
  "serverTime": 1538323200000
}
Broker信息
GET /openapi/v1/brokerInfo

当前broker交易规则和symbol信息

Weight:
0

Parameters:
NONE

Response:

{
  "timezone": "UTC",
  "serverTime": 1538323200000,
  "rateLimits": [{
      "rateLimitType": "REQUESTS_WEIGHT",
      "interval": "MINUTE",
      "limit": 1500
    },
    {
      "rateLimitType": "ORDERS",
      "interval": "SECOND",
      "limit": 20
    },
    {
      "rateLimitType": "ORDERS",
      "interval": "DAY",
      "limit": 350000
    }
  ],
  "brokerFilters":[],
  "symbols": [{
    "symbol": "ETHBTC",
    "status": "TRADING",
    "baseAsset": "ETH",
    "baseAssetPrecision": "0.001",
    "quoteAsset": "BTC",
    "quotePrecision": "0.01",
    "icebergAllowed": false,
    "filters": [{
      "filterType": "PRICE_FILTER",
      "minPrice": "0.00000100",
      "maxPrice": "100000.00000000",
      "tickSize": "0.00000100"
    }, {
      "filterType": "LOT_SIZE",
      "minQty": "0.00100000",
      "maxQty": "100000.00000000",
      "stepSize": "0.00100000"
    }, {
      "filterType": "MIN_NOTIONAL",
      "minNotional": "0.00100000"
    }]
  }]
}

市场数据端点

订单簿
GET /openapi/quote/v1/depth

Weight:

根据limit不同:

LimitWeight
5, 10, 20, 50, 1001
5005
100010

Parameters:

名称类型是否强制描述
symbolSTRINGYES
limitINTNO默认 100; 最大 100.

注意: 如果设置limit=0会返回很多数据。

Response:

[价格, 数量]

{
  "bids": [
    [
      "3.90000000",   // 价格
      "431.00000000"  // 数量
    ],
    [
      "4.00000000",
      "431.00000000"
    ]
  ],
  "asks": [
    [
      "4.00000200",  // 价格
      "12.00000000"  // 数量
    ],
    [
      "5.10000000",
      "28.00000000"
    ]
  ]
}
最近成交
GET /openapi/quote/v1/trades

获取当前最新成交(最多500)

Weight:
1

Parameters:

名称类型是否强制描述
symbolSTRINGYES
limitINTNODefault 500; max 1000.

Response:

[
  {
    "price": "4.00000100",
    "qty": "12.00000000",
    "time": 1499865549590,
    "isBuyerMaker": true
  }
]
k线/烛线图数据
GET /openapi/quote/v1/klines

symbol的k线/烛线图数据
K线会根据开盘时间而辨别。

Weight:
1

Parameters:

名称类型是否强制描述
symbolSTRINGYES
intervalENUMYES
startTimeLONGNO
endTimeLONGNO
limitINTNO默认500; 最大1000.
  • 如果startTime和endTime没有发送,只有最新的K线会被返回。

Response:

[
  [
    1499040000000,      // 开盘时间
    "0.01634790",       // 开盘价
    "0.80000000",       // 最高价
    "0.01575800",       // 最低价
    "0.01577100",       // 收盘价
    "148976.11427815",  // 交易量
    1499644799999,      // 收盘时间
    "2434.19055334",    // Quote asset数量
    308,                // 交易次数
    "1756.87402397",    // Taker buy base asset数量
    "28.46694368"       // Taker buy quote asset数量
  ]
]
24小时ticker价格变化数据
GET /openapi/quote/v1/ticker/24hr

24小时价格变化数据。注意 如果没有发送symbol,会返回很多数据。

Weight:

如果只有一个symbol,1; 如果symbol没有被发送,40

Parameters:

名称类型是否强制描述
symbolSTRINGNO
  • 如果symbol没有被发送,所有symbol的数据都会被返回。

Response:

{
  "time": 1538725500422,
  "symbol": "ETHBTC",
  "bestBidPrice": "4.00000200",
  "bestAskPrice": "4.00000200",
  "lastPrice": "4.00000200",
  "openPrice": "99.00000000",
  "highPrice": "100.00000000",
  "lowPrice": "0.10000000",
  "volume": "8913.30000000"
}

OR

[
  {
    "time": 1538725500422,
    "symbol": "ETHBTC",
    "lastPrice": "4.00000200",
    "openPrice": "99.00000000",
    "highPrice": "100.00000000",
    "lowPrice": "0.10000000",
    "volume": "8913.30000000"
 }
]
Symbol价格
GET /openapi/quote/v1/ticker/price

单个或多个symbol的最新价。

Weight:
1

Parameters:

名称类型是否强制描述
symbolSTRINGNO
  • 如果symbol没有发送,所有symbol的最新价都会被返回。

Response:

{
  "price": "4.00000200"
}

OR

[
  {
    "symbol": "LTCBTC",
    "price": "4.00000200"
  },
  {
    "symbol": "ETHBTC",
    "price": "0.07946600"
  }
]
Symbol最佳订单簿价格
GET /openapi/quote/v1/ticker/bookTicker

单个或者多个symbol的最佳买单卖单价格。

Weight:
1

Parameters:

名称类型是否强制描述
symbolSTRINGNO
  • 如果symbol没有被发送,所有symbol的最佳订单簿价格都会被返回。

Response:

{
  "symbol": "LTCBTC",
  "bidPrice": "4.00000000",
  "bidQty": "431.00000000",
  "askPrice": "4.00000200",
  "askQty": "9.00000000"
}

OR

[
  {
    "symbol": "LTCBTC",
    "bidPrice": "4.00000000",
    "bidQty": "431.00000000",
    "askPrice": "4.00000200",
    "askQty": "9.00000000"
  },
  {
    "symbol": "ETHBTC",
    "bidPrice": "0.07946700",
    "bidQty": "9.00000000",
    "askPrice": "100000.00000000",
    "askQty": "1000.00000000"
  }
]

账户端点

创建新订单 (TRADE)
POST /openapi/v1/order  (HMAC SHA256)

发送一个新的订单

Weight:
1

Parameters:

名称类型是否强制描述
symbolSTRINGYES
assetTypeSTRINGNO
sideENUMYES
typeENUMYES
timeInForceENUMNO
quantityDECIMALYES
priceDECIMALNO
newClientOrderIdSTRINGNO一个自己给订单定义的ID,如果没有发送会自动生成。
stopPriceDECIMALNOSTOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, 和TAKE_PROFIT_LIMIT 订单一起使用. 当前不可用
icebergQtyDECIMALNOLIMIT, STOP_LOSS_LIMIT, 和 TAKE_PROFIT_LIMIT 来创建冰山订单. 当前不可用
recvWindowLONGNO
timestampLONGYES

type上的额外强制参数:

类型额外强制参数
LIMITtimeInForce, quantity, price
MARKETquantity
STOP_LOSSquantity, stopPrice 当前不可用
STOP_LOSS_LIMITtimeInForce, quantity, price, stopPrice 当前不可用
TAKE_PROFITquantity, stopPrice 当前不可用
TAKE_PROFIT_LIMITtimeInForce, quantity, price, stopPrice 当前不可用
LIMIT_MAKERquantity, price

Response:

{
  "orderId": 28,
  "clientOrderId": "6k9M212T12092"
}
测试新订单 (TRADE)
POST /openapi/v1/order/test (HMAC SHA256)

用signature和recvWindow测试生成新订单。
创建和验证一个新订单但是不送入撮合引擎。

Weight:
1

Parameters:

POST /openapi/v1/order一样。

Response:

{}
查询订单 (USER_DATA)
GET /openapi/v1/order (HMAC SHA256)

查询订单状态。

Weight:
1

Parameters:

名称类型是否强制描述
orderIdLONGNO
origClientOrderIdSTRINGNO
recvWindowLONGNO
timestampLONGYES

Notes:

  • 单一 orderId 或者 origClientOrderId 必须被发送。
  • 对于某些历史数据 cummulativeQuoteQty 可能会 < 0, 这说明数据当前不可用。

Response:

{
  "symbol": "LTCBTC",
  "orderId": 1,
  "clientOrderId": "9t1M2K0Ya092",
  "price": "0.1",
  "origQty": "1.0",
  "executedQty": "0.0",
  "cummulativeQuoteQty": "0.0",
  "status": "NEW",
  "timeInForce": "GTC",
  "type": "LIMIT",
  "side": "BUY",
  "stopPrice": "0.0",
  "icebergQty": "0.0",
  "time": 1499827319559,
  "updateTime": 1499827319559,
  "isWorking": true
}
取消订单 (TRADE)
DELETE /openapi/v1/order  (HMAC SHA256)

取消当前正在交易的订单。

Weight:
1

Parameters:

名称类型是否强制描述
orderIdLONGNO
clientOrderIdSTRINGNO
recvWindowLONGNO
timestampLONGYES

单一 orderId 或者 clientOrderId必须被发送。

Response:

{
  "symbol": "LTCBTC",
  "clientOrderId": "tU721112KM",
  "orderId": 1,
  "status": "CANCELED"
}
当前订单(USER_DATA)
GET /openapi/v1/openOrders  (HMAC SHA256)

获取当前单个或者多个symbol的当前订单。注意 如果没有发送symbol,会返回很多数据。

Weight:
1

Parameters:

名称类型是否强制描述
symbolStringNO
orderIdLONGNO
limitINTNO默认 500; 最多 1000.
recvWindowLONGNO
timestampLONGYES

Notes:

  • 如果orderId设定好了,会筛选订单小于orderId的。否则会返回最近的订单信息。

Response:

[
  {
    "symbol": "LTCBTC",
    "orderId": 1,
    "clientOrderId": "t7921223K12",
    "price": "0.1",
    "origQty": "1.0",
    "executedQty": "0.0",
    "cummulativeQuoteQty": "0.0",
    "status": "NEW",
    "timeInForce": "GTC",
    "type": "LIMIT",
    "side": "BUY",
    "stopPrice": "0.0",
    "icebergQty": "0.0",
    "time": 1499827319559,
    "updateTime": 1499827319559,
    "isWorking": true
  }
]
历史订单 (USER_DATA)
GET /openapi/v1/historyOrders (HMAC SHA256)

获取当前账户的所有订单。亦或是取消的,完全成交的,拒绝的。

Weight:
5

Parameters:

名称类型是否强制描述
symbolStringNO
orderIdLONGNO
startTimeLONGNO
endTimeLONGNO
limitINTNODefault 500; max 1000.
recvWindowLONGNO
timestampLONGYES

Notes:

  • 如果orderId设定好了,会筛选订单小于orderId的。否则会返回最近的订单信息。

Response:

[
  {
    "symbol": "LTCBTC",
    "orderId": 1,
    "clientOrderId": "987yjj2Ym",
    "price": "0.1",
    "origQty": "1.0",
    "executedQty": "0.0",
    "cummulativeQuoteQty": "0.0",
    "status": "NEW",
    "timeInForce": "GTC",
    "type": "LIMIT",
    "side": "BUY",
    "stopPrice": "0.0",
    "icebergQty": "0.0",
    "time": 1499827319559,
    "updateTime": 1499827319559,
    "isWorking": true
  }
]
账户信息 (USER_DATA)
GET /openapi/v1/account (HMAC SHA256)

获取当前账户信息

Weight:
5

Parameters:

名称类型是否强制描述
recvWindowLONGNO
timestampLONGYES

Response:

{
  "canTrade": true,
  "canWithdraw": true,
  "canDeposit": true,
  "updateTime": 123456789,
  "balances": [
    {
      "asset": "BTC",
      "free": "4723846.89208129",
      "locked": "0.00000000"
    },
    {
      "asset": "LTC",
      "free": "4763368.68006011",
      "locked": "0.00000000"
    }
  ]
}
账户交易记录 (USER_DATA)
GET /openapi/v1/myTrades  (HMAC SHA256)

获取当前账户历史成交记录

Weight:
5

Parameters:

名称类型是否强制描述
startTimeLONGNO
endTimeLONGNO
fromIdLONGNOTradeId to fetch from.
toIdLONGNOTradeId to fetch to.
limitINTNODefault 500; max 1000.
recvWindowLONGNO
timestampLONGYES

Notes:

  • 如果只有fromId,会返回订单号小于fromId的,倒序排列。
  • 如果只有toId,会返回订单号小于toId的,升序排列。
  • 如果同时有fromIdtoId, 会返回订单号在fromIdtoId的,倒序排列。
  • 如果fromIdtoId都没有,会返回最新的成交记录,倒序排列。
    Response:
[
  {
    "symbol": "ETHBTC",
    "id": 28457,
    "orderId": 100234,
    "matchOrderId": 109834,
    "price": "4.00000100",
    "qty": "12.00000000",
    "commission": "10.10000000",
    "commissionAsset": "ETH",
    "time": 1499865549590,
    "isBuyer": true,
    "isMaker": false
  }
]
账户存款记录 (USER_DATA)
GET /openapi/v1/depositOrders  (HMAC SHA256)

获取当前账户的存款记录

Weight:
5

Parameters:

名称类型是否强制描述
startTimeLONGNO
endTimeLONGNO
fromIdLONGNO从哪个OrderId起开始抓取。默认抓取最新的存款记录。
limitINTNO默认 500; 最大 1000.
recvWindowLONGNO
timestampLONGYES

Notes:

  • 如果orderId设定好了,会筛选订单小于orderId的。否则会返回最近的订单信息。

Response:

[
  {
	"orderId": 100234,
	"token": "EOS",
	"address": "deposit2bh",
	"addressTag": "19012584",
	"fromAddress": "clarkkent",
	"fromAddressTag": "19029901",
	"time": 1499865549590,
	"quantity": "1.01"
  }
]

用户数据流端点

详细的用户信息流说明在另一个文档中。

开始用户信息流 (USER_STREAM)
POST /openapi/v1/userDataStream

开始一个新的用户信息流。如果keepalive指令没有发送,信息流将将会在60分钟后关闭。

Weight:
1

Parameters:

名称类型是否强制描述
recvWindowLONGNO
timestampLONGYES

Response:

{
  "listenKey": "1A9LWJjuMwKWYP4QQPw34GRm8gz3x5AephXSuqcDef1RnzoBVhEeGE963CoS1Sgj"
}
Keepalive用户信息流 (USER_STREAM)
PUT /openapi/v1/userDataStream

维持用户信息流来防止断开连接。用户信息流会在60分钟后自动中断,所以建议30分钟发送一次ping请求。

Weight:
1

Parameters:

名称类型是否强制描述
listenKeySTRINGYES
recvWindowLONGNO
timestampLONGYES

Response:

{}
关闭用户信息流 (USER_STREAM)
DELETE /openapi/v1/userDataStream

关闭用户信息流

Weight:
1

Parameters:

名称类型是否强制描述
listenKeySTRINGYES
recvWindowLONGNO
timestampLONGYES

Response:

{}
子账户列表(SUB_ACCOUNT_LIST)
POST /openapi/v1/subAccount/query

查询子账户列表

Parameters:

Weight:
5

Response:

[
    {
        "accountId": "122216245228131",
        "accountName": "",
        "accountType": 1,
        "accountIndex": 0 // 账户index 0 默认账户 >0, 创建的子账户
    },
    {
        "accountId": "482694560475091200",
        "accountName": "createSubAccountByCurl", // 子账户名称
        "accountType": 1, // 子账户类型 1 币币账户 3 合约账户
        "accountIndex": 1
    },
    {
        "accountId": "422446415267060992",
        "accountName": "",
        "accountType": 3,
        "accountIndex": 0
    },
    {
        "accountId": "482711469199298816",
        "accountName": "createSubAccountByCurl",
        "accountType": 3,
        "accountIndex": 1
    },
]
账户内转账 (ACCOUNT_TRANSFER)
POST /openapi/v1/transfer

转账

Weight:
1

Parameters:

名称类型是否强制描述
fromAccountTypeintYES源账户类型, 1 钱包(币币)账户 2 期权账户 3 合约账户
fromAccountIndexintYES子账户index, 主账户Api调用时候有用,从子账户列表接口获取
toAccountTypeintYES目标账户类型, 1 钱包(币币)账户 2 期权账户 3 合约账户
toAccountIndexintYES子账户index, 主账户Api调用时候有用,从子账户列表接口获取
tokenIdSTRINGYEStokenID
amountSTRINGYES转账数量

Response:

{
    "success":"true" // 0成功
}

说明

1、转账账户和收款账户的其中一方,必须是主账户(钱包账户)

2、主账户Api可以从钱包账户向其他账户(包括子账户)转账,也可以从其他账户向钱包账户转账

3、子账户Api调用的时候只能从当前子账户向主账户(钱包账户)转账,所以fromAccountType\fromAccountIndex\toAccountType\toAccountIndex不用填

查询流水 (BALANCE_FLOW)
POST /openapi/v1/balance_flow

查询账户流水

Weight:
5

Parameters:

名称类型是否强制描述
accountTypeint账户对应的account_type
accountIndexint账户对应的account_index
tokenIdstringtoken_id
fromFlowIdlong顺向查询数据
endFlowIdlong反向查询数据
startTimelong开始时间
endTimelong结束时间
limitinteger每页记录数

Response:

[
    {
        "id": "539870570957903104",
        "accountId": "122216245228131",
        "tokenId": "BTC",
        "tokenName": "BTC",
        "flowTypeValue": 51, // 流水类型
        "flowType": "USER_ACCOUNT_TRANSFER", // 流水类型名称
        "flowName": "Transfer", // 流水类型说明
        "change": "-12.5", // 变动值
        "total": "379.624059937852365", // 变动后当前tokenId总资产
        "created": "1579093587214"
    },
    {
        "id": "536072393645448960",
        "accountId": "122216245228131",
        "tokenId": "USDT",
        "tokenName": "USDT",
        "flowTypeValue": 7,
        "flowType": "AIRDROP",
        "flowName": "Airdrop",
        "change": "-2000",
        "total": "918662.0917630848",
        "created": "1578640809195"
    }
]

说明

1、主账户Api可以查询钱包账户或者其他账户(包括子账户,指定accountType和accountIndex)的流水’

2、子账户Api只能查询当前子账户的流水,所以不用指定accountType和accountIndex

流水类型说明请见如下

归类类型参数名类型参数代号解释说明
通用流水类TRADE1交易
通用流水类FEE2交易手续费
通用流水类TRANSFER3转账
通用流水类DEPOSIT4充值
衍生品业务MAKER_REWARD27maker奖励
衍生品业务PNL28期货等的盈亏
衍生品业务SETTLEMENT30交割
衍生品业务LIQUIDATION31强平
衍生品业务FUNDING_SETTLEMENT32期货等的资金费率结算
用户子账户之间内部转账USER_ACCOUNT_TRANSFER51userAccountTransfer 专用,流水没有subjectExtId
OTCOTC_BUY_COIN65OTC 买入coin
OTCOTC_SELL_COIN66OTC 卖出coin
OTCOTC_FEE73OTC 手续费
OTCOTC_TRADE200旧版 OTC 流水
活动ACTIVITY_AWARD67活动奖励
活动INVITATION_REFERRAL_BONUS68邀请返佣
活动REGISTER_BONUS69注册送礼
活动AIRDROP70空投
活动MINE_REWARD71挖矿奖励

过滤层

过滤层(filter)定义某个broker的某个symbol的交易规则
过滤层(filter)有两个大类:symbol filtersbroker filters

Symbol过滤层
PRICE_FILTER

PRICE_FILTER 定义某个symbol的price 精度. 一共有3个部分:

  • minPrice 定义最小允许的 price/stopPrice
  • maxPrice 定义最大允许的 price/stopPrice.
  • tickSize 定义price/stopPrice 可以增加和减少的间隔。

如果要通过price filter要求,price/stopPrice必须满足:

  • price >= minPrice
  • price <= maxPrice
  • (price-minPrice) % tickSize == 0

/brokerInfo格式:

  {
    "filterType": "PRICE_FILTER",
    "minPrice": "0.00000100",
    "maxPrice": "100000.00000000",
    "tickSize": "0.00000100"
  }
LOT_SIZE

LOT_SIZE 过滤层定义某个symbol quantity(在拍卖行里又称为"lots")的精度。 一共有三个部分:

  • minQty 定义最小允许的 quantity/icebergQty
  • maxQty 定义最大允许的 quantity/icebergQty
  • stepSize定义quantity/icebergQty可以增加和减少的间隔。

如果要通过lot size要求,quantity/icebergQty必须满足:

  • quantity >= minQty
  • quantity <= maxQty
  • (quantity-minQty) % stepSize == 0

/brokerInfo格式:

  {
    "filterType": "LOT_SIZE",
    "minQty": "0.00100000",
    "maxQty": "100000.00000000",
    "stepSize": "0.00100000"
  }
MIN_NOTIONAL

MIN_NOTIONAL 过滤层定义某个symbol的名义金额精度。一个订单的名义金额为 price * quantity.

/brokerInfo format:

  {
    "filterType": "MIN_NOTIONAL",
    "minNotional": "0.00100000"
  }
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

比特量化

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值