English

简介

API 简介

欢迎使用BitDa API! 你可以使用此 API 获得市场行情数据,进行交易,并且管理你的账户。

在文档的右侧是代码,目前我们仅提供针对 shell 的代码示例。

可以使用以下域名访问:api.bitda.com

欢迎有优秀 maker 策略且交易量大的机构参与长期做市商项目。

公共接口

不需要鉴权可访问接口如下:

接口 说明 市场
GET /open/v1/tickers/market 所有交易对 现货
GET /open/v1/depth/market 深度 现货
GET /open/v1/trade/market 逐笔成交 现货
GET /open/v1/kline/market k线数据 现货

鉴权接口

可以访问的接口如下:

接口 说明 市场
GET /open/v1/tickers 全部或指定交易对 现货
GET /open/v1/balance 获取余额 现货
GET /open/v1/timestamp 服务器时间戳 现货
GET /open/v1/kline 市场k线数据 现货
GET /open/v1/depth 市场深度数据 现货
GET /open/v1/tickers/trade 获取最近5条成交记录 现货
POST /open/v1/orders/place 下单 现货
POST /open/v1/orders/cancel 撤销单个订单 现货
POST /open/v1/orders/batcancel 撤销全部或部分委托中订单 现货
GET /open/v1/orders/last 委托中列表 现货
GET /open/v1/orders 订单列表 现货
GET /open/v1/orders/detail 单个订单成交明细 现货
GET /open/v1/orders/detailmore 分页获取成交明细 现货
GET /open/v1/orders/fee-rate 获取用户某个交易对手续费 现货

接入说明

Restful host:

https://api.bitda.com

Websocket host:

现货交易 wss://ws.bitda.com/ws

鉴权说明

  1. 所有鉴权接口都需要进行鉴权,参数为client_id, ts, nonce, sign。client_id是api key, client_key为密钥,请妥善保管。

  2. client_id为api key,ts为当前时间戳,与服务器时间差正负5秒会被拒绝,nonce为随机字符串,不能与上次请求所使用相同。

  3. 签名方法, 将client_id, ts, nonce进行排序连接,使用hmac-sha256方法进行签名,例如待签名字符串为: client_id=abc&nonce=xyz&ts=1571293029

  4. 签名: sign = hmac.New(client_key, sign_str, sha256)

  5. Content-Type: application/x-www-form-urlencoded

  6. 现货接口,post接口请求请将参数放在请求体里面,get接口请求携带在url链接中。

WebSocket说明

  1. 需要先进行鉴权,才可进行订阅。

  2. 鉴权格式: {"method": "sign", "params": {"ts":"", "nonce":"", "client_id":"", "sign": ""}, "id": 1},如:{"method": "sign", "params": {"ts":"1738944827", "nonce":"abcdef", "client_id":"xxxx", "sign": "xxxxx"}, "id": 1}

  3. 心跳处理,客户端需定时上发心跳信息,任意字符串,服务端每30秒会检查心跳,超时没有收到自动关闭连接。{"method": "ping", "params": {}, "id": 1}

订阅主题

{"method":"sub", "params": {}, "id": 1}

K线数据

请求参数

{"method": "subscribe.kline", "params": {"period": "1Min", "market": "BTC-USDT"}, "id": 1}
参数名 参数类型 描述
period string Kline周期
market string 市场交易对

Responds:

{
    "id": 1,
    "method": "update.kline",
    "result": {
        "data": {
            "symbol": "BTC-USDT",
            "ticks": [
                {
                    "amount": "1803565.8537891",
                    "close": "92613.10",
                    "high": "92613.18",
                    "low": "92613.01",
                    "open": "92613.01",
                    "timestamp": 1745474460,
                    "volume": "19.47420"
                }
            ],
            "timestamp": 1745474460,
            "topic": "kline:1Min:BTC-USDT",
            "tpp": 13,
            "type": "1Min"
        },
        "period": "1Min"
    },
    "error": null,
    "timestamp": 1745474480.5352995
}

数据更新字段列表

参数名 参数类型 描述
symbol string 市场交易对
ticks object k线信息
amount string 本阶段交易额
close string 本阶段收盘价
high string 本阶段最高价
low string 本阶段最低价
open string 本阶段开盘价
timestamp number 时间戳 秒
volume string 本阶段成交量

