ZG交易所API接口文档

券商量化交易接口api到底是什么? 券商量化交易接口api是用于帮助投资者进行股票交易的应用程序编程接口,主要是由开发人员预先设定好的函数,证券投资者可以通过使用股票交易接口API,查询到各只股票的相关数据,帮助投资者进行股票交易。在这个过程中,券商量化交易接口api能够帮助投资者进行分析海量股票行情数据,针对用户情况给出适当的交易策略,并提供选股建议。券商量化交易接口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 string 和 request body里存在,只有query string的参数会被使用。

限制

  • 在 /openapi/v1/brokerInfo的rateLimits array里存在当前broker的REQUEST_WEIGHT和ORDER频率限制。
  • 如果任一频率限额被超过,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。
  • TRADE 和 USER_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: queryString和request 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,如果没有发送会自动生成。
stopPriceDECIMALNO与 STOP_LOSS, STOP_LOSS_LIMIT, TAKE_PROFIT, 和TAKE_PROFIT_LIMIT 订单一起使用. 当前不可用
icebergQtyDECIMALNO与 LIMIT, 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的,升序排列。
  • 如果同时有fromId和toId, 会返回订单号在fromId和toId的,倒序排列。
  • 如果fromId和toId都没有,会返回最新的成交记录,倒序排列。
    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
tokenIdstring否token_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 filters 和 broker 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"
  }
券商股票交易接口、券商交易接口api、股票量化交易接口 1、券商股票交易接口 2、券商交易接口api 3、股票量化交易接口 立即下载

相关推荐

Orange:一个基于 Python 的数据挖掘和机器学习平台

Orange是一个开源的数据挖掘和机器学习平台,采用可视化编程方式,用户可通过拖拽组件构建数据分析工作流。它支持交互式数据探索、多种机器学习算法,并允许Python脚本扩展。Orange特别适合教育和研究,提供直观的界面和丰富的可视化工具。最新版本为3.39.0,支持Windows、macOS和Linux系统。作为GPL许可的免费工具,它既能满足初学者需求,又能通过Python集成实现高级功能。

likuoelie的博客 1435

券商接口api,目前有哪些股票程序化交易的接口可以使用

2016年8月起股票程序化交易第三方接入受限,之后监管考虑逐步放开。有托管到券商机房、券商PB类系统、策略交易终端等合规途径,交易要合规。部分券商已提供相关API接口,未来或更多券商开放。

股票程序化接口 7843

LabVIEW多设备采集实战:1个程序同时控制3个RS485 Modbus仪表

本文详细介绍了如何使用LabVIEW实现多设备RS485 Modbus同步采集,涵盖硬件架构设计、多线程通信框架搭建、数据帧解析技巧及性能优化策略。通过实际项目案例,展示如何解决端口冲突、数据解析错误等工业自动化常见问题,提升采集系统实时性与可靠性。

qsc901234的博客 303

python炒股自动化(0),申请券商API接口

程序交易对普通散户来说主要门槛就是程序的编写,不过既然关注到程序交易了,一般的程序基础总是了解一些的,只要会一些基本的逻辑判断也能应付了,这也是本系列教程的初衷,先入门,实现基本的条件判断执行交易,策略的提高需要不断的摸索完善,量化交易的重点是策略,程序只是辅助。上回也说到,本系列以了解入门为主,主要是了解量化交易,程序交易的概念,在下一个系列中,我会详细讲到程序的编写方面,照猫画虎就行,零基础编写一些简单的交易程序,下一系列可以看做是plus版,感兴趣的朋友可以关注我,一起学习,共同进步。

股票量化交易自动交易程序化交易接口 1万+

国产SR8201F以太网PHY芯片调试避坑指南:从机贴失败到杜邦线救场的实战记录

本文详细介绍了国产SR8201F以太网PHY芯片的调试避坑指南,涵盖硬件设计、PCB布局、SMT贴片及软件驱动等关键环节。通过实战案例解析,帮助工程师解决MII/RMII接口配置、电源设计、信号完整性等典型问题,提升以太网通信稳定性与EMC性能。

c6d7e8f9g的博客 1216

RK3588设备树调试实战:解决NPU不加载、USB3.0识别异常与DP显示问题

