Skip to content

Instantly share code, notes, and snippets.

@yifanes
Forked from coinall/Coin_All_API.md
Created October 8, 2019 08:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yifanes/b9c28acc75f2ca5bc59f282563c12320 to your computer and use it in GitHub Desktop.
Save yifanes/b9c28acc75f2ca5bc59f282563c12320 to your computer and use it in GitHub Desktop.

API概述

交易市场概况和基础信息

撮合引擎

成交价

CoinAll撮合系统撮合订单的优先级按照价格优于时间的优先级来撮合,优先撮合价格更有优势的订单。当价格一致时按照下单时间顺序撮合,先下单的先撮合。 比如深度列表中目前有3笔挂单等待成交,分别为1: 9900USDT买1BTC,2: 10100USDT买2BTC,3: 9900USDT买1.5BTC。他们是按时间顺序1-2-3进入撮合系统的,根据价格优先,系统优先撮合订单2,根据时间优先,1跟3优先撮合1。所以系统撮合顺序是2-1-3。

订单撮合时成交价将按maker挂单价格成交,而非taker吃单价格。 例如:A用户在10000USDT挂了1BTC的买单,然后B用户以8000USDT的价格下了1BTC的卖单,因为A用户的订单先进入撮合系统挂在深度列表上,所以以A的价格为准,最终这笔订单最终以10000USDT成交。

订单生命周期

订单进入撮合引擎后是"未成交"状态;
如果一个订单被撮合而全部成交,那么它会变成"已成交"状态; 一个订单被撮合可能出现部分成交,那么他的状态会变成"部分成交"状态,并且继续留在撮合队列中进行撮合; 一个留在撮合队伍中等待撮合的订单被撤销,那么他的状态会变成"已撤销"状态; 发起撤消到完成撤消的过程中有一个过程状态"撤单中"; 被撤消或者全部成交的订单将被从撮合队列中剔除。

####币币交易限价规则 为了防止用户下错大单造成市场异常波动和个人资金损失,CoinAll币币交易设置了FOK限价规则:如果用户在币币交易所下的市价单/限价单可以与当前买卖盘内订单直接成交,那么系统会判断成交深度对应的价格与同方向盘口价的偏差是否超出30%。如果超过,则此订单将被系统立即全数撤销,否则此订单正常进行撮合。
例如:某用户在XRP/BTC交易区下了100BTC的市价买单(此时卖一价为0.00012),系统判断订单完成成交后最新成交价为0.0002。此时,(0.0002-0.00012)/0.00012=66.7%>30%,用户的这笔市价买单将被立即撤销,不会和买卖盘内订单进行撮合。

合约交易限价规则

限价是保护投资者,防止市场被操控的重要风控手段之一。如果没有限价规则,少数交易者可以使用少量资金和高杠杆倍数,使合约价格大幅波动,人为制造大额分摊。另一方面,如果限价规则过于简单,会导致市场缺乏活力,与币币没有溢价,失去了合约交易本身的意义。为了更好地起到风控效果,限价的具体规则是不完全公开的,CoinAll会综合市场的交易量、成交量、持仓量、偏离指数的百分比等十几个参数,动态地计算风控规则。同时为了方便用户更好地了解限价和交易便利。 限价规则:该限价规则适合所有币种的合约。 新合约生成10分钟内:最高价=现货指数(1+5%),最低价=现货指数(1-5%)。 合约生成了10分钟后:最高价=近10分钟溢价平均值+现货指数(1+3%),最低价=近10分钟溢价均值+现货指数(1-3%),溢价=合约价格-现货价格。 若计算后的价格超过最高偏离度的现货指数25%或价格小于0,则最高价=现货指数(1+25%),最低价=现货指数(1-25%)。 以上规则,开平仓都受限制,若开多或平空,当委托价高于最高价,则将触发限价;若开空或平多,当委托价低于最新价,则将触发限价。

费用

交易费用

CoinAll采用maker-taker收费规则,为鼓励挂单,maker挂单成交的手续费会比taker吃单成交的手续费低。 同时,为了鼓励成交,CoinAll推出阶梯手续费政策,根据你前30天的累计交易量划分不同的手续费等级,成交量越高,手续费等级越高,手续费越低。 除了手续费优惠,CoinAll还为提供流动性的专业用户提供了市商计划。参与市商计划后,只要您能够提供稳定的深度以及盘口点差,即可获得Maker手续费返还。 详情请查看(跳转至费率详情页面)

充/提币费用

CoinAll不收取任何充币/提币费用,但是提币到数字货币地址的过程中产生的矿工手续费需要用户自己承担。

服务器

CoinAll的数据库和服务器运行在香港。为了最大限度地减少API访问延迟,建议您使用与香港通讯通畅的服务器。

请求

介绍

REST API提供账户管理、行情查询和交易功能。 REST API终端URL https://www.coinall.com/api
所有请求基于Https协议,请求头信息中contentType需要统一设置为:’application/json’

错误

除非特殊说明,错误请求都通过HTTP 4xx或者状态码进行返回,返回内容还将包含错误原因、参数信息。您的HTTP库应配置为非2xx请求提供消息主体,以便您可以从主体读取消息字段。

常见错误码
400 Bad Request – Invalid request format
401 Unauthorized – Invalid API Key
403 Forbidden – You do not have access to the requested resource
404 Not Found
500 Internal Server Error – We had a problem with our server