逐笔成交

请求参数

{"method": "subscribe.trade", "params": {"market": "BTC-USDT"}, "id": 1}
参数名 参数类型 描述
market string 市场交易对

Responds:

{
    "id": 1,
    "method": "update.trade",
    "result": {
        "amount": "35112.4213533",
        "price": "92618.03",
        "side": 2,
        "symbol": "BTC-USDT",
        "timestamp": 1745474636.571989,
        "topic": "trade:BTC-USDT",
        "tpp": 13,
        "volume": "0.37911"
    },
    "error": null,
    "timestamp": 1745474636.586593
}

数据更新字段列表

参数名 参数类型 描述
amount string 成交额
price string 成交价
side integer 成交方向,1卖,2买
symbol string 交易对
timestamp number 时间戳 秒
volume string 成交量

深度

请求参数

{"method": "subscribe.depth", "params": {"market": "BTC-USDT", "merge": "step1"}, "id": 1}
参数名 参数类型 描述
market string 市场交易对
merge string 合并深度,支持4级合并深度

Responds:

{
    "id": 1,
    "method": "update.depth",
    "result": {
        "data": {
            "asks": [
                {
                    "price": "92624.7",
                    "quantity": "0.24461"
                },
                {
                    "price": "92624.8",
                    "quantity": "0.22173"
                },
                {
                    "price": "92624.9",
                    "quantity": "0.21227"
                }
            ],
            "bids": [
                {
                    "price": "92607.8",
                    "quantity": "4.09932"
                },
                {
                    "price": "92602.3",
                    "quantity": "0.82077"
                },
                {
                    "price": "92592.4",
                    "quantity": "0.99661"
                }
            ],
            "symbol": "BTC-USDT",
            "timestamp": 1745474746.4458873,
            "topic": "depth:step1:BTC-USDT",
            "tpp": 13
        },
        "merge": "step1"
    },
    "error": null,
    "timestamp": 1745474746.4458911
}

数据更新字段列表

参数名 参数类型 描述
bids object 当前所有买单[{price 价格, quantity 数量}]
asks object 当前所有卖单[{price 价格, quantity 数量}]

行情

请求参数

{"method": "subscribe.quote", "params": {"market": "BTC-USDT"}, "id": 1}
参数名 参数类型 描述
market string 市场交易对

Responds:

{
    "id": 1,
    "method": "update.quote",
    "result": {
        "data": {
            "symbol": "BTC-USDT",
            "timestamp": 1745474844,
            "topic": "quote:BTC-USDT",
            "price": "92565.56",
            "volume": "232009.60329",
            "amount": "21672997623.5353922",
            "high": "94904.3",
            "low": "91942.82",
            "change": "-0.0097665217635025",
            "tpp": 13,
            "l_price": "92565.56"
        },
        "market": "BTC-USDT"
    },
    "error": null,
    "timestamp": 1745474845.0166624
}

数据更新字段列表

参数名 参数类型 描述
amount string 成交额
change string 涨跌幅
price string 当前价
symbol string 交易对
timestamp numbert 时间戳 秒
high string 最高价
low string 最低价
l_price string 上一次价格
volume string 成交量

账户余额变化

请求参数

{"method": "subscribe.asset", "params": {}, "id": 1}
参数 说明

Responds:

{
    "id": 1,
    "method": "update.asset"
    "result": {
        "available": "10186.04408055", 
        "freeze": "0", 
        "symbol": "USDT", 
        "topic": "accounts", 
        "total": "10186.04408055"
    }
    "error": null, 
    "timestamp": 1745475263.2521095
}

数据更新字段列表

参数名 参数类型 描述
available string 可用余额
freeze string 冻结余额
symbol string 币种
total string 总余额

委托变化

请求参数

{"method": "subscribe.orders", "params": {"market": "BTC-USDT"}, "id": 1}
参数名 参数类型 描述
market string 市场交易对

Responds:

