[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-83888":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":13,"compositeScore":18,"rankGlobal":10,"rankLanguage":10,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":32,"readmeContent":33,"aiSummary":10,"trendingCount":15,"starSnapshotCount":15,"syncStatus":34,"lastSyncTime":35,"discoverSource":36},83888,"binance-deribit-btc","beijingcao\u002Fbinance-deribit-btc","beijingcao","Binance and Deribit BTC cross-exchange arbitrage bot with Redis state recovery, Telegram alerts, and a Flask monitoring dashboard.","https:\u002F\u002Fbtc.num.cc",null,"Python",233,83,65,0,13,168,5.77,"MIT License",false,"main",true,[24,25,26,27,28,29,30,31],"arbitrage","binance","btc","deribit","flask","redis","telegram","trading-bot","2026-06-12 02:04:36","# Binance-Deribit BTC 跨所套利自动化交易程序\n\n这是一个面向 Deribit 期权与 Binance USDT-M 永续合约的跨交易所套利\u002F对冲项目。项目包含套利扫描、下单执行、持仓监控、结算处理、Redis 状态恢复、Telegram 告警与 Web 监控面板。\n\n> 风险提示：本项目涉及交易所 API 和自动交易逻辑。请先使用测试网、小资金、只读或低权限 API Key 做充分验证。任何自动交易策略都可能因网络、交易所接口、行情波动、配置错误或代码缺陷造成亏损。\n\n实时交流平台：https:\u002F\u002Flinux.do\u002Ft\u002Ftopic\u002F2323516\n\n## 功能概览\n\n- 扫描 Deribit BTC 期权与 Binance 永续合约之间的潜在套利机会。\n- 使用 Redis 保存运行状态，支持进程重启后的状态恢复。\n- 使用 SQLite 记录交易、账户权益和浮亏峰值等运行数据。\n- 支持 Telegram 机器人查看状态、暂停、恢复、调整部分参数和接收告警。\n- 提供 Flask Web 监控面板查看持仓、日志、统计和账户权益。\n- 启动前执行 preflight 检查，确认 `.env`、API Key、Redis、交易所 REST、持仓和磁盘空间。\n- 默认配置为测试网，实盘前需要明确修改配置并重新检查风控参数。\n\n## 目录结构\n\n```text\n.\n├── binance_deribit.py        # 主程序入口\n├── binance-monitor.py        # Web 监控面板\n├── config.py                 # 策略、交易所、风控配置\n├── binance_futures.py        # Binance 期货接口\n├── deribit_client.py         # Deribit WebSocket\u002FREST 客户端\n├── trade_executor.py         # 下单执行逻辑\n├── telegram_handler.py       # Telegram 命令和告警\n├── db_store.py               # SQLite 持久化\n├── engine\u002F                   # 核心引擎 mixin 模块\n├── .env.example              # 环境变量模板\n├── requirements.txt          # Python 依赖\n├── pipinstall.txt            # 原始安装命令备忘\n└── README.md\n```\n\n## 部署环境要求\n\n推荐环境：\n\n- Python 3.10 或更高版本\n- Redis 6 或更高版本\n- macOS 或 Ubuntu Linux\n- 可访问 Deribit、Binance Futures、Telegram API 的网络环境\n\nPython 依赖：\n\n- `aiohttp`\n- `flask`\n- `orjson`\n- `redis`\n- `requests`\n- `websockets`\n\n## 快速部署\n\n### 1. 克隆代码\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fbeijingcao\u002Fbinance-deribit-btc.git\ncd binance-deribit-btc\n```\n\n### 2. 创建 Python 虚拟环境\n\nmacOS \u002F Linux：\n\n```bash\npython3 -m venv .venv\nsource .venv\u002Fbin\u002Factivate\npython -m pip install --upgrade pip\npip install -r requirements.txt\n```\n\n如果服务器同时安装了多个 Python 版本，请确认 `python --version` 指向你准备运行项目的版本。\n\n### 3. 安装并启动 Redis\n\nmacOS Homebrew：\n\n```bash\nbrew install redis\nbrew services start redis\nredis-cli ping\n```\n\nUbuntu \u002F Debian：\n\n```bash\nsudo apt update\nsudo apt install -y redis-server\nsudo systemctl enable redis-server\nsudo systemctl start redis-server\nredis-cli ping\n```\n\n如果返回 `PONG`，说明 Redis 已正常运行。\n\n### 4. 配置环境变量\n\n复制模板：\n\n```bash\ncp .env.example .env\n```\n\n编辑 `.env`：\n\n```bash\nnano .env\n```\n\n需要填写的字段：\n\n```bash\nTG_BOT_TOKEN=\nTG_CHAT_ID=\nTG_ALLOWED_USER_IDS=\n\nDERIBIT_BTC_CLIENT_ID=\nDERIBIT_BTC_CLIENT_SECRET=\n\nDERIBIT_ETH_CLIENT_ID=\nDERIBIT_ETH_CLIENT_SECRET=\n\nBINANCE_API_KEY=\nBINANCE_API_SECRET=\n```\n\n说明：\n\n- `TG_BOT_TOKEN`：Telegram Bot Token，用于告警和命令交互。\n- `TG_CHAT_ID`：允许机器人发送消息的 Telegram chat id。\n- `TG_ALLOWED_USER_IDS`：可选，限制可发送命令的 Telegram user id，多个用英文逗号分隔。\n- `DERIBIT_BTC_CLIENT_ID` \u002F `DERIBIT_BTC_CLIENT_SECRET`：Deribit BTC 账户 API 凭证。\n- `BINANCE_API_KEY` \u002F `BINANCE_API_SECRET`：Binance USDT-M Futures API 凭证。\n\n`.env` 已被 `.gitignore` 忽略，不能提交到 GitHub。\n\n### 5. 检查策略和环境配置\n\n打开 `config.py`，重点确认：\n\n```python\nBASE_CONFIG = {\n    \"target_currency\": \"BTC\",\n    \"test_trading\": True,\n}\n\nBINANCE_CONFIG = {\n    \"use_testnet\": True,\n    \"use_hedge_mode\": True,\n    \"leverage\": 20,\n    \"margin_type\": \"ISOLATED\",\n}\n```\n\n测试网运行时：\n\n- `BASE_CONFIG[\"test_trading\"] = True`\n- `BINANCE_CONFIG[\"use_testnet\"] = True`\n- 使用 Deribit 测试网和 Binance Futures 测试网 API Key\n\n实盘运行前：\n\n- 将 `BASE_CONFIG[\"test_trading\"]` 改为 `False`\n- 将 `BINANCE_CONFIG[\"use_testnet\"]` 改为 `False`\n- 重新确认 API Key 权限、杠杆、保证金模式、交易量、止损、利润门槛和风控参数\n\n## 启动主程序\n\n确保虚拟环境和 Redis 已启动：\n\n```bash\nsource .venv\u002Fbin\u002Factivate\nredis-cli ping\npython binance_deribit.py\n```\n\n程序启动时会执行 preflight 检查。关键检查失败时会拒绝启动，常见原因包括：\n\n- `.env` 文件不存在\n- Deribit 或 Binance API Key 未配置\n- Redis 未启动\n- 交易所 REST 接口不可访问\n- API Key 认证失败\n- 磁盘空间不足\n\n如果确认当前没有持仓，并且只想在关键检查失败时强制启动，可使用：\n\n```bash\npython binance_deribit.py --force-startup\n```\n\n注意：如果检测到交易所有持仓，`--force-startup` 也不会绕过关键保护。\n\n## 启动监控面板\n\n另开一个终端：\n\n```bash\nsource .venv\u002Fbin\u002Factivate\npython binance-monitor.py --host 127.0.0.1 --port 5556\n```\n\n浏览器访问：\n\n```text\nhttp:\u002F\u002F127.0.0.1:5556\n```\n\n默认登录信息：\n\n```text\n用户名：admin\n密码：123456\n```\n\n首次登录后请立即进入 `\u002Fchange_password` 修改默认密码。监控面板会在本地生成 `.monitor_auth.json`，该文件包含密码哈希和 session secret，已经被 `.gitignore` 忽略。\n\n如果需要让局域网或公网访问监控面板，可以把 `--host` 改成 `0.0.0.0`，但必须配合防火墙、反向代理、HTTPS 和强密码，不建议直接裸露到公网。\n\n## 后台运行建议\n\n### 使用 tmux\n\n```bash\ntmux new -s arb\nsource .venv\u002Fbin\u002Factivate\npython binance_deribit.py\n```\n\n按 `Ctrl+b` 后按 `d` 可以退出 tmux 会话但保持程序运行。\n\n重新进入：\n\n```bash\ntmux attach -t arb\n```\n\n监控面板可以使用另一个 tmux 会话：\n\n```bash\ntmux new -s arb-monitor\nsource .venv\u002Fbin\u002Factivate\npython binance-monitor.py --host 127.0.0.1 --port 5556\n```\n\n### 使用 systemd（Ubuntu）\n\n示例主程序服务：\n\n```ini\n[Unit]\nDescription=Binance Deribit Arbitrage Bot\nAfter=network-online.target redis-server.service\nWants=network-online.target\n\n[Service]\nType=simple\nWorkingDirectory=\u002Fopt\u002Fbinance-deribit-btc\nExecStart=\u002Fopt\u002Fbinance-deribit-btc\u002F.venv\u002Fbin\u002Fpython \u002Fopt\u002Fbinance-deribit-btc\u002Fbinance_deribit.py\nRestart=always\nRestartSec=5\nUser=ubuntu\nEnvironment=PYTHONUNBUFFERED=1\n\n[Install]\nWantedBy=multi-user.target\n```\n\n保存为：\n\n```bash\nsudo nano \u002Fetc\u002Fsystemd\u002Fsystem\u002Fbinance-deribit.service\n```\n\n启用并启动：\n\n```bash\nsudo systemctl daemon-reload\nsudo systemctl enable binance-deribit\nsudo systemctl start binance-deribit\nsudo systemctl status binance-deribit\n```\n\n查看日志：\n\n```bash\njournalctl -u binance-deribit -f\n```\n\n如果项目目录、用户或 Python 路径不同，请同步修改 `WorkingDirectory`、`ExecStart` 和 `User`。\n\n## 常用运维命令\n\n查看 Git 状态：\n\n```bash\ngit status\n```\n\n查看 Redis 状态：\n\n```bash\nredis-cli ping\nredis-cli -n 2 keys '*'\n```\n\n测试网 BTC 默认使用 Redis db 2。代码里的映射为：\n\n```text\nmainnet BTC  -> db 0\nmainnet ETH  -> db 1\ntestnet BTC  -> db 2\ntestnet ETH  -> db 3\n```\n\n查看主程序日志文件：\n\n```bash\ntail -f BTC-log.txt\n```\n\n查看监控面板：\n\n```bash\nopen http:\u002F\u002F127.0.0.1:5556\n```\n\nLinux 服务器可在本机访问：\n\n```bash\ncurl -I http:\u002F\u002F127.0.0.1:5556\n```\n\n## 更新代码\n\n```bash\ngit pull\nsource .venv\u002Fbin\u002Factivate\npip install -r requirements.txt\n```\n\n如果使用 systemd：\n\n```bash\nsudo systemctl restart binance-deribit\nsudo systemctl status binance-deribit\n```\n\n## 安全注意事项\n\n- 不要提交 `.env`、真实 API Key、账户截图、交易日志和数据库文件。\n- Binance API Key 建议限制 IP，并只开启需要的合约交易权限。\n- Deribit API Key 建议按环境区分测试网和实盘。\n- 实盘前先确认 `test_trading` 和 `use_testnet` 是否已经按预期切换。\n- 监控面板默认密码必须修改。\n- 不建议直接把监控面板暴露到公网。\n- 自动交易前请确认止损、交易量、杠杆、保证金模式和最大持仓数量。\n\n## 开源协议\n\n本项目使用 MIT License。详情请查看 [LICENSE](LICENSE)。\n",2,"2026-06-11 04:11:46","CREATED_QUERY"]