成功

HTTP状态码200表示成功响应,并可能包含内容。如果响应含有内容,则将显示在相应的返回内容里面。

分页

CoinAll为所有返回数据集的REST请求使用分页。分页允许在结果的当前页面之前和之后获取结果,并且非常适合于实时数据。像/ trades,/ fill,/ orders这样默认返回最新内容的请求。根据当前的返回结果,后续请求可以在他的基础之上指定请求数据的方向,可以请求在这之前的,也可以请求在这之后的数据。 before和after可通过响应头OK-BEFORE和OK-AFTER使用。在请求初始请求页面之后,请求应使用这些值。 Before 游标指向的是返回结果页的第一条内容,After游标指向的是返回结果页的最后一条内容。(页面内容是按照最新的排在最上面的顺序) 如果你希望请求当前返回结果页最后的新数据,需要用before参数。你的第一个请求可以省略这个参数来获得默认的第一页。 返回结果将会包含一个OK-BEFORE头这里会包含当前返回结果页里面最新的一条的数据的ID。 返回结果将会包含一个OK-AFTER头这里会包含当前返回结果页里面最后的一条的数据的ID。 举例如果你请求返回的结果每一条内容的id 是 111,112,113,114,115,116,117,118,119,120 那么在返回结果里面这些内容的排列顺序是120,119,118,117,116,115,114,113,112,111 这时OK-BEFORE记录的ID是120,OK-AFTER记录的ID是111,如果你想访问更新的数据,如120以后的数据那么你需要使用before参数,如:orders?before=120&limit=5,则返回的是120以后的5条数据,且排列顺序为:125,124,123,122,121

参数
参数名 描述
before 请求此页码之后(更新)的分页(一列数:1,2,3,4,5.befor-e 4只有5,after 4有1,2,3)
after 请求此页码之前(更旧)的分页
limit 分页返回的结果集数量,默认为100,最大为100
例子

GET /orders?before=2&limit=30

###标准规范

时间戳

除非另外指定,API中的所有时间戳均以微秒为单位返回,符合ISO 8601标准。请确保您可以解析ISO 8601格式。

例子

2014-11-06T10:34:47.123456Z

数字

为了保持跨平台时精度的完整性,十进制数字作为字符串返回。建议您在发起请求时也将数字转换为字符串以避免截断和精度错误。

整数(如交易编号和顺序)不加引号。

ID

除非另有说明,大多数标识符是UUID。当提出一个需要UUID的请求时,以下两个形式(有和没有破折号)都被接受。

132fb6ae-456b-4654-b4e0-d681ac05cea1或者132fb6ae456b4654b4e0d681ac05cea1

###接口类型

公共接口

公共接口可用于获取配置信息和行情数据。公共请求无需认证即可调用。

私有接口

私有接口可用于订单管理和账户管理。每个私有请求必须使用规范的验证形式进行签名。

私有接口需要使用您的API key进行验证。您可以在这里生成API key。

###访问限制 当访问超过频率限制时,将返回429状态:请求太频繁。

REST API

通过APIKEY限制公共接口和私有接口的调用,如果用户访问的是公共接口无APIKEY则通过IP地址进行限速。

限速规则:公共接口每个接口6次/秒,私有接口每个接口10次/秒

###验证

生成API Key

在对任何请求进行签名之前,您必须通过CoinAll网站创建一个API Key。创建API Key后,您将获得3个必须记住的信息:

API Key
Secret
Passphrase
API Key和Secret将由CoinAll随机生成和提供,Passphrase将由您提供以确保API访问的安全性。CoinAll将存储Passphrase加密后的哈希值进行验证,但如果您忘记Passphrase,则无法恢复,请您通过CoinAll网站重新生成新的API Key。

发起请求

所有REST请求都必须包含以下内容:

OK-ACCESS-KEY字符串类型的API Key。

OK-ACCESS-SIGN使用base64编码签名(请参阅签名)。

OK-ACCESS-TIMESTAMP发起请求的时间戳。

OK-ACCESS-PASSPHRASE您在创建API密钥时指定的Passphrase。

所有请求都应该含有application/json类型内容,并且是有效的JSON。

签名

OK-ACCESS-SIGN的请求头是对timestamp + method + requestPath + body字符串(+表示字符串连接)使用HMAC SHA256方法加密,通过BASE64编码输出而得到的。

其中,timestamp的值与OK-ACCESS-TIMESTAMP请求头相同。

method是请求方法,字母全部大写。

requestPath是请求接口路径。

body是指请求主体的字符串,如果请求没有主体(通常为GET请求)则body可省略。

签名代码

 private String signature(String timestamp, String method, String requestPath, String body, String secretKey)
            throws UnsupportedEncodingException, NoSuchAlgorithmException, InvalidKeyException {
        String signStr = null;
        if (StringUtils.isNotEmpty(secretKey)) {
            body = body == null ? "" : body;
            method = method.toUpperCase();
            String preHash = timestamp + method + requestPath + body;
            byte[] secretKeyBytes = secretKey.getBytes("UTF-8");
            SecretKeySpec secretKeySpec = new SecretKeySpec(secretKeyBytes, "HmacSHA256");
            Mac mac = Mac.getInstance("HmacSHA256");
            mac.init(secretKeySpec);
            signStr = Base64.getEncoder().encodeToString(mac.doFinal(preHash.getBytes("UTF-8")));
        }
        return signStr;
    }

