Hướng dẫn cho lập trình viên · Bitfinex v2 REST API

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.

Thử endpoint công khai

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
Xem trước phản hồi
{
  "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.

INDEXtBTCUSDfUSD
0BIDFRR
1BID_SIZEBID
2ASKBID_PERIOD
3ASK_SIZEBID_SIZE
4CHANGEASK
5CHANGE_RELATIVEASK_PERIOD
6LAST_PRICEASK_SIZE
7VOLUMEDAILY_CHANGE
8HIGHDAILY_CHANGE_PERC
9LOWLAST_PRICE
10FIRST_TRADEVOLUME
11HIGH
12LOW
15FRR_AMOUNT_AVAILABLE
16FIRST_TRADE

REST: 90 req/min ·docs.bitfinex.com/reference/rest-public-ticker

Bước số không

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.

Chuyển đổi đơn vị lãi suất

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 × 100
curl 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.

Mã chạy được

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.

Tự xây hay dùng sẵn

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.

Thêm khóa API vào StratumLãi suất funding trực tiếpĐọc sổ funding Bitfinex trực tiếpSo sánh bot mã nguồn mởBộ dữ liệu funding BitfinexWidget lãi suất funding Bitfinex trực tiếp