{
    "id": 1,
    "method": "update.orders"
    "result": {
        "frm": "USDT",
        "left": "0.0439925710",
        "match_amt": "999.9560074290",
        "match_price": "0",
        "match_qty": "0.010807",
        "order_id": "16693603",
        "order_sub_type": 0,
        "order_type": 2,
        "price": "0",
        "quantity": "1000.000000",
        "real_order_id": "16693603",
        "side": 2,
        "status": 4,
        "stop_price": "0",
        "symbol": "BTC-USDT",
        "ticker_id": 13,
        "timestamp": 1745475263.240633,
        "to": "BTC",
        "topic": "orders",
        "tpp": 13,
        "trade_no": "553119111551218040041",
        "update_timestamp": 1745475263.240749
    }
    "error": null, 
    "timestamp": 1745475263.2521095
}

返回字段

参数名 参数类型 描述
frm string 价格币种
left string 剩余数量
match_amt string 成交金额
match_price string 成交价格
match_qty string 成交数量
order_id string 委托单ID
order_type string 委托单类型,LIMIT限价单(默认),MARKET市价单
price string 价格
quantity string 数量
side integer 委托单方向,1卖,2买
status integer 状态,2委托中,3部分成交未完成,4全部成交,5部分成交已撤单,6全部撤单
symbol string 市场交易对
timestamp number 下单时间
to string 数量币种
trade_no string 委托单流水
update_timestamp number 更新时间

基础信息

所有交易对

此接口返回全部或指定BitDa支持的交易对。

现货市场

"https://api.bitda.com/open/v1/tickers"

HTTP请求

现货市场 - GET /open/v1/tickers

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对,如: BTC-USDT

Responds:

{  
    "code": 0, 
    "msg": "Ok",
    "time": 1745208892.421363,
    "data": [
        {
            "amount": "1.586",
            "change": "-0.235462",
            "high": "3.05",
            "low": "3.05",
            "price": "98000",
            "l_price": "98000",
            "symbol": "BTC-USDT",
            "amt_num": 4,
            "qty_num": 2,
            "volume": "0.52"
        }, 
    ]
}

返回字段

参数名 参数类型 描述
amount string 24小时成交额
change string 24小时涨跌幅
high string 24小时最高
low string 24小时最低
price string 当前价
l_price string 上次价格
symbol string 市场交易对
amt_num integer 价格精度
qty_num integer 数量精度
volume string 24小时成交量

账户余额

现货市场

"https://api.bitda.com/open/v1/balance"

HTTP请求

现货交易 - GET /open/v1/balance

请求参数

Responds:

{
    "code": 0, 
    "msg": "Ok",
    "time": 1745208892.421363,
    "data": [
        {
            "amount": "4317.6696678", 
            "symbol": "USDT", 
            "freeze": "71.609185"
        },
    ]
}

返回字段

参数名 参数类型 描述
amount string 可用余额
symbol string 币种
freeze string 冻结余额

服务器时间戳

现货交易

"https://api.bitda.com/open/v1/timestamp"

HTTP请求

现货交易 - GET /open/v1/timestamp

请求参数

参数名 参数类型 是否必须 描述

Responds:

{
    "code": 0,
    "msg": "ok",
    "data": "12354534",
    "time": 1745208892.421363,
}

返回字段

参数名 参数类型 描述
data string 时间戳

行情数据

市场k线数据

现货交易

"https://api.bitda.com/open/v1/kline"

HTTP请求

现货交易 - GET /open/v1/kline

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对,如: BTC-USDT
type string 类型1Min, 5Min, 15Min, 30Min,1Hour,2Hour,4Hour,6Hour,12Hour,1Day,1Week等

Responds:

{
    "code": 0, 
    "msg": "Ok",
    "time": 1745208892.421363,
    "data": [
        {
            "amount": "0",
            "close": "3.05",    
            "high": "3.05", 
            "low": "3.05", 
            "open": "3.05", 
            "time": 1571812440, 
            "volume": "0"
        }
    ]
}

返回字段

参数名 参数类型 描述
amount string 成交额
close string 本阶段收盘价
high string 本阶段最高价
low string 本阶段最低价
open string 本阶段开盘价
time integer 时间
volume string 本阶段成交量

市场深度数据

现货交易

"https://api.bitda.com/open/v1/depth"

HTTP请求

现货交易 - GET /open/v1/depth

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对

Responds:

{
    "code": 0, 
    "time": 1745208892.421363,
    "data": {
        "bids": [
            {"price": "2.923", "quantity": "12"}, 
            {"price": "2.823", "quantity": "12"}, 
            {"price": "2.813", "quantity": "14"}
        ], 
        "asks": [
            {"price": "3.05", "quantity": "3.8"}, 
            {"price": "3.31", "quantity": "15"}, 
            {"price": "3.92", "quantity": "15"}
            ]
        }, 
    "msg": "Ok"
}