时间戳

OK-ACCESS-TIMESTAMP请求头必须是UTC时区Unix时间戳的十进制秒数格式或ISO8601标准的时间格式。

时间戳和服务器时间相差30秒以上的请求将被系统视为过期并拒绝。如果您认为服务器和API服务器之间存在较大的时间偏差,那么我们建议您使用获取服务器时间的接口来查询API服务器时间。

####获取服务器时间 获取API服务器的时间。此接口为公共接口,不需要身份验证。 #####HTTP请求 GET/api/general/v3/time #####返回参数

参数名 描述
iso ISO8601标准的时间格式
epoch UTC时区Unix时间戳的十进制秒数格式
返回值
"{
    "iso": "2015-01-07T23:47:25.201Z",
    "epoch": 1420674445.201
}"

##钱包账户 钱包主账户与交易账户/子账户之间的资金划转,获取充值地址,提现等功能。

####获取币种列表 获取平台所有币种列表。并非所有币种都可被用于交易。在ISO 4217标准中未被定义的币种代码可能使用的是自定义代码。

#####HTTP请求 GET/api/account/v3/currencies #####返回参数

参数名 描述
id 币种代码
name 币种名称
deposit 是否可充值,0表示不可充值,1表示可以充值
withdraw 是否可提币,0表示不可提币,1表示可以提币
withdraw_min 币种最小提币量
返回值
[{
    "id": "BTC",
    "name": “Bitcoin”,
     "deposit": "1",
     "withdraw": “1”,
      “withdraw_min”:”0.000001btc”
}, {
    "id": "ETH",
    "name": “Ethereum”,
    "deposit": "1",
     "withdraw": “1”,
     “withdraw_min”:”0.0001eth”
    }
 …
]

####钱包账户信息 获取钱包账户资产列表,查询各币种的余额、冻结和可用等信息。

HTTP请求

GET/api/account/v3/wallet

返回参数
参数名 描述
currency 币种
balance 余额
holds 冻结(不可用)
available 可用于提现或资金划转的数量
返回值
[
{
    "currency": "BTC",
    "balance": “5”,
     "holds": “3.2",
     "available": “1.8”
     }, {
    "currency": "BTC",
    "balance": “Bitcoin”,
     "holds": "1",
     "available": “1”
    }
 …
]

####单一币种账户信息 获取钱包账户单个币种的余额、冻结和可用等信息。

HTTP请求

GET/api/account/v3/wallet/<currency>

返回参数
参数名 描述
balance 余额
holds 冻结(不可用)
available 可用于提现或资金划转的数量
返回值
{
     "balance": “5”,
     "holds": “3.2",
     "available": “1.8”
     }

####资金划转 CoinAll站内在钱包账户、交易账户和子账户之间进行资金划转。

HTTP请求

POST/api/account/v3/transfer

查询参数
参数名 描述
currency 币种
amount 划转数量
from 转出账户(0:子账户 1:币币 3:合约 4:C2C 5:币币杠杆 6:钱包 7:ETT)
to 转入账户(0:子账户 1:币币 3:合约 4:C2C 5:币币杠杆 6:钱包 7:ETT)
sub_account [非必填]子账号登录名
product_id [非必填]杠杆币对ID,仅限已开通杠杆的币对
返回参数
参数名 描述
transfer_id 划转ID
currency 划转币种
from 转出账户
amount 划转量
to 转入账户
result 划转结果。若是划转失败,将给出错误码提示
返回值
{
    “transfer_id": “754147”,
    “currency”:“ETC”
    “from": "6",
    “amount": “0.1",
    “to”: "1",
    “result": true
}

#####解释说明 from或to指定为0时,sub_account为必填项。 from或to指定为5时,product_id为必填项。 ETT账户只能跟币币账户互转,不支持划转到其他账户

####提币 提币到CoinAll国际站账户,CoinAll账户或数字货币地址。

HTTP请求

POST/api/account/v3/withdrawals

查询参数
参数名 描述
currency 币种
amount 数量
target 提币到(2:CoinAll国际 3:CoinAll 4:数字货币地址)
withdraw_address 认证过的数字货币地址、邮箱或手机号
trade_pwd 交易密码
fee 网络手续费≥0.提币到CoinAll国际或CoinAll免手续费,请设置为0.提币到数字货币地址所需网络手续费可通过提币手续费接口查询
返回参数
参数名 描述
currency 提币币种
amount 提币数量
withdraw_id 提币申请ID
result 提币申请结果。若是提现申请失败,将给出错误码提示
返回值
{
    “currency”:”ETC”,
    “amount”:”1”
    "withdraw_id": "593533d2-ff31-46e0-b22e-ca754147a96a",
    "result": true
    
}

####提币手续费 查询提现到数字货币地址时,建议网络手续费信息。手续费越高,网络确认越快。

HTTP请求

GET/api/account/v3/withdrawals/fee

查询参数
参数名 描述
currency [非必填]币种,不填则返回所有
返回参数
参数名 描述
currency 币种
min 最小提币手续费数量
max 最大提币手续费数量
返回值
{
    "currency": "BTC",
    "min": 0.002,
    "max": 0.005,
 
}

####查询最近所有币种的提币记录 查询最近所有币种的提币记录。

