抹茶交易所 & BigONE 交易所 API 接口使用指南
本文档将介绍抹茶交易所 (MEXC) 和 BigONE 交易所 API 接口的基本使用方法,旨在帮助开发者快速上手并构建自己的交易应用。
抹茶交易所 (MEXC) API
MEXC 全球站提供了强大的应用程序编程接口 (API),开发者可以利用这些接口与 MEXC 平台进行程序化交互。MEXC API 主要分为 REST API 和 WebSocket API 两种类型,以满足不同的开发需求和应用场景。
REST API :MEXC 的 REST API 采用标准的 RESTful 架构,允许开发者通过 HTTP 请求访问和操作账户、交易和市场数据。它主要用于执行订单(如市价单、限价单、止损单等)、查询账户余额、获取历史交易记录、管理 API 密钥等操作。REST API 的请求和响应通常采用 JSON 格式,便于解析和处理。开发者需要对 API 密钥进行安全管理,避免泄露。
WebSocket API :WebSocket API 提供了实时的双向通信通道,特别适合于需要实时市场数据的应用场景,例如高频交易、自动化交易策略、实时行情监控等。开发者可以通过 WebSocket 连接订阅各种市场数据流,包括实时价格、深度数据、交易量等。WebSocket 连接保持持久连接,减少了请求的开销和延迟,能够更快地获取市场变化。MEXC 的 WebSocket API 支持不同的频道和事件类型,开发者可以根据需求选择订阅。务必注意控制订阅数量,避免因数据量过大导致连接不稳定。
REST API
1. 认证
访问 MEXC REST API 进行数据交互,必须通过身份认证机制,以确保账户安全和数据访问权限的控制。MEXC 采用 HMAC-SHA256 签名算法作为主要的认证方式。为了完成认证,您需要执行以下步骤:
- 获取 API Key 和 Secret Key: 登录您的 MEXC 账户,在 API 管理页面创建或获取您的 API Key 和 Secret Key。请务必妥善保管您的 Secret Key,避免泄露。
- 构建请求: 准备需要发送的 API 请求,包括请求方法(如 GET、POST、PUT、DELETE)、请求路径、请求参数等。
-
生成签名:
使用您的 Secret Key 和请求内容,按照 HMAC-SHA256 算法生成签名。签名的具体生成方式如下:
-
将请求参数按照字母顺序排序,并使用
key=value
的格式拼接成字符串。 - 将拼接后的字符串与请求路径连接起来。
- 使用 Secret Key 作为密钥,对连接后的字符串进行 HMAC-SHA256 签名。
-
将请求参数按照字母顺序排序,并使用
-
添加请求头:
在 HTTP 请求头中添加以下字段:
-
X-MEXC-APIKEY
:值为您的 API Key。 -
X-MEXC-SIGN
:值为您生成的签名。 -
Content-Type
(如果使用POST方法发送数据): 值为application/
或者application/x-www-form-urlencoded
-
- 发送请求: 将带有认证信息的请求发送到 MEXC API 服务器。
服务器将验证您的签名,如果验证通过,则会处理您的请求。如果验证失败,则会返回相应的错误信息,提示您重新检查 API Key、Secret Key 或签名生成过程。
安全提示:
- 请勿将您的 Secret Key 泄露给任何第三方。
- 定期更换您的 API Key 和 Secret Key。
- 限制 API Key 的访问权限,仅授予必要的权限。
- 监控您的 API 使用情况,及时发现异常行为。
生成签名示例 (Python):
以下Python代码示例展示了如何生成MEXC API的请求签名,这是与MEXC交易所API进行安全通信的关键步骤。本示例依赖于标准Python库,确保您已安装必要的库。
import hmac
import hashlib
import time
import requests
api_key = "YOUR_API_KEY"
secret_key = "YOUR_SECRET_KEY"
base_url = "https://api.mexc.com"
请务必将
YOUR_API_KEY
和
YOUR_SECRET_KEY
替换为您在MEXC交易所创建的实际API密钥和密钥。
base_url
定义了MEXC API的根URL。
def generate_signature(timestamp, data):
"""生成签名"""
param_str = f"timestamp={timestamp}&{data}"
signature = hmac.new(secret_key.encode('utf-8'), param_str.encode('utf-8'), hashlib.sha256).hexdigest()
return signature
generate_signature
函数是生成签名的核心。它接收时间戳 (
timestamp
) 和请求数据 (
data
) 作为输入。它将时间戳和数据连接成一个字符串
param_str
。然后,使用HMAC-SHA256算法,使用您的
secret_key
对该字符串进行哈希处理。结果是一个十六进制的签名字符串,用于验证请求的完整性和真实性。 注意为了安全,secret_key 不能泄露。
def get_account_info():
"""获取账户信息"""
endpoint = "/api/v3/account"
timestamp = str(int(time.time() * 1000))
params = {} # 这里可以添加请求参数
data = "&".join([f"{k}={v}" for k, v in params.items()])
signature = generate_signature(timestamp, data)
get_account_info
函数演示了如何使用签名来获取您的MEXC账户信息。它定义了API端点 (
endpoint
),获取当前时间戳(以毫秒为单位),并准备请求参数 (
params
)。示例中,
params
为空字典,您可以根据需要添加额外的查询参数。然后,它使用
generate_signature
函数生成签名。
headers = {
"X-MEXC-APIKEY": api_key
}
设置请求头,其中
X-MEXC-APIKEY
必须设置为您的 API 密钥。这是向MEXC API验证您的身份的关键步骤。
url = f"{base_url}{endpoint}?timestamp={timestamp}&signature={signature}"
response = requests.get(url, headers=headers)
return response.text
构建完整的API请求URL,包括时间戳和签名作为查询参数。然后,使用
requests.get
发送GET请求,并将API密钥添加到请求头中。该函数返回API响应的文本内容。
if __name__ == '__main__':
account_info = get_account_info()
print(account_info)
此代码块确保
get_account_info
函数仅在脚本直接运行时才执行。它调用该函数并打印返回的账户信息。
请求头:
-
X-MEXC-APIKEY
: API Key。这是您的API密钥,用于验证您的身份并授权访问MEXC的API接口。请务必妥善保管您的API密钥,避免泄露,防止未经授权的访问。该密钥通常在MEXC交易所的API管理页面生成和管理。 -
Content-Type
:application/
。指定请求体的MIME类型为JSON格式。这意味着您发送到MEXC API的数据必须符合JSON规范。JSON是一种轻量级的数据交换格式,易于阅读和解析,被广泛应用于Web API中。正确的设置Content-Type头,服务端才能正确解析请求体中的数据。
2. 常用接口
-
获取账户信息:
/api/v3/account
(GET) - 此接口允许用户获取其账户的详细信息,包括可用余额、持仓信息、账户类型等。通过GET请求访问,通常需要身份验证,确保只有授权用户才能访问敏感的账户数据。返回的数据格式通常为JSON,包含账户的各项指标。 -
下单:
/api/v3/order
(POST) - 用于创建新的交易订单。这是一个POST请求,需要携带订单参数,如交易对、订单类型(市价单、限价单)、买卖方向(买入、卖出)、数量和价格(如果为限价单)。 成功下单后,接口会返回订单ID等信息,用于后续的订单查询和管理。 -
取消订单:
/api/v3/order
(DELETE) - 允许用户取消尚未成交的挂单。通过DELETE请求,并通常需要提供要取消的订单的唯一标识符(订单ID)。取消成功后,交易所会释放相应的资金或资产。 -
查询订单:
/api/v3/order
(GET) - 用于查询特定订单的详细状态信息。通过GET请求,需要提供订单ID作为参数。返回信息包括订单状态(已成交、未成交、部分成交、已取消等)、成交数量、成交价格等。 -
获取市场深度:
/api/v3/depth
(GET) - 提供指定交易对的实时市场深度信息,也称为订单簿。通过GET请求,可以获取买单和卖单的挂单价格和数量分布,有助于了解市场的供需情况和流动性。通常会返回指定数量的买单和卖单数据,按照价格排序。 -
获取K线数据:
/api/v3/klines
(GET) - 用于获取指定交易对的历史K线数据,也称为蜡烛图数据。通过GET请求,需要指定交易对、时间周期(如1分钟、5分钟、1小时、1天)以及K线数量。返回的数据包括开盘价、最高价、最低价、收盘价和交易量等。 K线数据是技术分析的基础,可以用于分析价格趋势和预测未来走势。
3. 错误处理
在使用MEXC API进行交易或数据获取时,可能会遇到各种错误。MEXC API通过HTTP状态码和JSON格式的错误信息来反馈请求的状态。为了确保程序的稳定性和可靠性,开发者需要充分理解和正确处理这些错误。
HTTP状态码是Web服务器返回的3位数字代码,用于表示请求的处理结果。当状态码为200时,表示请求成功。而其他状态码则表示出现了问题。MEXC API常见的错误状态码包括:
-
400
: 请求参数错误 。这通常表示发送到API的请求中包含了无效或错误的参数。例如,缺少必要的参数、参数格式不正确或参数值超出范围。开发者需要仔细检查请求参数,确保其符合API文档的要求。详细的错误信息会包含在JSON响应中,帮助开发者定位具体问题。例如,可能返回 "Invalid symbol"(无效交易对)、"Invalid quantity"(无效数量)或 "Missing parameter"(缺少参数)等错误信息。 -
401
: 身份认证失败 。表示API密钥无效或未正确配置。开发者需要检查API密钥是否正确,以及是否已正确设置请求头中的X-MEXC-APIKEY
字段。另外,还需要确认API密钥是否已启用,并且具有执行所需操作的权限。例如,如果API密钥仅具有读取权限,则尝试进行交易操作将导致此错误。 -
429
: 请求过于频繁 。MEXC API对请求频率有限制,以防止滥用和保护服务器资源。当请求频率超过限制时,服务器会返回429错误。开发者应该实施适当的速率限制策略,例如使用延迟或队列来控制请求的发送速率。API响应头通常会包含X-RateLimit-Limit
(请求限制)和X-RateLimit-Remaining
(剩余请求数)等信息,可以帮助开发者更好地管理请求频率。
除了上述常见的错误码,还可能遇到其他的错误,例如500(服务器内部错误)或503(服务不可用)等。对于这些错误,开发者可以尝试重试请求,或者联系MEXC的技术支持以获取帮助。
在处理错误时,建议记录详细的错误日志,包括HTTP状态码、错误信息、请求参数等,以便于问题诊断和调试。同时,友好的错误提示信息也能提高用户体验。
WebSocket API
MEXC WebSocket API 允许用户建立持久的双向连接,以便实时订阅市场数据。这些数据包括但不限于:
- 实时价格: 每个交易对的最新成交价格,为交易决策提供即时参考。
- 交易量: 特定时间段内交易对的交易总量,反映市场活跃度和流动性。
- 深度信息: 订单簿的实时快照,展示买单和卖单的价格和数量,帮助评估市场供需关系。
- K线数据: 不同时间周期的K线图数据,例如分钟K线、小时K线等,用于技术分析和趋势判断。
- 成交明细: 每一笔成交订单的详细信息,包括成交价格、成交数量、成交时间等。
通过 WebSocket API,用户可以构建高性能的交易机器人、实时数据监控系统和自定义的交易界面。与传统的 REST API 相比,WebSocket API 减少了延迟,提高了数据传输效率,更适合需要快速响应市场变化的交易策略。
MEXC 提供了详细的 WebSocket API 文档,包括连接方式、订阅频道、数据格式等,方便开发者快速集成和使用。
1. WebSocket 连接
WebSocket 连接是 MEXC 平台提供的实时数据访问方式,它允许用户通过持久连接接收市场行情、交易深度等动态信息。MEXC 的 WebSocket 连接地址为:
wss://wbs.mexc.com/ws
。
通过建立与该地址的 WebSocket 连接,开发者可以构建自己的交易机器人、数据分析工具或实时监控面板。WebSocket 协议相较于传统的 HTTP 请求,显著降低了延迟,提升了数据传输效率,对于高频交易和需要快速响应的应用场景尤为重要。
在建立 WebSocket 连接时,请确保你的客户端库支持 WebSocket 协议,并遵循 MEXC 提供的 API 文档中的连接规范和鉴权机制。通常,你需要发送一个包含 API 密钥和签名信息的握手消息来验证身份,获得数据访问权限。详细的鉴权流程和消息格式请参考 MEXC 官方 API 文档。
成功建立连接后,你可以通过发送订阅消息来指定需要接收的数据类型,如行情数据(tick),深度数据(depth)或交易数据(trades)。 MEXC 平台会根据你的订阅,实时推送相关数据更新。
维持稳定的 WebSocket 连接对于实时数据接收至关重要。 客户端应实现心跳机制,定期向服务器发送心跳包,以确保连接的有效性。 同时,需要处理连接断开和重连的逻辑,以应对网络波动等异常情况,保障数据的连续性。
2. 订阅
在加密货币交易平台或数据提供商处,订阅是获取实时市场数据流的关键步骤。您需要向服务器发送特定的请求,才能接收到您感兴趣的交易对、订单簿更新或其他相关信息。通常,这种订阅是通过发送 JSON (JavaScript Object Notation) 格式的消息来实现的。
JSON 是一种轻量级的数据交换格式,易于阅读和编写,并且可以被各种编程语言轻松解析。 订阅消息的 JSON 结构通常包含以下关键字段:
-
"type"
或"method"
: 指定消息的类型,通常为 "subscribe" 或 "method",表明这是一个订阅请求。 -
"channel"
或"topic"
: 定义您想要订阅的频道或主题。例如,"ticker" (实时价格)、"orderbook" (订单簿)、"trades" (成交记录) 等。不同的平台可能会使用不同的命名方式。 -
"symbol"
或"instrument"
: 指定您感兴趣的交易对。例如,"BTC/USD"、"ETH/BTC" 等。 -
"params"
(可选): 某些平台可能需要额外的参数来进一步配置订阅。例如,订单簿的深度(显示多少层订单)、更新频率等。
以下是一个订阅比特币/美元 (BTC/USD) 交易对实时价格 (ticker) 的 JSON 示例:
{
"type": "subscribe",
"channel": "ticker",
"symbol": "BTC/USD"
}
在实际操作中,您需要根据您使用的具体平台或 API 的文档,来构建正确的 JSON 消息。 请务必仔细阅读 API 文档,了解所需的字段和格式。发送订阅消息后,服务器将开始向您推送实时数据,直到您取消订阅。
订阅交易对深度信息示例:
用于订阅指定交易对的实时深度信息,以下是一个示例JSON请求,展示如何通过WebSocket连接订阅
BTC_USDT
交易对的深度数据。
请求格式:
method
字段指定操作类型为
SUBSCRIPTION
,表示订阅行为。
params
数组包含订阅的具体参数,这里是包含一个字符串的数组,字符串的格式为
"depth:交易对"
,其中
交易对
需要替换成你想要订阅的实际交易对,例如
BTC_USDT
。
id
字段是一个唯一的请求ID,用于区分不同的请求,方便追踪响应。可以是整数或字符串。
示例JSON:
{
"method": "SUBSCRIPTION",
"params": [
"depth:BTC_USDT"
],
"id": 1
}
参数解释:
-
method
: 字符串类型,固定值为 "SUBSCRIPTION",表明这是一个订阅请求。 -
params
: 数组类型,包含订阅的具体参数。对于深度数据订阅,数组中通常只有一个元素,即包含 "depth:交易对" 格式的字符串。 -
id
: 整数或字符串类型,用于标识请求的唯一ID。服务端会在响应中使用相同的ID,以便客户端将请求和响应进行匹配。
注意事项:
- 请确保WebSocket连接已经建立,并且已经通过身份验证(如果需要)。
- 不同的交易所可能对交易对的命名规则有所不同,请参考交易所的API文档。
-
订阅成功后,服务端会推送
depth
类型的数据更新,请注意解析和处理这些数据。 -
可以同时订阅多个交易对的深度数据,只需在
params
数组中添加多个 "depth:交易对" 字符串即可。 - 服务端推送的深度数据通常包含买单和卖单的价格和数量信息,用于构建订单簿。
订阅K线数据示例:
以下JSON格式数据展示了如何通过WebSocket API订阅指定交易对的K线数据。本例中,我们订阅的是BTC_USDT交易对的1分钟K线数据。通过订阅,可以实时获取价格变动信息,用于量化交易、数据分析等用途。
method
字段指定了操作类型,此处为 "SUBSCRIPTION",表明这是一个订阅请求。服务端收到此请求后,会将指定K线数据的更新推送给客户端。
params
字段是一个数组,包含了订阅的具体参数。在本例中,"kline:BTC_USDT:1m" 表示订阅BTC_USDT交易对的1分钟K线数据。其中,
kline
表示数据类型为K线,
BTC_USDT
表示交易对,
1m
表示K线周期为1分钟。不同的交易所可能支持不同的K线周期,例如1分钟(1m)、5分钟(5m)、15分钟(15m)、30分钟(30m)、1小时(1h)、4小时(4h)、1天(1d)等。
id
字段是一个用户自定义的请求ID,用于区分不同的请求和响应。服务端在响应订阅请求时,会将相同的ID返回,客户端可以通过ID来匹配请求和响应。ID可以是数字、字符串等类型。确保每个请求都有一个唯一的ID,以便正确处理响应数据。
示例代码:
{
"method": "SUBSCRIPTION",
"params": [
"kline:BTC_USDT:1m"
],
"id": 2
}
通过发送以上JSON数据,你将订阅到BTC_USDT交易对的1分钟K线数据。服务端会实时推送更新后的K线数据,包含开盘价、最高价、最低价、收盘价和成交量等信息。
3. 数据格式
MEXC WebSocket API 返回的数据采用广泛使用的 JSON(JavaScript Object Notation)格式。JSON 是一种轻量级的数据交换格式,易于阅读和编写,同时也方便机器解析和生成。由于其结构清晰、易于处理,JSON 已成为现代网络应用中数据传输的标准格式之一。
你需要使用相应的编程语言或工具解析 JSON 数据,才能从中提取出你需要的特定信息。大多数编程语言都提供了内置或第三方库来处理 JSON 数据,例如 Python 的
模块、JavaScript 的
JSON.parse()
和
JSON.stringify()
方法等。正确解析 JSON 数据是成功使用 MEXC WebSocket API 的关键步骤,只有理解了数据的结构,才能准确地提取和利用 API 提供的信息,例如最新的交易价格、交易量、订单簿信息等。确保你的代码能够妥善处理 JSON 数据中的各种数据类型(如字符串、数字、布尔值、数组和对象),并正确地提取你需要的数据字段。
BigONE 交易所 API
BigONE 交易所提供强大的应用程序编程接口 (API),允许开发者和交易者以编程方式访问和管理其交易账户,获取市场数据,并执行交易操作。BigONE 提供两种主要的 API 接口类型:REST API 和 WebSocket API。
REST API : REST (Representational State Transfer) API 采用请求-响应模式,允许用户通过发送 HTTP 请求 (例如 GET, POST, PUT, DELETE) 与 BigONE 服务器进行交互。REST API 适用于需要请求历史数据、账户信息、提交订单以及执行其他非实时操作的场景。它是一种同步通信方式,意味着客户端发送请求后需要等待服务器返回响应才能继续执行后续操作。
WebSocket API : WebSocket API 提供了一种持久性的双向通信通道,允许 BigONE 服务器实时推送市场数据和账户更新至客户端。WebSocket API 适用于需要实时行情数据、订单状态更新、以及需要快速响应市场变化的场景。与 REST API 相比,WebSocket API 的延迟更低,数据更新更及时,可以显著提高交易效率和用户体验。
选择使用哪种 API 取决于具体的应用场景和需求。REST API 适用于非实时性的数据请求和管理操作,而 WebSocket API 则适用于对实时性要求较高的应用场景。开发者可以根据自身的需求选择合适的 API 类型,或将两者结合使用,以构建功能完善的交易应用程序。
REST API
1. API 认证
BigONE API 采用 HMAC-SHA256 签名机制进行身份认证,确保交易安全。开发者需要具备 API Key 和 Secret Key 方可进行接口调用。API Key 用于标识用户身份,而 Secret Key 则用于生成请求签名,验证请求的完整性和真实性。
要成功完成认证,必须在每个API请求中包含必要的身份验证信息。通常,这包括将 API Key 作为请求头或查询参数传递,并使用 Secret Key 对请求参数进行 HMAC-SHA256 加密,生成签名。该签名也需要包含在请求中。BigONE服务器将使用提供的API Key和Secret Key重新计算签名,并将其与请求中提供的签名进行比较,从而验证请求的有效性。
务必妥善保管 API Key 和 Secret Key,避免泄露。一旦泄露,可能导致资产损失或账户被盗用。建议定期更换 Secret Key,并启用双重验证等安全措施,进一步增强账户安全性。BigONE 平台通常提供相应的工具和界面来管理API Key和Secret Key,方便用户进行安全设置和密钥轮换。
生成签名示例 (Python):
本示例展示了如何使用Python生成BigONE交易所API请求所需的签名。正确的签名是访问BigONE API的关键,它用于验证请求的身份和完整性。
import hmac
import hashlib
import time
import requests
import base64
这些是Python代码中需要导入的库:
-
hmac
: 用于创建哈希消息认证码 (HMAC),用于生成签名。 -
hashlib
: 提供了多种哈希算法,本例中使用SHA256。 -
time
: 用于获取当前时间戳。 -
requests
: 用于发送HTTP请求。 -
base64
: 用于Base64编码和解码,密钥需要解码,签名需要编码。
api_key = "YOUR_API_KEY"
secret_key = "YOUR_SECRET_KEY"
base_url = "https://big.one/api/v3"
请务必将
YOUR_API_KEY
和
YOUR_SECRET_KEY
替换为您在BigONE交易所申请到的API密钥和密钥。
base_url
定义了BigONE API的基础URL。 注意保管好您的
secret_key
。
def generate_signature_bigone(method, path, query_string, body, timestamp):
"""生成BigONE签名"""
message = f"{method}\n{path}\n{query_string}\n{body}\n{timestamp}"
signature = hmac.new(base64.b64decode(secret_key), message.encode('utf-8'), hashlib.sha256).digest()
signature_b64 = base64.b64encode(signature).decode('utf-8')
return signature_b64
generate_signature_bigone
函数用于生成BigONE API请求的签名。该函数接受以下参数:
-
method
: HTTP请求方法 (例如: "GET", "POST", "PUT", "DELETE")。 -
path
: API请求的路径 (例如: "/accounts", "/orders")。 -
query_string
: URL查询字符串。如果没有查询参数,则为空字符串。 -
body
: 请求体,通常用于POST或PUT请求。如果没有请求体,则为空字符串。 -
timestamp
: UNIX时间戳,表示请求发送的时间。
- 将HTTP请求方法、路径、查询字符串、请求体和时间戳组合成一个字符串,用换行符(\n)分隔。
- 使用Base64解码后的密钥对该字符串进行HMAC-SHA256哈希。
- 将哈希结果进行Base64编码。
- 返回Base64编码后的签名。
def get_account_info_bigone():
"""获取BigONE账户信息"""
method = "GET"
path = "/accounts"
query_string = ""
body = ""
timestamp = str(int(time.time()))
get_account_info_bigone
函数用于获取BigONE账户信息。它构造API请求的各个部分:
-
method
: 设置为 "GET",因为我们正在获取账户信息。 -
path
: 设置为 "/accounts",这是BigONE API中获取账户信息的路径。 -
query_string
: 设置为空字符串,因为这个请求不需要查询参数。 -
body
: 设置为空字符串,因为这是一个GET请求,没有请求体。 -
timestamp
: 使用time.time()
获取当前时间,转换为整数,再转换为字符串。
signature = generate_signature_bigone(method, path, query_string, body, timestamp)
调用
generate_signature_bigone
函数生成签名,并将结果存储在
signature
变量中。
headers = {
"Content-Type": "application/",
"ONE-API-KEY": api_key,
"ONE-TIME": timestamp,
"ONE-SIGN": signature
}
构造HTTP请求头,包括:
-
Content-Type
: 设置为 "application/",指定请求体的内容类型为JSON格式。 -
ONE-API-KEY
: 设置为您的API密钥。 -
ONE-TIME
: 设置为时间戳。 -
ONE-SIGN
: 设置为生成的签名。
url = f"{base_url}{path}"
response = requests.get(url, headers=headers)
return response.text
使用
requests.get
函数发送HTTP GET请求,并将API URL和请求头传递给该函数。
response.text
获取响应的文本内容。
if __name__ == '__main__':
account_info = get_account_info_bigone()
print(account_info)
这段代码确保只有在直接运行该脚本时才会执行以下代码。它调用
get_account_info_bigone
函数获取账户信息,并将结果打印到控制台。
请求头:
-
Content-Type
:application/
-
ONE-API-KEY
: API Key -
ONE-TIME
: Timestamp (Unix 时间戳,秒) -
ONE-SIGN
: 签名
用于指定请求体的格式。 在本例中,指定为
application/
,表明请求体使用 JSON(JavaScript Object Notation)格式。
用于身份验证。这是访问 API 的密钥,必须由服务提供商提供。 请务必妥善保管此密钥,避免泄露。
一个时间戳,表示请求发出的时间,以 Unix 时间戳(自 Unix 纪元以来的秒数)表示。 用于防止重放攻击。
基于请求参数、
ONE-API-KEY
和
ONE-TIME
生成的数字签名。 用于验证请求的完整性和真实性,确保请求未被篡改。
2. 常用API接口
-
获取账户信息:
/accounts
(GET)此接口用于检索用户的账户余额、可用资金、已用保证金等信息。响应数据通常包含不同币种的余额及相关财务指标。请注意API Key权限,确保拥有读取账户信息的权限。
-
下单:
/orders
(POST)此接口用于提交新的交易订单。请求体需要包含交易对 (market_id)、订单类型 (市价单/限价单)、买卖方向 (买入/卖出)、数量和价格 (限价单)。务必仔细检查请求参数,确保订单参数准确无误,避免不必要的交易风险。
-
取消订单:
/orders/{order_id}
(DELETE)此接口用于取消指定的未成交订单。
{order_id}
需要替换为要取消订单的实际ID。取消成功会返回确认信息,取消失败则会返回相应的错误码和错误信息。取消已成交订单无效。 -
查询订单:
/orders/{order_id}
(GET)此接口用于查询指定订单的详细信息,包括订单状态、成交数量、成交均价等。
{order_id}
需要替换为要查询订单的实际ID。可以根据订单状态判断订单是否完全成交、部分成交或者已被取消。 -
获取市场行情:
/markets/{market_id}
(GET)此接口用于获取指定交易对的市场行情数据,包括最新成交价、最高价、最低价、24小时成交量、24小时成交额等。
{market_id}
需要替换为要查询的交易对ID。行情数据实时更新,可以用于判断市场趋势和进行交易决策。 -
获取K线数据:
/markets/{market_id}/kline
(GET)此接口用于获取指定交易对的K线数据,用于技术分析。
{market_id}
需要替换为要查询的交易对ID。可以指定K线的时间周期 (例如:1分钟、5分钟、1小时、1天),以及返回数据的数量。K线数据包含了每个时间周期的开盘价、最高价、最低价、收盘价和成交量。
3. 错误处理
BigONE API 使用标准 HTTP 状态码来指示请求的成功或失败。除了 HTTP 状态码,API 还会返回 JSON 格式的错误信息,以便开发者能够更详细地了解错误的具体原因和位置。
HTTP 状态码是服务器向客户端(例如您的应用程序)发送的响应代码,用于指示请求的处理结果。常见的状态码包括:
- 200 OK : 请求成功。
- 400 Bad Request : 请求格式错误,服务器无法理解。这通常表示客户端发送了无效的参数或数据。
- 401 Unauthorized : 未授权。请求需要用户身份验证,但客户端未提供有效的凭据(例如 API 密钥)。
- 403 Forbidden : 禁止访问。服务器理解请求,但拒绝执行。这通常表示用户没有足够的权限访问该资源。
- 404 Not Found : 资源未找到。请求的 URL 不存在或已过期。
- 429 Too Many Requests : 请求过于频繁。客户端在短时间内发送了太多请求,触发了速率限制。
- 500 Internal Server Error : 服务器内部错误。这通常表示服务器遇到了无法处理的异常情况。
- 503 Service Unavailable : 服务不可用。服务器暂时无法处理请求,可能由于服务器维护或过载。
当 API 请求失败时(即 HTTP 状态码不是 200),返回的 JSON 错误信息通常包含以下字段:
- code : 错误代码,用于标识错误的具体类型。
- message : 错误消息,提供关于错误的详细描述。
- data : 可选的错误数据,包含与错误相关的附加信息。
例如,如果您的 API 密钥无效,API 可能会返回一个 401 Unauthorized 状态码,以及以下 JSON 错误信息:
{
"code": "INVALID_API_KEY",
"message": "Invalid API key provided."
}
开发者应该根据 HTTP 状态码和 JSON 错误信息来处理 API 错误,例如:
- 检查请求参数是否正确。
- 验证 API 密钥是否有效并已正确配置。
- 处理速率限制,例如通过实现指数退避策略来重试请求。
- 记录错误信息,以便进行调试和分析。
良好的错误处理对于构建稳定和可靠的应用程序至关重要。 通过仔细处理 API 返回的错误信息,您可以确保您的应用程序能够优雅地处理各种意外情况,并提供更好的用户体验。
WebSocket API
BigONE WebSocket API 旨在为用户提供实时、低延迟的市场数据流,用于构建高频交易策略、监控市场动态以及开发数据驱动型应用。通过 WebSocket 连接,您可以订阅各种市场数据频道,包括但不限于实时交易行情、深度订单簿更新、K线数据等。
WebSocket 协议相较于传统的 REST API,具有以下显著优势:
- 实时性: 数据推送是双向的,服务器可以在市场行情变化时立即将数据推送到客户端,无需客户端频繁轮询。
- 低延迟: 避免了 HTTP 协议的握手开销,降低了数据传输延迟,对于高频交易至关重要。
- 效率: 减少了不必要的数据传输,仅传输发生变化的数据,节省带宽和资源。
- 持久连接: 建立一次连接后,可以长时间保持连接状态,无需重复建立和断开连接。
通过 BigONE WebSocket API,您可以订阅以下类型的数据:
- 实时交易行情: 包括最新成交价、成交量、成交时间等信息。
- 深度订单簿: 提供买一价、卖一价以及更深层次的买卖盘信息,用于分析市场深度和流动性。
- K线数据: 提供不同时间周期的 K 线图数据,用于技术分析。
- 聚合行情数据: 将多个交易所或交易对的行情数据聚合在一起,提供更全面的市场概览。
使用 BigONE WebSocket API 需要进行身份验证,以确保数据的安全性。请参考 API 文档获取详细的身份验证流程和数据订阅方式。我们建议您仔细阅读 API 文档,了解每个频道的数据格式、频率限制等信息,以便更好地利用 WebSocket API 获取所需的市场数据。
1. 连接
要与BigONE交易所建立实时数据连接,您需要使用WebSocket协议。WebSocket连接地址是:
wss://ws.big.one/
。 这个地址是所有客户端连接到BigONE实时数据服务器的统一入口点。 为了成功建立连接,您的客户端必须支持WebSocket协议,并且正确处理握手过程。 建议您在客户端实现中包含错误处理机制,以便在连接失败时进行重试或提供适当的错误信息。
2. 订阅
要接收实时数据更新,您需要向 BigONE 的 WebSocket API 发送订阅请求。该请求必须使用 JSON 格式进行编码。订阅消息中包含您希望接收的数据类型、交易对等信息,以便服务器知道您感兴趣的具体数据流。
请务必查阅 BigONE API 文档 中关于订阅格式的详细说明。文档中会详细描述可用的订阅主题、每个主题所需的参数,以及构造正确 JSON 消息的示例。例如,您可能需要指定交易对(例如,BTC/USDT)、数据类型(例如,实时成交价、订单簿深度)以及更新频率。不正确的订阅格式可能导致订阅失败或无法接收到预期的数据。
正确构建 JSON 格式的订阅消息至关重要。通常,订阅消息会包含一个 "method" 字段,指示操作类型为 "subscribe";一个 "params" 字段,包含订阅的具体参数;以及一个 "id" 字段,用于跟踪请求和响应。 JSON 格式的消息示例可能如下所示:
{"method": "subscribe", "params": ["order_book.BTC-USDT", "depth5"], "id": 123}
这个示例订阅了 BTC/USDT 交易对的订单簿深度,深度为 5 档。