Bitfinex借贷自动化实战:用Python在本地PC搭建7×24小时挂单机器人
2026/8/28 17:09:04 网站建设 项目流程

手动在 Bitfinex 资金市场挂借贷 Offer,偶尔操作一次并不麻烦;但如果想长期参与,每天盯着利率变动、发现自己挂的单被吃掉后又得重新挂,就知道这不是一个适合人工重复的事情。这个项目标题提供了一个很务实的答案:把借贷自动化脚本直接跑在你手边的 PC 上,而不是为了一个定时任务去额外购买一台云服务器。本文会从 Bitfinex 的 P2P 借贷机制开始讲起,解释为什么要自动化、为什么本地 PC 方案可行,然后一步步带你写完一套可运行的 Python 借贷机器人,最后给出常见报错排查、API 安全边界和工程化建议。如果你正在做加密资产量化、交易所 API 接入,或者只是想让自己的闲置资金管理更高效,这篇文章都值得收藏备用。

1. Bitfinex 借贷自动化是什么,为什么跑在 PC 上更合适

1.1 什么是 Bitfinex 的 P2P 借贷(Funding)

Bitfinex 有一个独立的资金市场(Funding Market),用户可以把 BTC、USD、ETH 等资产按固定利率借给加杠杆的交易者,平台会把资金从 Lender 自动匹配到 Borrower。对资金提供方来说,这个过程类似于一笔有期限的固定利息出借:你挂出一个 Offer,包含币种、数量、日利率、周期,市场有人愿意以这个利率借走资金,你的资产就会被冻结并在到期后归还本金和利息。

这里的核心概念是“利率不由平台统一制定,而是由市场供需决定”。同一时间同一个币种,可能同时存在大量不同利率的 Offer,你的单子只是其中之一。正因为利率是动态变化的,人工盯盘才变得不现实:利率高了单子出不去,利率低了收益缩水,而且没有自动化的精力去频繁改单。自动化脚本的价值就是代替人工执行这些重复动作,并在合适条件下自动创建、取消、重新挂单。

1.2 自动化借贷要解决的具体问题

一个完整的借贷生命周期,比表面看起来复杂得多。首先,你需要检查自己账户里对应币种的可用余额,确认没有把资金占用在别的订单里;其次,你需要知道自己当前有没有挂单,避免重复创建;接着,如果市场利率已经变化,你可能希望先取消旧 Offer,再按新利率重新挂;最后,当 Offer 被部分或全部吃单后,剩余资金以及到期归还的资金都需要被重新管理。

如果把这些步骤全部交给人工完成,一天可能需要操作多次,而且很容易出现“利率变动时没有及时改单”“忘记自己还有一笔挂单”等低级错误。自动化脚本要做的,就是把这些步骤固化成循环逻辑:每过一段时间扫描一次账户状态,按预设策略决定是新建、保留还是取消 Offer。这也是本文主打脚本的核心思路,虽然代码量不大,但已经把借贷自动化的主要环节都覆盖到了。

1.3 本地 PC 与云服务器方案对比

标题里的亮点是 “runs on your PC, not a server”,这其实是一种很典型的个人量化工具部署选择。对于低频、低交易量的借贷自动化任务,本地 PC 完全够用,而且有云服务器不具备的优势。

对比项本地 PC 方案云服务器方案
硬件成本复用已有电脑,几乎为零每月需要支付主机费用
部署门槛直接命令行运行,调试方便需要 SSH、守护进程、日志管理等
API Key 安全密钥只留在本机密钥存放在服务器,泄露面更大
网络环境依赖家庭/办公网络数据中心网络更稳定
运行时间需要保持电脑不睡眠、不断电服务器默认 7×24 小时运行
适合场景个人学习、小额资金、自用工具生产级高频任务、多用户服务

当然,本地 PC 方案也有明显缺点:电脑一旦睡眠、断网、重启,脚本就会停止。后面我会给出 Windows、macOS、Linux 下防止睡眠和后台运行的具体做法,让大家在纯本地环境下尽量提高稳定性。

1.4 本文的读者范围