HTTP请求

GET/api/account/v3/withdrawals/history

返回参数
参数名 描述
currency 币种
amount 数量
created_at 提币申请时间
from 提币地址(如果收币地址是CoinAll平台地址,则此处将显示用户账户)
to 收币地址
tag 部分币种提币需要标签,若不需要则不返回此字段
paymentld 部分币种提币需要此字段,若不需要则不返回此字段
txid 提币哈希记录(内部转账将不返回此字段)
fee 提币手续费
返回值
[
{
   "currency": "ETH",
    "amount": “20”,
     “created_at”: "2018-04-18 11:00:23"
     “from”:”0x6cc5f688a315f3dc28a7781717a9a798a59fda7b",
    “to": “0x9edfe04c866d636526828e523a60501a37daf8f6",
        “txid":“0xf1fb12a03c483f475fc33abcb5bf42a765c7131e2f955025aec706be3f616da4”,
     “fee”: “0.00042eth”,
  },
{
   "currency": "XRP",
    "amount": “200”,
     “created_at”: "2018-04-18 11:00:23"
     “from”:”rUzWJkXyEtT8ekSSxkBYPqCvHpngcy6Fks",
    “to": “r4hYwnBsNH764iTfhRSopu4M3Ct5gMkCGD",
     “tag”:”100061235”   “txid":“6B18A0E7078B5C850E640140A7F15A21A14D47C6DE4EAC7DF60BD7EC26918877”,
     “fee”: “0.0001xrp”,
  },

]

#####解释说明 此处的from显示的是用户CoinAll账户,并不等于区块链上实际的发币地址,如果提币到CoinAll则to也显示为CoinAll账户,此时将不返回txid 返回所有币种最近100条提币记录,若想查询更多请分币对查询。 注意此处显示的最新提币记录可能还没有在区块上打包成功,若此处有提币记录而实际未到账,请耐心等待

####查询单个币种提币记录 查询单个币种的最近成交记录。

HTTP请求

GET/api/account/v3/withdrawals/history/<currency>

返回参数
参数名 描述
amount 数量
created_at 提币申请时间
from 提币地址(如果收币地址是CoinAll平台地址,则此处将显示用户账户)
to 收币地址
tag 部分币种提币需要标签,若不需要则不返回此字段
paymentld 部分币种提币需要此字段,若不需要则不返回此字段
txid 提币哈希记录(内部转账将不返回此字段)
fee 提币手续费
返回值
[
{
 
    "amount": “20”,
     “created_at”: "2018-04-18 11:00:23"
     “from”:”0x6cc5f688a315f3dc28a7781717a9a798a59fda7b",
    “to": “0x9edfe04c866d636526828e523a60501a37daf8f6",
        “txid":“0xf1fb12a03c483f475fc33abcb5bf42a765c7131e2f955025aec706be3f616da4”,
     “fee”: “0.00042eth”,
  },

]

#####解释说明 此处的from显示的是用户CoinAll账户,并不等于区块链上实际的发币地址,如果提币到CoinAll则to也显示为CoinAll账户,此时将不返回txid 返回所有币种最近100条提币记录,若想查询更多请分币对查询。 注意此处显示的最新提币记录可能还没有在区块上打包成功,若此处有提币记录而实际未到账,请耐心等待

####账单流水查询 查询钱包账户账单流水。流水会分页,并且按时间倒序排序和储存,最新的排在最前面。请参阅分页部分以获取第一页之后的其他记录。

HTTP请求

GET/api/account/v3/ledger

查询参数
参数名 描述
currency [非必填]币种
type [非必填]1:充值2:提现13:撤销提现18:转入合约账户19:合约账户转出20:转入子账户21:子账户转出28:领取29:转入指数交易区30:指数交易区转出 31:转入点对点账户32:点对点账户转出 33:转入币币杠杆账户 34:币币杠杆账户转出 37:转入币币账户 38:币币账户转出
before 请求此页码之后(更新)的分页
after 请求此页码之前(更旧)的分页
limit 分页返回的结果集数量,默认为100,最大为100
返回参数
参数名 描述
ledger_id 账单ID
currency 币种
balance 余额
amount 变动数量
type 账单类型
fee 手续费
created_at 账单创建时间
返回值
[{
    "ledger_id": "593533d2-ff31-46e0-b22e-ca754147a96a",
    "currency": "BTC",
    "balance": “200”,
    "amount": “2”,
    "fee": “0”,
    "type": "withdraw",
    "created_at": "2018-04-18 11:00:23"
}]

####获取充值地址 获取各个币种的充值地址,包括曾使用过的老地址。

HTTP请求

GET/api/account/v3/deposit/address

查询参数
参数名 描述
currency [必填]币种
返回参数
参数名 描述
address 充值地址
tag 充值tag(当该币种不需要tag的时候不会返回此字段)
paymentld 充值payment_id(单该币种不需要payment_id时不会返回此字段)
返回值
[{
    "address":"dafdsafdsfe",
    “tag":"123",
}, {
    "address":"dafdsafdsfe",
    “paymentId”:”xyzddrrrsdfsdf"
}]

#####解释说明 IOTA充值地址不能重复使用!在向IOTA地址发起充值后,再次充值到此相同地址将不会被确认到账。 某些币充值到账,需要同时填写一个充值地址和一个tag/paymentId。如果未遵守正确的充值步骤,币会丢失!