返回字段

参数名 参数类型 描述
bids object 当前所有买单[{price 价格, quantity 数量}]
asks object 当前所有卖单[{price 价格, quantity 数量}]

获取最近5条成交

现货交易

"https://api.bitda.com/open/v1/tickers/trade"

HTTP请求

现货交易 - GET /open/v1/tickers/trade

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对

Responds:

{
    "code": 0, 
    "msg": "Ok",
    "time": 1745208892.421363,
    "data": [{
        "amount": "0.918",
        "price": "2.04",
        "side": 1,
        "time": 1574942822160,
        "volume": "0.45"
        }]
}

返回字段

参数名 参数类型 描述
amount string 成交额
price string 成交价
side integer 成交方向,1卖,2买
time integer 时间
volume string 成交量

现货

下单

现货交易

"https://api.bitda.com/open/v1/orders/place"

HTTP请求

现货交易 - POST /open/v1/orders/place

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对
price string 价格,如果是限价单,必填
quantity string 数量
side int 方向,1卖,2买
order_type string 买卖单类型,LIMIT限价单(默认),MARKET市价单

Responds:

{
    "code": 0,
    "msg": "ok",
    "time": 1745208892.421363,
    "data": {
        "create_at": 1738919982.01731,
        "frm": "USDT",
        "left": "0.000000",
        "match_amt": "9400.0000000000",
        "match_price": "94000",
        "match_qty": "0.100000",
        "order_id": "324",
        "order_sub_type": 0,
        "order_type": "LIMIT",
        "price": "8850.2100",
        "quantity": "0.100000",
        "side": 1,
        "status": 3,
        "stop_price": "0",
        "symbol": "BTC-USDT",
        "ticker": "BTC-USDT",
        "ticker_id": 13,
        "timestamp": 1738919982.01731,
        "to": "BTC",
        "trade_no": "40551041825640507172314",
        "update_timestamp": 1738919982.017397
    },
}

返回字段

参数名 参数类型 描述
frm string 价格币种
left string 剩余数量
match_amt string 成交金额
match_price string 成交价格
match_qty string 成交数量
order_id string 委托单ID
order_type string 委托单类型,LIMIT限价单(默认),MARKET市价单
price string 价格
quantity string 数量
side integer 委托单方向,1卖,2买
status integer 状态,2委托中,3部分成交未完成,4全部成交,5部分成交已撤单,6全部撤单
symbol string 交易对
timestamp number 下单时间
to string 数量币种
trade_no string 委托单流水
update_timestamp number 更新时间
create_at number 下单时间

撤销单个订单

现货交易

"https://api.bitda.com/open/v1/orders/cancel"

HTTP请求

现货交易 - POST /open/v1/orders/cancel

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对
order_id string 委托号

Responds:

{
    "code": 0,
    "msg": "ok",
    "data": {
        "create_at": 1738923199.205091,
        "frm": "USDT",
        "left": "0.100000",
        "match_amt": "0",
        "match_price": "0",
        "match_qty": "0",
        "order_id": "327",
        "order_sub_type": 0,
        "order_type": "LIMIT",
        "price": "98850.2100",
        "quantity": "9885.021",
        "side": 1,
        "status": 6,
        "stop_price": "0",
        "symbol": "BTC-USDT",
        "ticker": "BTC-USDT",
        "ticker_id": 13,
        "timestamp": 1738923199.205091,
        "to": "BTC",
        "trade_no": "40551042845121219120919",
        "update_timestamp": 0
    },
    "time": 1745208892.421363,
}

返回字段

参数名 参数类型 描述
create_at number 创建时间
frm string 价格币种
left string 剩余数量
match_amt string 成交金额
match_price string 成交价格
match_qty string 成交数量
order_id string 委托单ID
order_type string 委托单类型,LIMIT限价单(默认),MARKET市价单
price string 价格
quantity string 数量
side integer 1卖,2买
status integer 状态,2委托中,3部分成交未完成,4全部成交,5部分成交已撤单,6全部撤单
timestamp number 下单时间
to string 数量币种
trade_no string 流水号
update_timestamp string 更新时间