这篇文章适合三类读者:第一类是刚接触交易所有公开 API 的开发者,想通过一个真实案例学习签名鉴权、接口请求和定时任务;第二类是已经在使用 Bitfinex 资金借贷、但还在手动操作的用户,希望用脚本替代重复劳动;第三类是正在评估“本地脚本 vs 云服务”方案的量化爱好者,需要一份可参照的实现样例。阅读本文需要基础的 Python 语法知识,不需要有量化交易或区块链开发经验。

2. 环境准备与版本说明

2.1 运行环境与依赖版本

本文示例以 Python 3.10 / 3.11 环境为准,操作系统覆盖 Windows 10/11、macOS、Linux 均可运行。项目依赖非常少,只有两个库:requests用于发送 HTTP 请求,python-dotenv用于读取.env配置文件。如果你不想使用python-dotenv,也可以直接用环境变量设置,但使用文件方式更便于个人电脑上管理密钥。

版本需要根据你的实际环境调整,本文重点演示配置思路和实现逻辑。如果你使用 Python 3.8 以下版本,建议先升级解释器,因为 f-string 和类型注解在旧版本中的表现会有差异。

requests>=2.28.0 python-dotenv>=1.0.0

2.2 申请与配置 API Key

使用 Bitfinex 的私有接口前,需要在自己账户中创建一组 API Key。登录 Bitfinex 账户后,进入 API 管理页面,点击生成新 Key。这里要特别注意权限配置:借贷自动化只需要“读取钱包余额”和“创建/取消订单”相关权限,不要勾选提现权限。哪怕脚本被别人拿走,无法提现也能把风险控制在一个较低水平。

创建完成后,你会得到 API Key 和 API Secret 两串字符串。Secret 只显示一次,务必保存到安全位置。把这两串内容写入项目根目录的.env文件后,建议通过系统文件权限限制该文件的访问范围,避免别人通过共享目录、截图或代码仓库误传泄露。

2.3 项目目录结构

为了让代码结构清晰,我采用非常轻量的单模块设计,把配置、API 封装、主逻辑分开,方便你后续扩展。

bitfinex-lending-bot/ ├── .env # API 密钥与策略参数 ├── requirements.txt # 依赖声明 ├── config.py # 配置读取 ├── bitfinex_client.py # Bitfinex API 客户端封装 └── lending_bot.py # 借贷自动化主循环

3. Bitfinex API 核心概念与鉴权原理

3.1 REST API v2 接口概览

Bitfinex 官方 REST API v2 的基础地址是https://api.bitfinex.com/v2/。所有需要登录账户的私有接口,路径里都包含/auth/,请求时必须携带鉴权 Header。本文会用到的接口如下。

方法路径用途
GET/v2/auth/r/wallets获取钱包列表、余额、可用余额
GET/v2/auth/r/funding/offers/{symbol}获取指定币种的活跃借贷 Offer
POST/v2/auth/w/offer/new创建一笔新的借贷 Offer
POST/v2/auth/w/offer/cancel按 Offer ID 取消挂单
GET/v2/ticker/fUSD公开行情,可用来先验证网络连通性

其中{symbol}表示资金市场的币种符号,常见的是fUSDfBTCfETH等,f前缀用于和普通交易对区分。不同币种的支持范围、最小挂单金额、周期范围会有差异,提交前应以平台当前显示为准。

3.2 鉴权过程拆解

Bitfinex 私有 API 的鉴权方式不是简单的 Key/Secret 拼接,而是采用了“签名”机制。每次请求需要在 Header 中带三个字段:

  • bfx-nonce:一个递增的数字,通常用毫秒时间戳生成,保证每次请求的 nonce 都比上一次大。
  • bfx-apikey:你的 API Key。
  • bfx-signature:基于 API Secret 计算出的 HMAC-SHA384 十六进制签名。

签名的计算规则区分 GET 和 POST。对于 POST 请求,签名内容为nonce + 请求体字符串;对于 GET 请求,签名内容为nonce + 完整请求路径(例如/api/v2/auth/r/wallets)。下面是一个最小签名生成示例。

import hashlib import hmac def generate_signature(api_secret: str, nonce: str, sign_message: str) -> str: return hmac.new( api_secret.encode("utf-8"), sign_message.encode("utf-8"),

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询