####获取所有币种充值记录 获取所有币种的充值记录。

HTTP请求

GET/api/account/v3/deposit/history

返回参数
参数名 描述
currency 充币币种
amount 充值数量
to 此笔充值到账地址
txid 区块转账哈希记录
created_at 充值到账时间
返回值
[{
     "currency": "ETH",
     "amount": 2,
   “to”:”0x9edfe04c866d636526828e523a60501a37daf8f6",    “txid”:“0xf1fb12a03c483f475fc33abcb5bf42a765c7131e2f955025aec706be3f616da4”,
    "created_at": "2018-04-18 11:00:23"
}]

####获取单个币种充值记录 获取单个币种的充值记录

HTTP

GET/api/account/v3/deposit/history/<currency>

返回参数
参数名 描述
amount 充值数量
to 此笔充值到账地址
txid 区块转账哈希记录
created_at 充值到账时间
返回值
[{
   "amount": 2,
   “to”:”0x9edfe04c866d636526828e523a60501a37daf8f6",    “txid”:“0xf1fb12a03c483f475fc33abcb5bf42a765c7131e2f955025aec706be3f616da4”,
    "created_at": "2018-04-18 11:00:23"
}]

##币币 ###币币交易 币币交易的行情信息,账户信息,订单操作,订单查询,账单明细查询。 ####币币账户信息 获取币币账户资产列表,查询各币种的余额、冻结和可用等信息。

HTTP请求

GET/api/spot/v3/accounts

返回参数
参数名 描述
currency 币种
balance 余额
holds 冻结(不可用)
available 可用于交易或资金划转的数量
id 账户ID
返回值
[{
   "currency": “BTC”,
   “balance”: ”2.3”,    
    “holds”: “2”,
    "available": “0.3”,
    “id”:”344555”
}]

#####解释说明 当你下市价单或限价单时,订单所需的资金将被冻结。这部分数量将不能被用于其他订单或者资金划转。资金将一直被冻结直至订单被成交或者取消。

####单一币种信息 获取币币账户单个币种的余额、冻结和可用等信息。

HTTP请求

GET/api/spot/v3/accounts/<currency>

返回参数
参数名 描述
currency 币种
balance 余额
holds 冻结(不可用)
available 可用于交易或资金划转的数量
id 账户id
返回值
[{
   "currency": “BTC”,
   “balance”: ”2.3”,    
    “holds”: “2”,
    "available": “0.3”,
    “id”:”344555”
}]

####账单流水查询 列出账户资产流水。账户资产流水是指导致账户余额增加或减少的行为。流水会分页,并且按时间倒序排序和存储,最新的排在最前面。请参阅分页部分以获取第一页之后的其他记录。

HTTP请求

GET/api/spot/v3/accounts/<currency>/ledger