撤销部分或所有委托中订单

现货交易

"https://api.bitda.com/open/v1/orders/batcancel"

HTTP请求

现货交易 - POST /open/v1/orders/batcancel

请求参数

参数名 参数类型 是否必须 描述
symbol string 交易对
order_ids string 交易对id,1000,2000,3000, 英文逗号分隔订单id,为空全部撤单

Responds:

{
    "code": 0,
    "msg": "Ok",
    "data": {
        "success": [
        331,
        332
        ],
        "failed": []
    },
    "time": 1745208892.421363,
}

返回字段

参数名 参数类型 描述
success array 成功的订单ID
failed array 失败的订单ID

委托中列表

现货交易

"https://api.bitda.com/open/v1/orders/last"

HTTP请求

现货交易 - GET /open/v1/orders/last

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对
pagenum integer 页码
pagesize integer 页大小,最小10, 最大100,默认10

Responds:

{
    "code": 0, 
    "msg": "",
    "time": 1745208892.421363,
    "data": [
        {
            "create_at": 1738928701.630487,
            "frm": 80,
            "left": "0.100000",
            "match_amt": "0",
            "match_price": "0",
            "match_qty": "0",
            "order_id": "333",
            "order_sub_type": 0,
            "order_type": "LIMIT",
            "price": "98850.2100",
            "quantity": "0.100000",
            "side": 1,
            "status": 2,
            "stop_price": "",
            "symbol": "BTC-USDT",
            "ticker": "BTC-USDT",
            "ticker_id": 13,
            "timestamp": 1738928701.630487,
            "to": 81,
            "trade_no": "40551044588771203011001",
            "update_timestamp": 1738928701.630487
        }
    ], 
}

返回字段

参数名 参数类型 描述
create_at number 下单时间
frm string 价格币种
left string 剩余数量
match_amt string 成交金额
match_price string 成交价格
match_qty string 成交数量
order_id string 委托单ID
order_type string 委托单类型,LIMIT限价单(默认),MARKET市价单
price string 价格
quantity string 数量
side integer 1卖,2买
status integer 状态,2委托中,3部分成交未完成,4全部成交,5部分成交已撤单,6全部撤单
symbol string 交易对
timestamp number 创建时间
to string 数量币种
trade_no string 委托流水
update_timestamp number 更新时间

订单列表

现货交易

"https://api.bitda.com/open/v1/orders"

HTTP请求

现货交易 - GET /open/v1/orders

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对,如BTC-USDT
pagenum integer 页码
pagesize integer 页大小,最小10, 最大50,默认20
side integer 方向,1卖,2买,0所有
start integer 时间,时间戳,秒
end integer 结束时间,时间戳,秒

Responds:

{
    "code": 0, 
    "msg": "Ok",
    "time": 1745208892.421363,
    "data": {
        "count": 4, 
        "orders": [
            {
                "create_at": 1738932323.230282,
                "match_amt": "9400",
                "match_price": "94000",
                "match_qty": "0.1",
                "order_id": "337",
                "order_type": "LIMIT",
                "price": "8850.21",
                "quantity": "0.1",
                "side": 1,
                "status": 4,
                "symbol": "BTC-USDT",
                "ticker": "BTC-USDT",
                "trade_no": "40551045736411111022504"
            }
        ]
    }, 
}

返回字段

参数名 参数类型 描述
order_id string 委托单ID
trade_no string 委托流水
symbol string 交易对
price string 价格
quantity string 数量
match_amt string 成交额
match_qty string 成交数量
match_price string 成交价格
side integer 方向,1卖,2买
order_type string 委托单类型,LIMIT限价单(默认),MARKET市价单
status integer 状态,2委托中,3部分成交未完成,4全部成交,5部分成交已撤单,6全部撤单
create_at number 创建时间

单个订单成交明细

现货交易

"https://api.bitda.com/open/v1/orders/detail"

HTTP请求

现货交易 - GET /open/v1/orders/detail

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对,如BTC-USDT
order_id string 委托订单id

Responds:

