发布于 2024-12-27 09:21:43 · 阅读量: 12706
Bitfinex 是一个知名的加密货币交易所,它提供了强大的 API 接口,帮助开发者和交易员实现自动化交易、获取市场数据、管理账户等操作。如果你想通过编程与 Bitfinex 交互,理解其 API 的使用方法是非常重要的。本文将带你了解 Bitfinex API 的基础使用,帮助你更好地与平台进行互动。
在使用 Bitfinex API 之前,你需要先在 Bitfinex 上创建一个账户,并生成 API 密钥。以下是获取 API 密钥的步骤:
Bitfinex 提供了详细的 API 文档,在这里你可以找到所有可用的端点、请求方法和参数说明。API 基本分为以下几类:
每个 API 请求通常都需要设置 apiKey
和 apiSig
(签名)来验证身份。
获取市场数据是很多应用场景的基础。例如,你可能需要获取某个交易对的当前价格或者历史价格数据。以下是一个简单的例子,展示如何使用 Public API
获取市场行情。
import requests import time import hashlib import hmac
api_key = '你的API_KEY' api_secret = '你的API_SECRET'
def get_ticker(symbol): url = f'https://api.bitfinex.com/v2/ticker/{symbol}' response = requests.get(url) return response.json()
ticker = get_ticker('tBTCUSD') print(ticker)
返回的数据会是一个列表,包含了最新的市场数据:
json [54000.0, 0.0, 54000.0, 53990.0, 0.123456, 0.0, 0.0, 0.0, 54000.0, 53980.0, 0.0]
每个字段代表以下内容:
[0]
:当前买价(Bid)[1]
:当前买数量[2]
:当前卖价(Ask)[3]
:当前卖数量[4]
:最新交易量如果你想使用 Bitfinex 的 API 进行交易,首先需要验证你的身份。API 的 Private API
需要通过 HTTP 请求中的 apiKey
和 apiSig
来进行身份认证。
假设你想创建一个限价买单,以下是一个简单的例子。
import time import hashlib import hmac import requests
api_key = '你的API_KEY' api_secret = '你的API_SECRET'
def create_order(symbol, amount, price, side): url = 'https://api.bitfinex.com/v1/order/new' nonce = str(int(time.time() * 1000))
# 订单参数
params = {
'request': '/v1/order/new',
'nonce': nonce,
'symbol': symbol,
'amount': str(amount),
'price': str(price),
'side': side, # 'buy' 或 'sell'
'type': 'limit', # 'limit' 或 'market'
}
# 计算签名
body = params['request'] + ''.join([key + str(params[key]) for key in sorted(params)])
signature = hmac.new(api_secret.encode(), body.encode(), hashlib.sha384).hexdigest()
# 请求头
headers = {
'X-BFX-APIKEY': api_key,
'X-BFX-SIGNATURE': signature,
'X-BFX-TIMESTAMP': nonce
}
# 发送请求
response = requests.post(url, data=params, headers=headers)
return response.json()
response = create_order('btcusd', 0.01, 54000, 'buy') print(response)
成功创建订单后,你会收到一个类似以下的响应:
json { "order_id": "123456789", "symbol": "btcusd", "price": 54000, "amount": 0.01, "side": "buy", "status": "ACTIVE", "timestamp": "2024-12-27T12:00:00Z" }
这里的 order_id
可以用于之后的订单查询或取消。
如果你想取消已创建的订单,可以使用 order/cancel
接口。以下是取消订单的代码示例:
def cancel_order(order_id): url = 'https://api.bitfinex.com/v1/order/cancel' nonce = str(int(time.time() * 1000))
# 参数
params = {
'request': '/v1/order/cancel',
'nonce': nonce,
'order_id': order_id,
}
# 签名
body = params['request'] + ''.join([key + str(params[key]) for key in sorted(params)])
signature = hmac.new(api_secret.encode(), body.encode(), hashlib.sha384).hexdigest()
# 请求头
headers = {
'X-BFX-APIKEY': api_key,
'X-BFX-SIGNATURE': signature,
'X-BFX-TIMESTAMP': nonce
}
# 发送请求
response = requests.post(url, data=params, headers=headers)
return response.json()
order_id = '123456789' cancel_response = cancel_order(order_id) print(cancel_response)
成功取消订单后,返回的数据通常会像这样:
json { "result": "ok" }
Bitfinex 对 API 请求有频率限制。每个 IP 地址每秒最多可以发起一定数量的请求。如果频繁请求超过限制,你可能会遇到 Rate Limit Exceeded
错误。为避免这种情况,建议在调用 API 时加入延时。
由于 API 密钥允许访问你的账户和交易,因此务必确保 API 密钥和 Secret 的安全。不要将其公开或暴露在公共代码库中。可以考虑使用环境变量来存储密钥信息。
在实际应用中,你可能会遇到一些 API 错误,务必检查返回的错误信息并做相应处理。比如当余额不足时,返回的错误信息可能是:
json { "error": "Not enough funds" }
这时你可以根据错误信息进行相应的异常处理。
Bitfinex 的 API 是非常强大且灵活的,能够满足大多数自动化交易需求。掌握 API 的基本使用后,你可以根据自己的需求进行更复杂的操作,如获取账户余额、查询订单、管理资金等。