Bigone API 方法详解
Bigone交易所提供了一套完整的API,允许开发者以编程方式访问交易所的各种功能,包括获取市场数据、下单、管理账户等。本文将深入探讨Bigone API的常用方法,帮助开发者更好地利用API进行交易和数据分析。
1. 身份验证与权限控制
在使用 BigONE API 之前,必须进行身份验证以确保安全访问。 BigONE API 采用 API 密钥和密钥对机制进行身份验证, 这要求用户在其 BigONE 交易所账户中生成 API 密钥和相应的密钥对。
- API Key: 此唯一标识符用于明确识别用户身份,是访问 API 的凭证。
- Secret Key: 这是一个保密的密钥,用于对发送到 API 的请求进行数字签名。签名的目的是验证请求的完整性和真实性,防止篡改和中间人攻击。
所有需要访问用户私有数据的 API 调用都需要进行签名验证。BigONE API 使用 HMAC-SHA256 算法进行签名生成。 签名过程需要包含以下关键参数,以确保请求的合法性和安全性:
-
access_key
: 用户的 API Key,用于标识请求的发送者。 -
nonce
: 一个 Unix 时间戳,代表请求发送的时间。Nonce 的主要作用是防止重放攻击,确保每个请求都是唯一的。 推荐做法是使用当前时间戳。 -
signature
: 使用 Secret Key 对请求参数进行 HMAC-SHA256 加密后生成的签名字符串。 该签名是对请求内容完整性和来源的验证。
签名的生成过程详细说明如下:
- 参数排序与拼接: 将所有请求参数按照字母顺序进行排序。然后,将排序后的参数及其对应的值拼接成一个字符串,作为签名的基础数据。
- HMAC-SHA256 加密: 使用用户的 Secret Key 作为密钥,对上一步生成的字符串进行 HMAC-SHA256 加密运算,得到签名。
-
添加请求头:
将
access_key
、nonce
和生成的signature
添加到 HTTP 请求头中。 这些信息将被 BigONE API 服务器用来验证请求的合法性。
BigONE API 针对不同的 API 方法设置了不同的权限级别,实施细粒度的访问控制。 例如,获取账户信息的 API 需要读取权限,而进行交易操作的 API 则需要交易权限。 用户在创建 API 密钥时,必须根据自身的需求设置相应的权限,以遵循最小权限原则,降低潜在的安全风险。权限设置不当可能导致数据泄露或未经授权的交易。
2. 获取市场数据
BigONE API 提供了多种方法来获取实时和历史市场数据,方便开发者进行数据分析、交易策略开发和集成。这些数据接口覆盖了从交易对信息到深度订单簿和历史K线数据的全方位信息,能够满足各种应用场景的需求。
-
获取所有交易对信息:
可以获取 BigONE 交易所上所有交易对的详细信息。这包括交易对的唯一标识符(交易对名称)、基础货币、报价货币、最小交易量、交易手续费率、价格精度等关键参数。 这些信息对于了解交易所支持的交易品种和交易规则至关重要。
-
API Endpoint:
/asset_pairs
-
Method:
GET
- Example:
curl -X GET 'https://big.one/api/v3/asset_pairs'
-
API Endpoint:
-
获取单个交易对信息:
允许开发者通过指定交易对名称来获取该交易对的详细信息。这与获取所有交易对信息类似,但更加精确和高效。 使用此接口可以快速查询特定交易对的详细参数,例如交易状态、最小下单量等。
-
API Endpoint:
/asset_pairs/{asset_pair_name}
-
Method:
GET
- Example:
curl -X GET 'https://big.one/api/v3/asset_pairs/BTC-USDT'
-
API Endpoint:
-
获取行情数据 (Ticker):
可以获取指定交易对的最新行情数据,包括最新成交价格、最高价、最低价、24小时成交量、24小时成交额、时间戳等。Ticker 数据是实时交易决策的重要依据,可以帮助用户快速了解市场动态。
-
API Endpoint:
/asset_pairs/{asset_pair_name}/ticker
-
Method:
GET
- Example:
curl -X GET 'https://big.one/api/v3/asset_pairs/BTC-USDT/ticker'
-
API Endpoint:
-
获取深度数据 (Order Book):
提供了指定交易对的实时深度数据,即买单和卖单的价格和数量分布情况。深度数据是分析市场供需关系、预测价格走势的重要工具。通过分析订单簿的结构,可以评估市场的流动性、支撑位和阻力位。
-
API Endpoint:
/asset_pairs/{asset_pair_name}/depth
-
Method:
GET
-
Parameters:
-
limit
: 返回的深度数据数量,代表订单簿的深度,默认为20,最大为200。更大的 `limit` 值可以提供更全面的订单簿信息,但也会增加数据传输量。
-
- Example:
curl -X GET 'https://big.one/api/v3/asset_pairs/BTC-USDT/depth?limit=50'
-
API Endpoint:
-
获取历史K线数据 (Candlesticks):
提供了指定交易对的历史K线数据,用于技术分析和回测交易策略。K线数据包含了每个时间周期内的开盘价、收盘价、最高价、最低价和成交量等信息。 通过分析历史K线数据,可以识别市场趋势、支撑阻力位、以及潜在的交易机会。
-
API Endpoint:
/asset_pairs/{asset_pair_name}/candles
-
Method:
GET
-
Parameters:
-
period
: K线周期,用于指定每个K线代表的时间跨度。常用的周期包括1m
(1分钟),5m
(5分钟),15m
(15分钟),30m
(30分钟),1h
(1小时),4h
(4小时),1d
(1天),1w
(1周),1M
(1月) 等。 -
timestamp
: 起始时间戳,用于指定获取K线数据的起始时间。时间戳必须是 Unix 时间戳,单位为秒。如果不指定 `timestamp`,则返回最新的K线数据。 -
limit
: 返回的K线数据数量,默认为20,最大为500。`limit` 值越大,返回的历史数据越多,但也会增加数据传输量。
-
- Example:
curl -X GET 'https://big.one/api/v3/asset_pairs/BTC-USDT/candles?period=1h×tamp=1678886400&limit=100'
-
API Endpoint:
3. 交易相关方法
Bigone API 提供了全面的交易功能,允许用户执行各种交易操作。以下是执行交易操作的关键方法,包括下单。
- 下单 (Create Order): Bigone API 允许在指定的交易对上创建新的订单,支持两种主要的订单类型:市价单和限价单。通过精确控制订单参数,用户可以根据市场状况和交易策略灵活地进行买卖操作。
-
API Endpoint:
/orders
-
Method:
POST
- Body Parameters:
-
asset_pair_name
: 交易对名称。 这是指定交易标的的唯一标识符,例如 "BTC-USDT",表示比特币兑泰达币的交易对。确保交易对名称的准确性至关重要,错误的名称会导致订单无法正确执行。 -
side
: 买卖方向。 决定订单的买卖方向,ASK
(卖出) 表示挂卖单,旨在卖出指定数量的资产;BID
(买入) 表示挂买单,旨在买入指定数量的资产。 -
type
: 订单类型。 指定订单的执行方式,LIMIT
(限价单) 允许用户设定期望的买入或卖出价格,订单只有在市场价格达到或优于该价格时才会成交;MARKET
(市价单) 以当前市场最优价格立即执行订单,确保快速成交,但价格可能不如限价单精确。 -
price
: 限价单的价格。 仅在订单类型为LIMIT
时需要指定。此参数定义了用户愿意买入或卖出的最高或最低价格。如果市场价格未达到设定的价格,订单将保持挂单状态,直到满足成交条件。 -
amount
: 下单数量。 指定要买入或卖出的资产数量。数量的精确性对于控制交易规模和风险至关重要。请注意,Bigone API 可能对最小交易数量有限制。 - Example:
以下是一个使用 curl 命令创建限价买单的示例。请务必替换
YOUR
ACCESS
TOKEN
为您自己的有效 API 访问令牌。
curl -X POST \
'https://big.one/api/v3/orders' \
-H 'Content-Type: application/' \
-H 'Authorization: Bearer YOUR
ACCESS
TOKEN' \
-d '{
"asset
pair
name": "BTC-USDT",
"side": "BID",
"type": "LIMIT",
"price": "25000",
"amount": "0.01"
}'
请求示例说明:
该请求将在 BTC-USDT 交易对上创建一个限价买单,以 25000 USDT 的价格买入 0.01 BTC。 请根据您的实际需求修改
asset_pair_name
,
side
,
type
,
price
和
amount
参数。
Authorization: Bearer YOUR_ACCESS_TOKEN
,其中 YOUR_ACCESS_TOKEN
需要替换为通过身份验证获取的Token。
- API Endpoint:
/orders/{order_id}
- Method:
DELETE
- Example:
curl -X DELETE \ 'https://big.one/api/v3/orders/1234567890' \ -H 'Authorization: Bearer YOURACCESSTOKEN'
- API Endpoint:
/orders/{order_id}
- Method:
GET
- Example:
curl -X GET \ 'https://big.one/api/v3/orders/1234567890' \ -H 'Authorization: Bearer YOURACCESSTOKEN'
- API Endpoint:
/orders
- Method:
GET
- Parameters:
asset_pair_name
: 交易对名称。state
: 订单状态,例如PENDING
(待成交),FILLED
(已成交),CANCELED
(已取消) 等。limit
: 返回的订单数量,默认为20,最大为100。
- Example:
curl -X GET \ 'https://big.one/api/v3/orders?assetpairname=BTC-USDT&state=FILLED&limit=50' \ -H 'Authorization: Bearer YOURACCESSTOKEN'
4. 账户相关方法
Bigone API 提供了一系列方法来管理您的账户,使您能够查看账户余额、查询特定资产的信息等。以下是账户管理相关API的详细说明:
-
获取所有账户余额 (Get All Accounts):
此方法允许您获取所有账户的完整余额信息,包括可用余额、冻结余额等。
-
API Endpoint:
/accounts
-
Method:
GET
- 描述: 此接口返回一个包含所有账户余额信息的JSON数组。每个账户的信息都包括账户ID、资产符号、可用余额和冻结余额。您可以使用这些信息来监控您的整体资产状况。
- Example:
curl -X GET \ 'https://big.one/api/v3/accounts' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
注意: 请务必替换
YOUR_ACCESS_TOKEN
为您有效的API访问令牌。 -
API Endpoint:
-
获取指定账户余额 (Get Account by Asset):
此方法允许您根据特定的资产符号,获取对应账户的余额信息。这对于快速查询特定币种的余额非常有用。
-
API Endpoint:
/accounts/{asset_symbol}
-
Method:
GET
-
描述: 您需要将
{asset_symbol}
替换为您想要查询的资产符号,例如BTC
、ETH
等。API 将返回包含该资产的可用余额和冻结余额的 JSON 对象。 - Example:
curl -X GET \ 'https://big.one/api/v3/accounts/BTC' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN'
重要提示: 确保您提供的资产符号是 Bigone 交易所支持的有效符号。不正确的资产符号将导致 API 返回错误。
权限要求: 使用这些 API 需要您拥有有效的 API 密钥,并确保您的密钥具有读取账户信息的权限。
-
API Endpoint:
5. 错误处理
Bigone API 使用标准的 HTTP 状态码来指示请求的处理结果。开发者应根据这些状态码来判断请求的整体状态。
-
200 OK
: 请求已成功处理并返回预期结果。 -
400 Bad Request
: 请求格式不正确或缺少必要的参数。这通常意味着客户端发送的请求存在语法错误,或者提供的参数类型不匹配API的预期。检查请求参数,确保它们符合API文档的要求。 -
401 Unauthorized
: 身份验证失败。客户端未提供有效的身份验证凭据,或者提供的凭据已过期或无效。确保在请求头中包含了正确的 API 密钥和签名。 -
403 Forbidden
: 权限不足。客户端已通过身份验证,但无权访问请求的资源。检查你的 API 密钥是否具有执行该操作所需的权限。部分API调用可能需要更高级别的权限才能访问。 -
404 Not Found
: 请求的资源不存在。客户端尝试访问不存在的端点或资源。检查请求的 URL 是否正确,并确认资源是否存在。也可能是由于资源已经被删除。 -
500 Internal Server Error
: 服务器内部错误。这表示服务器在处理请求时遇到了意外错误。此类错误通常是服务器端的问题,客户端可以稍后重试该请求。如果问题持续存在,请联系Bigone的技术支持。
API 返回的 JSON 响应通常包含
code
和
message
字段,用于提供更详细的错误信息。
code
字段是一个数字代码,表示具体的错误类型;
message
字段是一个字符串,提供关于错误的更详细的描述。开发者应结合 HTTP 状态码和
code
字段来准确判断请求是否成功。如果请求失败,
message
字段可用于了解错误的具体原因,从而帮助调试和解决问题。处理 API 响应时,请务必检查这些字段,以便提供更好的用户体验和更健壮的错误处理。
示例代码 (Python):
以下是一个使用 Python 语言,通过 Big.one API 获取 BTC-USDT 交易对最新行情数据的示例代码。该示例展示了如何发送 HTTP 请求并解析返回的 JSON 数据,从而获取交易对的实时价格、交易量等信息。
import requests
import
url = "https://big.one/api/v3/asset_pairs/BTC-USDT/ticker"
try:
response = requests.get(url)
response.raise_for_status() # 检查响应状态码,如果不是 200,则抛出 HTTPError 异常
data = response.()
print(.dumps(data, indent=4, ensure_ascii=False)) # 使用 .dumps 格式化输出,提高可读性
except requests.exceptions.RequestException as e:
print(f"请求出错: {e}")
except .JSONDecodeError as e:
print(f"JSON 解析错误: {e}")
except Exception as e:
print(f"其他错误: {e}")
代码解释:
-
import requests
: 导入 Python 的 requests 库,用于发送 HTTP 请求。 -
import
: 导入 Python 的 库,用于处理 JSON 格式的数据。 -
url = "https://big.one/api/v3/asset_pairs/BTC-USDT/ticker"
: 定义 API 请求的 URL,指向 Big.one API 的 BTC-USDT 交易对行情接口。 -
response = requests.get(url)
: 使用requests.get()
方法发送 GET 请求到指定的 URL,并获取响应对象。 -
response.raise_for_status()
: 检查响应状态码。如果状态码不是 200(OK),则会抛出一个 HTTPError 异常,这是一种良好的错误处理实践。 -
data = response.()
: 使用response.()
方法将响应内容解析为 JSON 格式的 Python 字典或列表。 -
print(.dumps(data, indent=4, ensure_ascii=False))
: 使用.dumps()
方法将 Python 对象格式化为 JSON 字符串,并打印到控制台。indent=4
参数用于增加缩进,提高可读性。ensure_ascii=False
确保中文等非 ASCII 字符能正确显示。 -
try...except
块: 用于捕获可能出现的异常,例如网络连接错误(requests.exceptions.RequestException
)、JSON 解析错误(.JSONDecodeError
)以及其他未预料的错误。这有助于提高程序的健壮性。
以上示例展示了 Big.one API 的一个常用方法。更完整的API方法,包括订单创建、历史数据查询等,请参考Big.one官方API文档。开发者在使用API时,应仔细阅读官方文档,全面了解API的参数定义、数据返回值结构以及错误处理机制,并在实际部署前进行充分的测试,以确保API使用的正确性和安全性。还需要注意API的使用频率限制,避免因频繁请求而被限制访问。