{
    "code": 0, 
    "msg": "Ok",
    "time": 1745208892.421363,
    "data": {
        "create_at": 1738932323.230282,
        "fee": "0",
        "match_amt": "9400",
        "match_price": "94000",
        "match_qty": "0.1",
        "order_id": "337",
        "order_type": "LIMIT",
        "price": "8850.21",
        "quantity": "0.1",
        "side": 1,
        "status": 4,
        "symbol": "BTC-USDT",
        "ticker": "BTC-USDT",
        "trade_no": "40551045736411111022504",
        "trades": [
            {
                "amount": "9400",
                "fee": "0",
                "price": "94000",
                "quantity": "0.1",
                "time": 1738932323.230371,
                "trade_id": "208"
            }
        ]
    }
}

返回字段

参数名 参数类型 描述
create_at number 下单时间
fee string 手续费
match_amt string 成交额
match_price string 成交价格
match_qty string 成交数量
order_id string 委托单ID
order_type string 委托单类型,LIMIT限价单(默认),MARKET市价单
price string 价格
quantity string 数量
side integer 方向,1卖,2买
status integer 状态,2委托中,3部分成交未完成,4全部成交,5部分成交已撤单,6全部撤单
symbol string 交易对
trade_no string 委托单流水
trades object 成交订单[{
amount string 成交金额
fee string 手续费
price string 价格
quantity string 数量
time number 时间
trade_id string 成交单ID}]

分页获取订单成交明细

现货交易

"https://api.bitda.com/open/v1/orders/detailmore"

HTTP请求

现货交易 - GET /open/v1/orders/detailmore

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对,如BTC-USDT
pagesize integer 页大小,最小10, 最大50,默认10
pagenum integer 页码,默认为1

Responds:

{
    "code": 0, 
    "msg": "Ok",
    "time": 1745208892.421363,
    "data": {
        "count": 10,
        "trades": [
            {
                "amount": "9400",
                "fee": "0",
                "price": "94000",
                "quantity": "0.1",
                "side": 1,
                "symbol": "BTC-USDT",
                "time": 1738932325.981797,
                "trade_id": "209"
            }
          ]
    }
}

返回字段

参数名 参数类型 描述
count integer 成交订单数量
trades object 成交订单[{
symbol string 市场交易对
side integer 方向,1卖,2买
trade_id string 成交单ID
amount string 金额
price string 价格
quantity string 数量
fee string 手续费
time number 时间}]

获取用户某个交易对手续费

现货市场

"https://api.bitda.com/open/v1/fee-rate"

HTTP请求

现货交易 - GET /open/v1/fee-rate

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对

Responds:

{
    "code": 0, 
    "msg": "Ok",
    "time": 1745208892.421363,
    "data": {
        "maker_fee": "0.0001",
        "taker_fee": "0.0002"
    }
}

返回字段

参数名 参数类型 描述
maker_fee string 挂单手续费
taker_fee string 吃单手续费

公共接口

所有交易对

现货交易

"https://api.bitda.com/open/v1/tickers/market"

HTTP请求

现货交易 - GET /open/v1/tickers/market

请求参数

参数名 参数类型 是否必须 描述

Responds:

{  
    "code": 0,
    "msg": "Ok",
    "time": 1745208892.421363, 
    "data": [
        {
            "amount": "432142479.011539",
            "amt_num": 2,
            "change": "0.0089719236045157",
            "high": "88849.39",
            "low": "86328.39",
            "price": "88272.3",
            "l_price": "88272.3",
            "qty_num": 5,
            "symbol": "BTC-USDT",
            "volume": "4936.852"
        }
    ]
}

返回字段

参数名 参数类型 描述
amount string 24小时成交额
change string 24小时涨跌幅
high string 24小时最高
low string 24小时最低
price string 当前价
l_price string 上次价格
symbol string 市场交易对
amt_num integer 价格精度
qty_num integer 数量精度
volume string 24小时成交量

深度

现货交易

"https://api.bitda.com/open/v1/depth/market"

HTTP请求

现货交易 - GET /open/v1/depth/market

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对,如BTC-USDT

Responds:

{
    "code": 0, 
    "time": 1745208892.421363,
    "data": {
        "bids": [
            {"price": "2.923", "quantity": "12"}, 
            {"price": "2.823", "quantity": "12"}, 
            {"price": "2.813", "quantity": "14"}
        ], 
        "asks": [
            {"price": "3.05", "quantity": "31"}, 
            {"price": "3.31", "quantity": "15"}, 
            {"price": "3.92", "quantity": "15"}
            ]
        }, 
    "msg": "Ok"
}