本文深入探讨了RK3588设备树调试中的三大典型问题:NPU不加载、USB3.0识别异常与DP显示问题。通过详细的问题定位步骤、关键设备树修改和调试技巧,帮助开发者快速解决硬件适配中的挑战,提升RK3588平台的开发效率。

weixin_30576827的博客 477

swagger 接口文档生成与导出

1,接口生成 1.1 外部环境 jdk1.8 spirng-boot :2.0.3.RELEASE 1.2 依赖 <!-- swagger 接口生成插件 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui&l...

起航 5万+

硬件手册——PT100精密测温电路

PT100精密测温电路 一、需求分析 根据题目要求为:测温范围为0-100℃、测温精度要求为±1℃。由于铂电阻具有精度高、性能可靠、稳定性好的特点,且铂电阻的电阻相对变化率与温度的关系曲线线性度最好,故选择铂电阻作为敏感元件。而在国标中,铂电阻有几种不同的标准,如PT100、PT1000。分别对应着0摄氏度下铂电阻的阻值为100R和1000R,由于需要考虑铂电阻的自发热问题,所以尽量选择阻值小的铂电阻,故选择PT100为最终型号。 二、电路设计 2.1 热电阻接法 热电阻测温电路有多种接法,其中三线制会导致

weixin_41655430的博客 5万+

超详细!使用swagger自动生成Api文档(swagger-ui)

介绍 swagger是什么? swagger-ui 使用swagger-ui 简单使用 swagger api注解 本文参考: 介绍 这里是一些介绍,如果想直接看如何使用,请直接跳过这部分。但如果有时间,就姑且看一下吧,这部分大概用时3分钟。 swagger是什么? Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务的接口...

zhanggonglalala的博客 15万+

【华为OD机试真题 2025双机位A卷】958、 高效的任务规划 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 2025双机位A卷】958、 高效的任务规划 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2025e卷,od机试,2025E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2025华为od,

KJ.JK 1074

静态时序分析(STA)—— 标准单元库

目录 1、时序库 概览 2、时序模型 1、基本概念 2、影响因素 3、线性延时模型 4、非线性延时模型 5、单元时序弧 1、组合逻辑单元 2、时序逻辑单元 6、线负载模型 参考说明 上一篇,学习了 STA相关的基本概念,本篇继续学习 STA相关的 标准单元库。 1、时序库 概览 库文件概览: 2、时序模型 1、基本概念 2、影响因素 对于组合逻辑的时序弧而言,其延时的大小取决于: 1、输出负载,即,输出端的电容负载的大小。容性负载越大,...

记录所学,分享知识,结识挚友 2854

SPA项目接口文档

SPA项目接口文档用户登录树形菜单文章查询增加文章修改文章删除文章 用户登录 接口调用请求说明 http请求方式: POST(请使用https协议) http://localhost:8080/ssh/vue/userAction_login.action 参数 说明 uname 登录的用户名,必填 pwd 登录密码,必填 返回说明 返回JSON数据包: 成功时: { ...

qq_43588771的博客 215

更新|芒果YOLOv8改进182:注意力机制MLLA:即插即用|融合 Mamba 设计精髓的线性注意力视觉Transformer

芒果YOLOv8改进:即插即用,最新注意力机制MLLA:融合 Mamba 设计精髓的线性注意力视觉Transformer

包括YOLOv5、YOLOv7、YOLOv8等模型改进 865

干掉 Postman?这个文档工具真香!

实不相瞒我的收藏夹里躺着很多优质的开源项目,我有个爱好平时遇到感兴趣的开源项目都会记录下来,然后有时间在慢慢研究。前几天刚给同事分享一款非常好用的API文档工具,真的被惊艳到了,大家也感受...

tanqingbo的博客 207

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

梦网云通讯获取API上行接口get_mo说明POST实例

