Bitfinex借贷自动化实战:用Python在本地PC搭建7×24小时挂单机器人

发布时间:2026/8/28 17:09:21
Bitfinex借贷自动化实战:用Python在本地PC搭建7×24小时挂单机器人 手动在 Bitfinex 资金市场挂借贷 Offer偶尔操作一次并不麻烦但如果想长期参与每天盯着利率变动、发现自己挂的单被吃掉后又得重新挂就知道这不是一个适合人工重复的事情。这个项目标题提供了一个很务实的答案把借贷自动化脚本直接跑在你手边的 PC 上而不是为了一个定时任务去额外购买一台云服务器。本文会从 Bitfinex 的 P2P 借贷机制开始讲起解释为什么要自动化、为什么本地 PC 方案可行然后一步步带你写完一套可运行的 Python 借贷机器人最后给出常见报错排查、API 安全边界和工程化建议。如果你正在做加密资产量化、交易所 API 接入或者只是想让自己的闲置资金管理更高效这篇文章都值得收藏备用。1. Bitfinex 借贷自动化是什么为什么跑在 PC 上更合适1.1 什么是 Bitfinex 的 P2P 借贷FundingBitfinex 有一个独立的资金市场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 和类型注解在旧版本中的表现会有差异。requests2.28.0 python-dotenv1.0.02.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}获取指定币种的活跃借贷 OfferPOST/v2/auth/w/offer/new创建一笔新的借贷 OfferPOST/v2/auth/w/offer/cancel按 Offer ID 取消挂单GET/v2/ticker/fUSD公开行情可用来先验证网络连通性其中{symbol}表示资金市场的币种符号常见的是fUSD、fBTC、fETH等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),