返回字段

参数名 参数类型 描述
bids object 当前所有买单[{price 价格, quantity 数量}]
asks object 当前所有卖单[{price 价格, quantity 数量}]

逐笔成交

现货交易

"https://api.bitda.com/open/v1/trade/market"

HTTP请求

现货交易 - GET /open/v1/trade/market

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对,如BTC-USDT

Responds:

{
    "code": 0, 
    "msg": "Ok",
    "time": 1745208892.421363,
    "data": [{
        "amount": "0.918",
        "price": "2.04",
        "side": 1,
        "time": 1745307169.312,
        "volume": "0.45"
        }]
}

返回字段

参数名 参数类型 描述
amount string 成交额
price string 成交价
side integer 成交方向,1卖,2买
time integer 时间
volume string 成交量

k线数据

现货交易

"https://api.bitda.com/open/v1/kline/market"

HTTP请求

现货交易 - GET /open/v1/kline/market

请求参数

参数名 参数类型 是否必须 描述
symbol string 市场交易对: BTC-USDT
type string 类型1Min, 5Min, 15Min, 30Min,1Hour,2Hour,4Hour,6Hour,12Hour,1Day,1Week等

Responds:

{
    "code": 0, 
    "msg": "",
    "time": 1745208892.421363,
    "data": [
        {
            "timestamp": 1745298300,
            "open": "88065.43",
            "close": "88095.91",
            "high": "88095.91",
            "low": "88054.81",
            "volume": "2.54120",
            "amount": "223811.1117750"
        }
    ]
}

返回字段

参数名 参数类型 描述
amount string 成交额
close string 本阶段收盘价
high string 本阶段最高价
low string 本阶段最低价
open string 本阶段开盘价
timestamp integer 时间
volume string 本阶段成交量

现货API调用示例

Python:

# -*- coding:utf-8 -*-

import requests
import time
import hmac
import hashlib
import ujson
import random

host = "https://api.bitda.com.io"
client_id = ""
client_key = ""

def gen_sign(client_id, client_key):
    ts = int(time.time())
    nonce = "abcdefg"
    obj = {"ts": ts, "nonce": nonce, "sign": "", "client_id": client_id}
    s = "client_id=%s&nonce=%s&ts=%s" % (client_id, nonce, ts) 
    v = hmac.new(client_key.encode(), s.encode(), digestmod=hashlib.sha256)
    obj["sign"] = v.hexdigest()
    return obj 

def get_open_orders():
    print("> 获取open委托中")
    # 现货交易
    path = "/open/v1/orders/last"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT"})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def get_order_list():
    print("> 获取委托单列表")
    # 现货交易
    path = "/open/v1/orders"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT", "start": 1738886400, "end": 1738972800})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def get_order_detail():
    print("> 获取单个订单成交明细")
    # 现货交易
    path = "/open/v1/orders/detail"
    obj = gen_sign(client_id, client_key)
    obj.update({"order_id": "337", "symbol": "BTC-USDT"})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def get_order_detail_more():
    print("> 分页获取成交明细")
    # 现货交易
    path = "/open/v1/orders/detailmore"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT", "pagesize": 10, "page_num": 1})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def get_order_fee_rate():
    print("> 获取用户某个交易对手续费")
    # 现货交易
    path = "/open/v1/orders/fee-rate"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT"})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def get_kline():
    print("> 获取kline")
    # 现货交易
    path = "/open/v1/kline"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT", "type": "1Min"})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

# 获取深度
def get_depth():
    print("> 获取深度")
    # 现货交易
    path = "/open/v1/depth"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT"})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def get_balance():
    print("> 获取余额")
    # 现货交易
    path = "/open/v1/balance"
    obj = gen_sign(client_id, client_key)
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def get_trade_tickers():
    print("> 获取最近成交记录")
    # 现货交易
    path = "/open/v1/tickers/trade"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT"})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def place_order():
    print("> 下单")
    # 现货交易
    path = "/open/v1/orders/place"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "ETH-USDT", "price": "10", "quantity": "0.2", "side": "2", "order_type": "LIMIT"})
    res = requests.post(host + path, data=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def cancel_order():
    print("> 撤单")
    # 现货交易
    path = "/open/v1/orders/cancel"
    obj = gen_sign(client_id, client_key)
    obj.update({"order_id": "327", "symbol": "BTC-USDT"})
    res = requests.post(host + path, data=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

# 批量撤单
def bat_cancel_order():
    print("> 批量撤单")
    # 现货交易
    path = "/open/v1/orders/batcancel"
    obj = gen_sign(client_id, client_key)
    ids = ["123", "124", "125"]
    obj.update({"symbol": "ETH-USDT", "order_ids": ",".join(ids)})
    res = requests.post(host + path, data=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

def get_tickers():
    print("> 获取ticker")
    # 现货交易
    path = "/open/v1/tickers"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT"})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

# 获取服务器时间
def get_server_time():
    print("> 获取服务器时间")
    # 现货交易
    path = "/open/v1/timestamp"
    obj = gen_sign(client_id, client_key)
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

# 获取最新的成交
def get_trade():
    print("> 获取最新的成交")
    # 现货交易
    path = "/open/v1/tickers/trade"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT"})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

# 获取用户手续费
def get_fee_rate():
    print("> 获取用户手续费")
    # 现货交易
    path = "/open/v1/fee-rate"
    obj = gen_sign(client_id, client_key)
    obj.update({"symbol": "BTC-USDT"})
    res = requests.get(host + path, params=obj)
    print(ujson.dumps(ujson.loads(res.content), ensure_ascii=False))

Websocket示例

# -*- coding:utf-8 -*-

import time
import hmac
import hashlib
import websockets
import json
import asyncio
import uvloop

asyncio.set_event_loop_policy(uvloop.EventLoopPolicy())

# 现货交易
host = "wss://ws.bitda.com/ws"
client_id = ""
client_key = ""

def login():
    ts = int(time.time())
    nonce = "abcdefg"
    obj = {"method": "sign", "params": {"ts": ts, "nonce": nonce, "client_id": client_id, "sign": ""}, "id": 1}
    s = "client_id=%s&nonce=%s&ts=%s" % (client_id, nonce, ts)
    v = hmac.new(client_key.encode(), s.encode(), digestmod=hashlib.sha256)
    obj["sign"] = v.hexdigest()
    return obj

# 心跳
async def ping(ws):
    ping = {"method": "ping", "params": {}, "id": 1}
    await ws.send(json.dumps(ping))

# 订阅深度
async def sub_topic_depth(ws):
    await ws.send(json.dumps({"method": "subscribe.depth", "params": {"market": "BTC-USDT", "merge": "step1"}, "id": 1}))

# 订阅K线
async def sub_topic_kline(ws):
    await ws.send(json.dumps({"method": "subscribe.kline", "params": {"period": "1Min", "market": "BTC-USDT"}, "id": 1}))

# 订阅订单
async def sub_topic_order(ws):
    await ws.send(json.dumps({"method": "subscribe.orders", "params": {"market": "BTC-USDT"}, "id": 1}))

# 订阅成交
async def sub_topic_trade(ws):
    await ws.send(json.dumps({"method": "subscribe.trade", "params": {"market": "BTC-USDT"}, "id": 1}))

# 行情
async def sub_topic_quotes(ws):
    await ws.send(json.dumps({"method": "subscribe.quote", "params": {"market": "BTC-USDT"}, "id": 1}))

# 资产
async def sub_topic_asset(ws):
    await ws.send(json.dumps({"method": "subscribe.asset", "params": {}, "id": 1}))

async def startup():
    print("start to connect %s..." % host)
    ws = await websockets.connect(host)

    # 心跳
    await ping(ws)

    # 登录
    obj = login()
    await ws.send(json.dumps(obj))

    # 订阅深度
    await sub_topic_depth(ws)
    # 订阅K线
    await sub_topic_kline(ws)
    # 订阅订单
    await sub_topic_order(ws)
    # 订阅成交
    await sub_topic_trade(ws)
    # 行情
    await sub_topic_quotes(ws)
    # 资产
    await sub_topic_asset(ws)

    while 1:
        try:
            data = await ws.recv()
            print(data)
        except websockets.exceptions.ConnectionClosed as e:
            print("connect closed...", e)
            return
        except:
            pass

if __name__ == "__main__":
    loop = asyncio.get_event_loop()
    loop.run_until_complete(startup())