Post请求示例 urlencode userid=J10003&pwd=26dad7f364507df18f3841cc9c4ff94d&timestamp=0803192020&retsize=300 JSON {"userid":"J10003","pwd":"26dad7f364507df18f3841cc9c4ff94d","timestamp":"0803192

qingshangu的博客 852

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

梦网云通讯平台API单条短信发送接口single_send说明POST请求实例

urlencode userid=J10003&pwd=26dad7f364507df18f3841cc9c4ff94d&mobile=13800138000&content=%b2%e2%ca%d4%b6%cc%d0%c5&timestamp=0803192020&svrtype=SMS 001 &exno=0006&custid=b3d0a2783d31b21b8573&exda

qingshangu的博客 3053

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Springcloud 微服务常用组件

Spring-Boot+微服务 Java-web: 开发MVC三层架构网站 SSM: 框架,简化开发流程,配置较为复杂 -> war包 在tomcat中和运行 Spring-Boot + 微服务架构 : - jar包 - 内嵌tomcat - yaml 配置 - 数据库 Druid - 核心:自动装配原理 - 分布式开发 : Dubbo (RPC) + zookeeper - swagger:接口文档 - 任务调度:Spring-Boot - Spring-Security : Shiro

qq_43437162的博客 564

swagger

Swagger使用步骤 导入依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId>

weixin_42530835的博客 184

【2】Android开发常用第三方库

聚合数据接口 科大讯飞TTS引擎 Google zxing二维码库 Tomcat服务器搭建(本机搭建web端服务器) 聚合数据接口: 聚合数据接口,主要是围绕提供各种基站数据、LBS数据、生活常用数据以及金融数据等而规范的接口。提供的接口均需要AppKey值验证。用户需要在http://www.juhe.cn/reg上注册后,申请到对应的AppKey值。以HTTP Get/...

幸福诗歌的博客 451

网络热门编程项目导学:硅谷课堂

这是一个基于微服务的在线学习平台,包括公众号前台和管理后台。

努力做最接地气的编程干货分享,感谢关注 1397

web端视频通话sdk集成和功能实现流程(实时视频系列五)

本文介绍的是在wed端如何集成即构音视频SDK,以实现在wed端一对一,一对多及多人实时视频通话的功能。 一、SDK集成指引 1、安装 请从 jZego-RTC-SDK 下载 SDK。 npm下载包支持typescript语言(推荐): npm i webrtc-zego 2、集成SDK 可使用script直接引入 &lt;script src="jZego-rtc-1....

RTC之旅 9969

springfox源码_spring-boot集成swagger( 提供封装的starter源码)

swagger简介Swagger™的目标是为REST APIs 定义一个标准的,与语言无关的接口,使人和计算机在看不到源码或者看不到文档或者不能通过网络流量检测的情况下能发现和理解各种服务的功能。当服务通过Swagger定义,消费者就能与远程的服务互动通过少量的实现逻辑。类似于低级编程接口,Swagger去掉了调用服务时的很多猜测。浏览 Swagger-Spec 去了解更多关于Swagger 项目...

weixin_42304618的博客 198

微信公众平台消息接口开发(20)图片识别之人脸识别

微信公众平台开发模式 微信 公众平台 图片识别 人脸识别 作者:方倍工作室[QQ:1354386063]原文:http://www.cnblogs.com/txw1958/archive/2013/02/05/weixin-if20-face-recognition.html    本系统教程以微信公众平台应用天气神(账号WeatherGod,支持国内近2500个城市天气的名称、拼音、区号

BOTOAI 1588

自动化炒股:券商交易接口API调用方法

同花顺交易接口,券商交易接口API,东方财富的用户无门槛开通,输入对应券商的资金账号密码,即可调用OpenAPI进行交易。

x_9876554321_的博客 1万+

经久不衰的运输层协议 —— TCP协议

文章目录TCP基础概念TCP报文结构序号和确认号TCP连接的建立TCP连接的断开 TCP基础概念 TCP,Transmission Control Protocol(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的【RFC 793】 定义。 TCP协议是面向连接的,这是因为在一个应用进程可以开始向另一个应用进程发送数据之前,这两个进程必须先相互“握手”,即它们必须相互发送某些预备报文段,以建立确保数据传输所需的参数。 博主看很多人说TCP连接是建立在端到端系统之间的一条虚拟链

0 error(s) 944
上一篇: 微信企业号API SDK Python3版
下一篇: XT交易所API接口文档
比特量化
博客等级 码龄7年 952粉丝 222原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

比特量化

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

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

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

打赏作者

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

抵扣说明:

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

余额充值