Bitfinex API, giải thích cho người cho vay
Tài liệu API của Bitfinex bao phủ hàng trăm endpoint; một bot cho vay chỉ cần khoảng một tá. Hướng dẫn này nói đúng về chúng: tạo khóa API đã tắt quyền rút tiền, đọc lãi suất funding và sổ lệnh từ API công khai, đặt và hủy lệnh chào funding qua API có xác thực, cùng các giới hạn tần suất và điểm kỳ quặc của dữ liệu mà bạn sẽ gặp trong thực tế — kèm ví dụ Python chạy được.
Đường dẫn endpoint và hành vi đã được kiểm chứng với Bitfinex v2 API chính thức, đúng như Stratum dùng trong môi trường production, tháng 8/2026. Tài liệu Bitfinex chính thức là nguồn tham chiếu có thẩm quyền.
Trình khám phá API funding Bitfinex trực tiếp
Chọn endpoint và tiền tệ rồi chạy yêu cầu thật không cần xác thực. Endpoint Stratum chuẩn hóa FRR, mức trung bình, funding khả dụng và các mức cố định.
https://app.stratum.money/api/v1/public/funding-rates.json{
"generatedAt": "2026-08-23T06:48:15.408007891Z",
"updatedAt": "2026-08-23T06:05:00Z",
"source": "Bitfinex Public REST API",
"currency": {
"code": "USD",
"bitfinexSymbol": "fUSD",
"current": {
"timestamp": "2026-08-23T06:05:00Z",
"dailyRatePercent": "0.031025",
"annualizedAprPercent": "11.324125",
"averagePeriodDays": "91.470000",
"fundingAmount": "5991052941.288744",
"fundingAmountUsed": "5935309488.394312",
"fundingAvailable": "55743452.894432",
"fundingBelowThreshold": "763483370.5925878"
},
"averages": {
"hours24": {
"dailyRatePercent": "0.031200",
"annualizedAprPercent": "11.388073",
"observations": 25
},
"days7": {
"dailyRatePercent": "0.031710",
"annualizedAprPercent": "11.574020",
"observations": 169
},
"days30": {
"dailyRatePercent": "0.033403",
"annualizedAprPercent": "12.192212",
"observations": 721
}
},
"market": {
"bestFixedBid": {
"dailyRatePercent": "0.027397",
"annualizedAprPercent": "10.000000",
"periodDays": 120,
"amount": "11593282.43646913"
},
"bestFixedAsk": {
"dailyRatePercent": "0.014188",
"annualizedAprPercent": "5.178600",
"periodDays": 2,
"amount": "264.93559176"
},
"fixedBids": [
{
"dailyRatePercent": "0.027397",
"annualizedAprPercent": "10.000000",
"periodDays": 120,
"amount": "11593282.43646913"
},
{
"dailyRatePercent": "0.018011",
"annualizedAprPercent": "6.574000",
"periodDays": 120,
"amount": "133240.73391109"
},
{
"dailyRatePercent": "0.017770",
"annualizedAprPercent": "6.486100",
"periodDays": 120,
"amount": "23123.30278361"
},
{
"dailyRatePercent": "0.017400",
"annualizedAprPercent": "6.351000",
"periodDays": 120,
"amount": "12350.0"
},
{
"dailyRatePercent": "0.017130",
"annualizedAprPercent": "6.252500",
"periodDays": 120,
"amount": "14000.0"
},
{
"dailyRatePercent": "0.017125",
"annualizedAprPercent": "6.250600",
"periodDays": 117,
"amount": "560000.0"
},
{
"dailyRatePercent": "0.017120",
"annualizedAprPercent": "6.248800",
"periodDays": 120,
"amount": "20000.0"
},
{
"dailyRatePercent": "0.017111",
"annualizedAprPercent": "6.245500",
"periodDays": 120,
"amount": "2000000.0"
},
{
"dailyRatePercent": "0.016125",
"annualizedAprPercent": "5.885600",
"periodDays": 117,
"amount": "560000.0"
},
{
"dailyRatePercent": "0.016000",
"annualizedAprPercent": "5.840000",
"periodDays": 120,
"amount": "10009162.66122322"
},
{
"dailyRatePercent": "0.016000",
"annualizedAprPercent": "5.840000",
"periodDays": 14,
"amount": "9306.90081316"
},
{
"dailyRatePercent": "0.015111",
"annualizedAprPercent": "5.515500",
"periodDays": 117,
"amount": "560000.0"
}
],
"fixedAsks": [
{
"dailyRatePercent": "0.014188",
"annualizedAprPercent": "5.178600",
"periodDays": 2,
"amount": "264.93559176"
},
{
"dailyRatePercent": "0.014190",
"annualizedAprPercent": "5.179300",
"periodDays": 2,
"amount": "250.0"
},
{
"dailyRatePercent": "0.014192",
"annualizedAprPercent": "5.180100",
"periodDays": 2,
"amount": "200.0"
},
{
"dailyRatePercent": "0.014978",
"annualizedAprPercent": "5.467000",
"periodDays": 2,
"amount": "3837.92472142"
},
{
"dailyRatePercent": "0.014982",
"annualizedAprPercent": "5.468400",
"periodDays": 2,
"amount": "323.64921816"
},
{
"dailyRatePercent": "0.014988",
"annualizedAprPercent": "5.470600",
"periodDays": 2,
"amount": "605.58777224"
},
{
"dailyRatePercent": "0.014998",
"annualizedAprPercent": "5.474300",
"periodDays": 2,
"amount": "2079.77565528"
},
{
"dailyRatePercent": "0.014999",
"annualizedAprPercent": "5.474600",
"periodDays": 2,
"amount": "1968.80422628"
},
{
"dailyRatePercent": "0.015047",
"annualizedAprPercent": "5.492200",
"periodDays": 2,
"amount": "484.95397132"
},
{
"dailyRatePercent": "0.015196",
"annualizedAprPercent": "5.546500",
"periodDays": 2,
"amount": "150.0"
},
{
"dailyRatePercent": "0.015418",
"annualizedAprPercent": "5.627600",
"periodDays": 2,
"amount": "200.0"
},
{
"dailyRatePercent": "0.015607",
"annualizedAprPercent": "5.696500",
"periodDays": 2,
"amount": "1150.0"
}
],
"fixedBidDepth": "37154170.83381627",
"fixedAskDepth": "536825.22487061",
"frrBidDepth": "0",
"frrOfferDepth": "0",
"sampledLevels": 356
},
"historyPreview": [
{
"timestamp": "2026-08-23T06:05:00Z",
"dailyRatePercent": "0.031025",
"annualizedAprPercent": "11.324125",
"averagePeriodDays": "91.470000",
"fundingAmount": "5991052941.288744",
"fundingAmountUsed": "5935309488.394312",
"fundingAvailable": "55743452.894432",
"fundingBelowThreshold": "763483370.5925878"
},
{
"timestamp": "2026-08-23T05:05:00Z",
"dailyRatePercent": "0.031025",
"annualizedAprPercent": "11.324125",
"averagePeriodDays": "92.570000",
"fundingAmount": "5989152818.724412",
"fundingAmountUsed": "5934084828.197341",
"fundingAvailable": "55067990.527071",
"fundingBelowThreshold": "769699003.4136398"
},
{
"timestamp": "2026-08-23T04:05:00Z",
"dailyRatePercent": "0.031025",
"annualizedAprPercent": "11.324125",
"averagePeriodDays": "92.030000",
"fundingAmount": "5988567317.18653",
"fundingAmountUsed": "5933880711.029357",
"fundingAvailable": "54686606.157173",
"fundingBelowThreshold": "769905136.1789076"
}
]
}
}GET /v2/ticker/{symbol} · tBTCUSD / fUSD
Ticker funding — FRR (index 0, một lãi suất theo ngày), bid/ask tốt nhất cùng kỳ hạn của chúng, khối lượng theo ngày. Endpoint hữu ích nhất cho việc cho vay.
| INDEX | tBTCUSD | fUSD |
|---|---|---|
| 0 | BID | FRR |
| 1 | BID_SIZE | BID |
| 2 | ASK | BID_PERIOD |
| 3 | ASK_SIZE | BID_SIZE |
| 4 | CHANGE | ASK |
| 5 | CHANGE_RELATIVE | ASK_PERIOD |
| 6 | LAST_PRICE | ASK_SIZE |
| 7 | VOLUME | DAILY_CHANGE |
| 8 | HIGH | DAILY_CHANGE_PERC |
| 9 | LOW | LAST_PRICE |
| 10 | FIRST_TRADE | VOLUME |
| 11 | — | HIGH |
| 12 | — | LOW |
| 15 | — | FRR_AMOUNT_AVAILABLE |
| 16 | — | FIRST_TRADE |
REST: 90 req/min ·docs.bitfinex.com/reference/rest-public-ticker
Tạo khóa API giới hạn quyền (tắt rút tiền)
Mọi thứ bên dưới chỉ cần khóa API cho các endpoint có xác thực — lãi suất, nến và sổ lệnh đều công khai. Khi bạn tạo khóa (Bitfinex → API Keys → Create New Key), hãy giới hạn nó vào đúng những gì người cho vay thực sự cần: Margin Funding đọc + ghi (để xem và đặt lệnh chào), Wallets đọc (để xem số dư) và Account History đọc (cho sổ cái). Để nguyên trạng thái tắt cho rút tiền, giao dịch và chuyển khoản.
Một bot funding không bao giờ cần khả năng chuyển tiền của bạn ra khỏi sàn. Một khóa không có quyền rút và giao dịch, tệ nhất, chỉ có thể cho vay ví funding của bạn với lãi suất xấu — nó không thể rút cạn ví. Đây chính là cách giới hạn quyền mà Stratum thực thi: khóa có quyền rút hoặc giao dịch bị từ chối ngay khi thêm vào.
Ticker, book và funding/stats không dùng cùng đơn vị FRR
Lãi suất ticker và book là phân số hằng ngày. Trường FRR trong funding/stats bằng 1/365 FRR ngày được hiển thị. Hãy dùng đúng công thức trước khi so sánh.
ticker/book daily % = API rate × 100
ticker/book gross APR % = API rate × 365 × 100
funding/stats daily % = FRR field × 365 × 100
funding/stats gross APR % = FRR field × 365 × 365 × 100curl https://app.stratum.money/api/v1/public/funding-rates.json
curl https://app.stratum.money/api/v1/public/funding-rates.csv
curl "https://api-pub.bitfinex.com/v2/ticker/fUSD"
curl "https://api-pub.bitfinex.com/v2/book/fUSD/P0?len=25"Các endpoint quan trọng cho funding
Công khai (không cần khóa, api-pub.bitfinex.com)
GET /v2/ticker/fUSD
Ticker funding — FRR (index 0, một lãi suất theo ngày), bid/ask tốt nhất cùng kỳ hạn của chúng, khối lượng theo ngày. Endpoint hữu ích nhất cho việc cho vay.
GET /v2/candles/{key}/hist
Nến lãi suất funding lịch sử theo từng kỳ hạn, ví dụ key trade:1h:fUSD:p2 cho funding USD 2 ngày. Đây là chuỗi dữ liệu bạn dùng để backtest.
GET /v2/book/fUSD/P2 và /R0
Sổ funding trực tiếp — các mức giá gộp (P0–P3) hoặc lệnh thô (R0). Lãi suất, kỳ hạn và khối lượng của mọi lệnh bid và chào đang chờ.
GET /v2/funding/stats/fUSD/hist
Thống kê funding theo giờ: FRR, kỳ hạn trung bình, tổng funding đã dùng. Cái bẫy: cột FRR được lưu dưới dạng FRR/365 — nhân với 365 để khớp với ticker.
Có xác thực (api.bitfinex.com, ký HMAC)
POST /v2/auth/r/wallets
Số dư ví, bao gồm ví funding mà bot dùng để cho vay.
POST /v2/auth/r/funding/offers/fUSD
Các lệnh chào funding đang mở của bạn; biến thể /hist trả về những lệnh đã khớp và đã hủy.
POST /v2/auth/r/funding/credits/fUSD
Khoản funding hiện đang cho vay (khoản cấp tín dụng đang hoạt động): lãi suất, kỳ hạn, thời điểm mở. Biến thể /hist là lịch sử các khoản vay đã đóng của bạn.
POST /v2/auth/w/funding/offer/submit
Đặt lệnh chào funding: symbol, số lượng, lãi suất theo ngày, kỳ hạn (2–120 ngày). Hủy bằng offer/cancel hoặc offer/cancel/all.
POST /v2/auth/r/ledgers/USD/hist
Sổ cái — mọi khoản trả lãi cùng khoản khấu trừ phí 15%, theo từng khoản vay từng ngày. Cơ sở đúng duy nhất cho số liệu thu nhập và thuế.
POST /v2/auth/w/funding/keep
Điều khiển tự động gia hạn cho từng khoản cấp tín dụng — tương đương API của nút bật/tắt auto-renew trong giao diện.
Ví dụ Python
Đọc FRR và sổ funding (không cần khóa)
import requests
PUB = "https://api-pub.bitfinex.com"
# Ticker funding: index 0 là FRR, niêm yết dưới dạng lãi suất THEO NGÀY
ticker = requests.get(f"{PUB}/v2/ticker/fUSD", timeout=10).json()
frr_daily = ticker[0]
print(f"FRR: {frr_daily * 365 * 100:.2f}% APR")
# Đỉnh sổ funding trực tiếp (đã gộp)
book = requests.get(f"{PUB}/v2/book/fUSD/P2", params={"len": 25}, timeout=10).json()
for rate, period, count, amount in book[:5]:
side = "offer" if amount < 0 else "bid"
print(f"{side}: {rate * 365 * 100:.2f}% APR for {period}d, size {abs(amount):,.0f}")Đặt một lệnh chào funding (có xác thực)
import hashlib, hmac, json, time, requests
KEY, SECRET = "your-key", "your-secret"
BASE = "https://api.bitfinex.com"
def auth_post(path: str, body: dict):
nonce = str(int(time.time() * 1_000_000)) # phải tăng nghiêm ngặt theo từng khóa
raw = f"/api/{path}{nonce}{json.dumps(body)}"
sig = hmac.new(SECRET.encode(), raw.encode(), hashlib.sha384).hexdigest()
return requests.post(f"{BASE}/{path}", data=json.dumps(body), timeout=15, headers={
"bfx-nonce": nonce, "bfx-apikey": KEY, "bfx-signature": sig,
"content-type": "application/json",
}).json()
# Chào $150 (mức tối thiểu của Bitfinex) ở 0.03%/ngày (~10.95% APR) kỳ hạn 2 ngày
result = auth_post("v2/auth/w/funding/offer/submit", {
"type": "LIMIT", "symbol": "fUSD",
"amount": "150", "rate": "0.0003", "period": 2,
})
print(result)Lãi suất trong API luôn là theo ngày — nhân với 365 để ra APR — và luôn là gộp, tức trước khoản phí 15% mà Bitfinex thu trên lãi kiếm được. Lệnh chào tối thiểu tương đương $150; kỳ hạn từ 2–120 ngày. Nếu bạn thích một client được bảo trì hơn là tự viết phần ký, Bitfinex phát hành thư viện Python chính thức (bfxapi).
Giới hạn tần suất và những cái bẫy ngốn hàng giờ thật sự
Nonce phải tăng nghiêm ngặt
Mỗi yêu cầu đã ký cần một bfx-nonce lớn hơn cái trước đó của khóa đó. Hai tiến trình dùng chung một khóa sẽ va chạm với lỗi "nonce: small" — dùng một khóa cho mỗi tiến trình.
Giới hạn tần suất theo endpoint
Các endpoint công khai cho phép khoảng 10–90 yêu cầu/phút tùy route; các endpoint có xác thực tương tự. Vượt giới hạn sẽ trả về HTTP 429 với body ERR_RATE_LIMIT — hãy backoff theo cấp số nhân và cache các lượt đọc.
funding/stats lưu FRR/365
Cột FRR trong /v2/funding/stats là FRR theo ngày chia cho 365, trong khi /v2/ticker niêm yết trực tiếp lãi suất theo ngày. Nhân giá trị stats với 365 trước khi so sánh — nếu không, backtest sẽ bị lệch một cách âm thầm.
Mọi thứ đều là số gộp trước phí
Lãi suất trên sổ, nến và FRR đều là trước phí. Ví của bạn nhận 85% lãi kiếm được (82% với lệnh chào ẩn). Hãy đối soát với sổ cái, không phải với lãi suất niêm yết.
Khoản vay đóng sớm
Một khoản cấp tín dụng 120 ngày không có nghĩa là 120 ngày tiền lãi — người vay trả lại khi họ đóng vị thế, và khoản vay có thể quay về sau vài ngày. Hãy mô hình hóa thời gian nắm giữ kỳ vọng, không phải kỳ hạn danh nghĩa.
Nếu bạn không muốn tự vận hành
Tất cả những gì ở trên là những gì Stratum vận hành trong production: cùng các endpoint, cách ký, backoff và đối soát sổ cái đó, cộng thêm 11 chiến lược đã backtest trên ba năm nến funding, chế độ paper và xuất báo cáo thuế — đằng sau một khóa đã tắt quyền rút tiền mà bạn giới hạn quyền đúng như mô tả ở bước số không. Hãy tự xây bot nếu bạn thích làm chủ cả stack (hướng dẫn này cộng các dự án mã nguồn mở là một con đường thực sự); dùng bot được host sẵn nếu bạn muốn bỏ qua các lỗi nonce và những cú 429 lúc 3 giờ sáng.
FAQ về Bitfinex API
Bot cho vay Bitfinex cần những quyền API nào?
Margin Funding đọc và ghi, Wallets đọc, và Account History đọc. Rút tiền, giao dịch và chuyển khoản nên để tắt — bot cho vay không bao giờ cần chuyển tiền ra khỏi sàn, và khóa giới hạn quyền sẽ hạn chế thiệt hại nếu nó bị lộ.
Bitfinex API có miễn phí không?
Có. Cả API công khai (lãi suất, nến, sổ lệnh) lẫn API có xác thực (lệnh chào, ví, sổ cái) đều miễn phí; bạn chỉ cần tài khoản và khóa API cho phần có xác thực. Các endpoint công khai trên api-pub.bitfinex.com hoàn toàn không cần khóa.
Có thư viện Python chính thức của Bitfinex không?
Có — bfxapi, do Bitfinex phát hành, hỗ trợ cả REST lẫn WebSocket. Các ví dụ trên trang này dùng requests thuần cùng phần ký HMAC tự viết để bạn thấy chính xác điều gì diễn ra trên đường truyền; với mã production, thư viện chính thức giúp tiết kiệm boilerplate.
Lãi suất trong Bitfinex API là theo ngày hay theo năm?
Theo ngày. Lãi suất 0.0003 nghĩa là 0.03% mỗi ngày, xấp xỉ 10.95% APR đơn. Nhân với 365 để ra APR, và nhớ rằng mọi lãi suất niêm yết đều là gộp — Bitfinex giữ 15% lãi kiếm được, nên nhân với 0.85 để ra số về đến ví của bạn.
Tôi có cần WebSocket API cho bot cho vay không?
Ban đầu thì không. Polling REST đủ cho một bot đơn giản. WebSocket (công khai wss://api-pub.bitfinex.com/ws/2, có xác thực wss://api.bitfinex.com/ws/2) trở nên quan trọng khi bạn muốn cập nhật sổ lệnh trực tiếp hoặc thông báo khớp lệnh tức thì mà không đốt giới hạn tần suất REST — đó là cách Stratum theo dõi các sự kiện ví, lệnh chào và khoản cấp tín dụng theo thời gian thực.
Giới hạn tần suất của Bitfinex API là bao nhiêu?
Chúng thay đổi theo endpoint, khoảng 10–90 yêu cầu mỗi phút trên các route công khai và ngân sách tương đương trên các route có xác thực. Vượt giới hạn trả về HTTP 429 (ERR_RATE_LIMIT); client hành xử tốt sẽ cache các lượt đọc công khai và backoff theo cấp số nhân khi gặp 429. Con số chính xác được liệt kê theo từng endpoint trong tài liệu chính thức.
API là phần dễ
Đặt một lệnh chào chỉ là hai mươi dòng Python; biết nên chào lãi suất và kỳ hạn nào mới là bài toán thật. Stratum chạy các chiến lược đã backtest trên chính API được mô tả ở trên — hoặc lấy mã từ trang này và tự xây bot của bạn.