返回参数
参数名 描述
ledger_id 账单ID
balance 余额
currency 币种
amount 变动数量
type 流水来源
created_at 账单创建时间
details 如果类型是match或者fee,则会有该details字段将包含order,product信息
order_id 交易的ID
product_id 交易的币对
返回值
[
{
      “amount":"0.999",
      “balance”:"6.539194",
       “currency”:“LTC”
      “create_at":"2018-06-20T02:31:00Z",
      “details":
             {“order_id”:7542,"product_id":"LTC-BTC"},
      “ledger_id": “912025447”,
      “type”:”match"
},
{
      “amount":"-1",
      “balance”:"31.797831",
      “currency”:“LTC”
      “create_at":"2018-06-20T02:31:00Z",
      “details":
        {“order_id”:7542,"product_id":"LTC-BTC"},
      “ledger_id”:“912025427”,
      “type”:”match"},
       …
]

解释说明

流水来源类型 描述
transfer 资金转入/转出
match 交易产生的资金变动
fee 手续费
rebate 返佣

####下单 CoinAll币币交易提供限价单和市价单两种下单模式(更多下单模式将会在后期支持)。只有当您的账户有足够的资金才能下单。一旦下单,您的账户资金将在订单生命周期内被冻结。被冻结的资金以及数量取决于订单指定的类型和参数。

HTTP请求

POST/api/spot/v3/orders

通用参数
参数名 描述
client_oid [非必填]由您设置的订单ID来识别您的订单
type limit,market(默认是limit)
side buy or sell
product_id 币对名称
system_type 下单类型(1表示币币交易,2表示币币杠杆交易,默认为1)
限价单特殊参数
参数名 描述
price 价格
size 买入或卖出的数量
市价单特殊参数
参数名 描述
size 卖出数量,市价卖出时必填size,不填funds
funds 买入金额,市价买入是必填funds,不填size
返回参数
参数名 描述
order_id 订单ID
client_oid 由您设置的订单ID来识别您的订单
result 下单结果。若是下单失败,将给出错误码提示
返回值
{
    "order_id": "234652",
    "client_oid": “23",
    "result": true
}
解释说明

product_id product_id必须是有效的币对。币对列表可通过/ products接口获取。

client_oid 可选字段client_oid是您的交易程序自行生成的UUID。您可以使用此字段在系统返回给你的信息中识别订单。 client_oid与服务器分配的订单ID不同。如果您使用client_oid在系统返回的信息中发现对应订单,同样需要记录order_id,因为它将用于未来的订单状态更新查询。消息返回之后,client_oid就没有任何作用了。

type 下单时,您可以指定订单类型。您指定的订单类型将决定是否需要其他订单参数以及撮合引擎如何执行您的订单。如果type没有指定,订单类型将默认为limit。限价单既是默认订单类型,也是基本订单类型。限价单需要指定price和size。size是买入或卖出交易货币的数量,price表示每个交易货币相对计价货币的价格。限价单会按指定价格或更好的价格成交。根据市场条件,卖单可以按照指定价格或者更高价格来成交,买单可以按照指定价格或更低价格成交。如果限价单不能立即成交,那么限价单将进入深度列表,直到被另一个新订单成交或被用户撤单。 市价单不同于限价单,因为它们不提供价格控制。市价单提供了一种不必指定价格,而以固定数量的货币进行买入或者卖出的方式。市价单下单后会立即撮合,而不会被挂入深度列表。市价单总是吃单方(taker)并按taker收取手续费用。(注:如果你计划买入卖出的数量巨大时,将会对价格产生巨大影响,此时不推荐使用市价单)

price price表示买入或卖出的价格。价格必须是价格步长(quote_increment)的倍数。价格步长(quote_increment)是价格的最小增量,可通过product接口获取。

size size表示买入或卖出交易货币的数量。数量必须大于base_min_size。base_increment是交易货币数量的最小增量。上述参数都可通过product接口获取。 举例:假设 cac/usdt 的base_min_size是10,base_increment是0.0001。那么不能交易9.9个cac,但是可以交易10.0001个cac

funds funds表示被用于市价买入的计价货币的数量,市价买入时必填。例如,在BTC-USDT交易时,市价单指定5000 USDT表示将花费5000 USDT购买BTC。

holds 对于限价买单,系统将冻结计价货币的数量 = 限定价格 x 买入数量。对于限价卖单,系统将冻结你想卖出的交易货币的数量。对于市价买单,funds数量的计价货币将被冻结。对于市价卖单,size数量的交易货币将被冻结。如果您取消部分成交或未成交的订单,剩余资金将被解除冻结。

订单生命周期 HTTP请求将在订单被拒绝(资金不足,参数无效等)或下单成功(由匹配引擎接受)时作出响应。一个200响应表示该订单被接收并且进入撮合。进入撮合的订单可以部分或全部立即成交(取决于价格和市场条件)。部分成交的时候将把订单的剩余数量继续进行撮合。完全成交的订单将进入已成交状态。 监听行情数据的用户建议使用client_oid字段以便在接受到的信息中标识对应的数据。

响应 成功接受的订单将被分配一个订单ID。订单是否成功接受取决于撮合引擎是否接受。 未成交的订单不会过期,并将保持撮合状态,直到被成交或取消。

####撤销指定订单 撤销之前下的未完成订单。

HTTP请求

DELETE/api/spot/v3/orders/<order-id>

查询参数
参数名 描述
product_id [必填]提供此参数则撤销指定币对的相应订单,如果不提供此参数则返回错误码
解释说明

这order_id是服务器分配的订单ID,而不是用户传的的client_oid。

如果订单无法取消(已经成交或已取消),那么返回的报错内容里将显示相应的原因。

####批量撤销订单 撤销某币对的所有未完成订单。

HTTP请求

DELETE/api/spot/v3/orders

查询参数
参数名 描述
product_id [必填]提供此参数则撤销指定币对的订单,如果不提供此参数则返回错误码
返回值

返回值是被撤销订单ID列表。

[
    "3394",
    “3023",
    "3013",
    "3000",
    “2900"
]
解释说明

一次调用最多撤销50个订单。撤销的是最新的50个订单

无法保证一定会成功撤销,建议用户调用批量撤单接口后,再调用获取订单列表接口确认。

####获取订单列表 列出您当前所有的订单信息。这个请求支持分页,并且按时间倒序排序和存储,最新的排在最前面。请参阅分页部分以获取第一页之后的其他纪录。

HTTP请求

GET/api/spot/v3/orders

查询参数
参数名 描述
status [必填]仅列出相应状态的订单列表。(all:所有状态 open:未成交 part_filled:部分成交 canceling:撤销中 filled:已成交 canceled:已撤销)
product_id [必填]列出指定币对的订单
before 请求此页码之后(更新)的分页
after 请求此页码之后(更旧)的分页
limit 分页返回的结果集数量,默认为100,最大为100
返回参数
参数名 描述
order_id 订单ID
price 价格
size 交易货币数量
funds 买入金额,市价买入时返回
product_id 币对名称
side 订单方向
type 订单类型
created_at 订单创建时间
filled_size 已成交数量
executed_value 已成交金额
status 订单状态
返回值
[{
    "order_id": "125678",
    "price": "0.10000000",
    "size": "0.01000000",
    "product_id": "BTC-USDT",
    "side": "buy",
    "type": "limit",
    "created_at": "2016-12-08T20:02:28.53864Z",
    "filled_size": "0.00000000",
    "executed_value": "0.0000000000000000",
    "status": "open"
},{
    "order_id": "125600",
    "size": "1.00000000",
    "product_id": "BTC-USDT",
    "side": "sell",
    "type": "market",
    "created_at": "2016-12-08T20:09:05.508883Z",
    "filled_size": "1.00000000",
    "executed_value": "9.9750556620000000",
    "status": "done"
},{
    "order_id": "125459",
    "price": "0.10000000",
    "size": “0.01000000",
    "product_id": "BTC-USDT",
    "side": "buy",
    "type": "limit",
    "created_at": "2016-12-08T20:02:28.53864Z",
    "filled_size": "0.00000000",
    "executed_value": "0.0000000000000000",
    "status": "pending"
}]
解释说明

本接口只能查询最近两天的已成交和已撤销订单信息。

如果订单在其生命周期内没有任何成交,其记录可能被清除。这表示订单详细信息将不可用本接口来获取。

executed_value表示[已成交数量*成交均价。]

未成交的订单可能会根据市场情况在你发起请求和服务器响应之间改变状态。

####获取订单信息 通过订单ID获取单个订单信息。

HTTP请求

GET/api/spot/v3/orders/<order_id>

查询参数
参数名 描述
product_id [必填]提供此参数则撤销指定币对的相应订单,如果不提供此参数则返回错误码
返回参数
参数名 描述
order_id 订单ID
price 价格
size 交易货币数量
funds 买入金额,市价买入时返回
product_id 币对名称
side 订单方向
type 订单类型
created_at 订单创建时间
filled_size 已成交数量
executed_value 已成交金额
status 订单状态
返回参数
{
    "order_id": "233456",
    "funds": “10000.0000",
    “price”:“8014.23”,
    “size”:“4”,
    "product_id": "BTC-USDT",
    "side": "buy",
    "type": “market",
    "created_at": "2016-12-08T20:09:05.508883Z",
    "filled_size": "0.1291771",
    "executed_value": "10000.0000",
    "status": "done"
}
解释说明

本接口只能查询最近两天的已成交和已撤销订单信息。

如果订单在其生命周期内没有任何成交,其记录可能被清除,则响应可能因为没有相应的匹配而返回状态码404。

executed_value表示[已成交数量*成交均价]。

未成交的订单可能会根据市场情况在你发起请求和服务器响应之间改变状态。

####获取成交明细 获取最近的成交明细表。这个请求支持分页,并且按时间倒序排序和存储,最新的排在最前面。请参阅分页部分以获取第一页之后的其他记录。

HTTP请求

GET/api/spot/v3/fills

查询参数
参数名 描述
order_id 仅限此order_id的资金明细列表,默认返回所有
product_id 仅限此product_id的资金明细表,默认返回所有
before 请求此页码之后(更新)的分页
after 请求此页码之前(更旧)的分页
limit 分页返回的结果集数量,默认为100,最大为100
返回参数
参数名 描述
ledger_id 账单ID
product_id 币对名称
price 价格
size 数量
order_id 订单ID
created_at 订单创建时间
liquidity 流动性方向(T or M)
fee 手续费
side 订单方向(buy or sell)
返回值
[{
    "ledger_id": “741234”,
    "product_id": "BTC-USDT",
    "price": "10.00",
    "size": "0.01",
    "order_id": "234566",
    "created_at": "2014-11-07T22:19:28.578544Z",
    "liquidity": "T",
    "fee": “0.00025",
    "side": "buy"
}]
解释说明

手续费

fee字段表示这条账单记录所收取的手续费。

流动性

liquidity字段表示该账单是maker还是taker产生的。M表示Maker,T表示Taker。

分页

返回账单列表的ledger_id按降序排列,从最大ledger_id到最小ledger_id。OK-BEFORE都会有这样的第一笔ledger_id,以便将来的请求使用OK-BEFORE参数将获取一个更大的ledger_id(新的账单)。

###币币行情 用于获取行情数据,这组公开接口接口提供了行情数据的快照,无需认证即可调用。 ####获取币对信息

获取交易币对的列表,查询各币对的交易限制和价格步长等信息。

HTTP请求

GET/api/spot/v3/products

返回参数
参数名 描述
product_id 币对名称
base_currency 交易货币币种
quote_currency 计价货币币种
base_min_size 最小交易数量
base_increment 交易货币数量精度
quote_increment 交易价格精度
返回值
[{
    "product_id": "BTC-USDT",
    "base_currency": "BTC",
    "quote_currency": "USDT",
    "base_min_size": "0.001",
    "base_increment": "0.00000001",
    "quote_increment": "0.0001"
}]
解释说明

base_min_size指下单数量的最小值。base_increment(交易数量步长)是指下单数量的最小增量。例如,当base_increment为0.000001,委托数量传入0.0000121将被系统按截尾法修正为0.000012。

quote_increment(价格步长)是指下单价格的最小增量,委托价格必须是quote_increment的倍数。例如,当quote_increment为0.0001,委托价格传入0.02231将被系统按截尾法修正为0.0223。

####获取深度数据 获取币对的深度列表。这个请求不支持分页,一个请求返回整个深度列表。

HTTP请求

GET/api/spot/v3/products/<product-id>/book

查询参数
参数名 描述
size 返回深度档位数量,最多返回200
depth 按价格合并深度,默认为quote_increment(价格步长)
返回参数

返回值

{
  
    "bids": [
        [ price, size, num-orders ],
        [ "295.96", "4.39088265", 2 ],
        ...
    ],
    "asks": [
        [ price, size, num-orders ],
        [ "295.97", "25.23542881", 12 ],
        ...
    ]
}
解释说明

按价格合并深度是指每个价格区间将仅返回一个数量,就像在该价格区间上只有一个订单。

####获取全部ticker信息 获取平台全部币对的最新成交价、买一价、卖一价和24小时交易量的快照信息。

HTTP请求

GET/api/spot/v3/products/ticker

返回参数
参数名 描述
product_id 币对名称
last 最新成交价
best_ask 卖一价
best_bid 买一价
open_24h 24小时开盘价
high_24h 24小时最高价
low_24h 24小时最低价
base_volume_24h 24小时成交量,按交易货币统计
quote_volume_24h 24小时成交量,按交易货币统计
timestamp 系统时间戳
返回值
[{
    "product_id": "BTC-USDT",
    "last": "333.99",
    "best_ask": "333.98",
    "best_bid": "333.99",
    "high_24h": "0.193",
    "low_24h": "333.98",
    "base_volume_24h": "5957.11914015",
    "quote_volume_24h": "5957.11914015",
    "time": "2015-11-14T20:46:03.511254Z"
},{
    "product_id": "LTC-USDT",
    "last": "333.99",
    "best_ask": "333.98",
    "best_bid": "333.99",
    "high_24h": "0.193",
    "low_24h": "333.98",
    "base_volume_24h": "5957.11914015",
    "quote_volume_24h": "5957.11914015",
    "time": "2015-11-14T20:46:03.511254Z"
}]
解释说明

最高价、最低价和成交量都是按最近24小时为维度统计的。

24小时开盘价取值来自24小时前那一分钟的K线的开盘价。

####获取某个ticker信息 获取币对的最新成交价、买一价、卖一价和24小时交易量的快照信息。

HTTP请求

GET/api/spot/v3/products/<product-id>/ticker

返回参数
参数名 描述
product_id 币对名称
last 最新成交价
best_ask 卖一价
best_bid 买一价
open_24h 24小时开盘价
high_24h 24小时最高价
low_24h 24小时最低价
base_volume_24h 24小时成交量,按交易货币统计
quote_volume_24h 24小时成交量,按计价货币统计
timestamp 系统时间戳
返回值
{
    “product_id": "BTC-USDT",
    "last": "333.99",
    "best_ask": "333.98",
    "best_bid": "333.99",
    "high_24h": "0.193",
    "low_24h": "333.98",
    "base_volume_24h": "5957.11914015",
    "quote_volume_24h": "5957.11914015",
    "time": "2015-11-14T20:46:03.511254Z"
}
解释说明

最高价、最低价和成交量都是按最近24小时为维度统计的。

24小时开盘价取值来自24小时前那一分钟的K线的开盘价。

####获取成交数据 获取币对最新的2000条成交列表。这个请求支持分页,并且按时间倒序排序和存储,最新的排在最前面。请参阅分页部分以获取第一页之后的其他纪录。

HTTP请求

GET/api/spot/v3/products/<product_id>/trades

查询参数
参数名 描述
before 请求此页码之后(更新)的分页
after 请求此页码之前(更旧)的分页
limit 分页返回的结果集数量,默认为100,最大为100
返回参数
参数名 描述
time 成交时间
trade_id 成交ID
price 成交价格
size 成交数量
side 成交方向
返回值
[{
    "time": "2014-11-07T22:19:28.578544Z",
    "trade_id": "3245601",
    "price": "10.00000000",
    "size": "0.01000000",
    "side": "buy"
}, {
    "time": "2014-11-07T01:08:43.642366Z",
    "trade_id": "3245602",
    "price": "100.00000000",
    "size": "0.01000000",
    "side": "sell"
}]

解释说明

成交方向side是指Taker订单的下单方向,Taker表示主动与深度列表中挂单进行成交。buy表示价格上涨,因为Taker是买单吃掉深度,所以价格将上行。相反,sell表示价格下跌。

trade_id是记录成交信息的递增ID,可能不完整。

####获取K线数据 获取币对的K线数据。K线数据按请求的粒度分组返回。

HTTP请求

GET/api/spot/v3/products/<product_id>/candles

查询参数
参数名 描述
start 开始时间(ISO 8601标准)
end 结束时间(ISO 8601标准)
granularity 以秒来计量的时间粒度
返回参数
参数名 描述
time 开始时间
low 最低价格
high 最高价格
open 开盘价格
close 收盘价格
volume 交易量
返回值
[
    [ time, low, high, open, close, volume ],
    [ 1415398768, 0.32, 4.2, 0.35, 4.2, 12.3 ],
    ...
]
解释说明

如果用户没有提供开始时间或结束时间中的任一字段,则两个字段都将被忽略。未提供开始时间和结束时间的请求,则系统按时间粒度返回最近的300个数据。

时间粒度granularity必须是[60 180 300 900 1800 3600 7200 14400 21600 43200 86400 604800]中的任一值,否则请求将被拒绝。这些值分别对应的是[1min 3min 5min 15min 30min 1hour 2hour 4hour 6hour 12hour 1day 1week]的时间段。

K线数据可能不完整。K线数据不应该轮询调用。

单次请求的最大数据量是300。如果您选择的开始/结束时间和时间粒度导致超过单次请求的最大数据量,您的请求将只会返回300个数据。如果您希望在更大的时间范围内获取足够精细的数据,则需要使用多个开始/结束范围进行多次请求。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment