# 币安 U本位合约 · 日成交额 Top30 监控 仓库:[Binance_Altcoin_Monitor](https://git.bz121.com/dekun/Binance_Altcoin_Monitor.git) 按 **北京时间 08:00** 切日,统计 U 本位永续合约成交额 Top30;每日 **08:10** 企业微信仅推送 **三日 Top30 交集** 币种(列表排版,非宽表格);Web 数据统计页可预览同款推送内容。 > **Linux 生产部署(/opt、Docker、PM2、虚拟环境、SOCKS5 代理)请参阅 [DEPLOY.md](./DEPLOY.md)** ## 功能 - 成交额排名 Top30(USDT 计价) - 高亮标记(不改变排名):成交额 ≥ 1000万 USDT、|涨跌幅| ≥ 5% - 昨日 / 前日周期:按 08:00 切日固化快照 - 今日周期:`[D 08:00, 当前)`,后台每 **4 小时**自动刷新 + 页脚 **手动刷新** - 日 K + 成交量迷你图,点击 **全屏**查看;K 线优先读服务端 SQLite,浏览器 `localStorage` 缓存约 1 小时 - 资金费率当前值 + 历史迷你曲线 - **数据统计**:连续三日均为成交额 Top30 的 **交集**(涨跌幅 **不限**) ## 环境要求 - Python 3.10+(**推荐项目内虚拟环境 `.venv`**,PM2 生产亦使用 `.venv`) - 可访问 `fapi.binance.com`(国内服务器可配 SOCKS5,见 [DEPLOY.md](./DEPLOY.md)) - 企业微信群机器人 Webhook(可选,用于 08:10 推送) ## 快速开始 ### Windows / 本机开发 ```powershell cd 币安排名 python -m venv .venv .\.venv\Scripts\Activate.ps1 pip install -U pip pip install -r backend/requirements.txt copy .env.example .env # 编辑 .env:WECOM_WEBHOOK_URL 等 python run.py ``` ### Linux 本机(与生产一致) ```bash cd /path/to/Binance_Altcoin_Monitor python3 -m venv .venv source .venv/bin/activate pip install -U pip pip install -r backend/requirements.txt cp .env.example .env nano .env .venv/bin/python run.py ``` 浏览器打开:http://127.0.0.1:21450 > **生产环境**请用 [DEPLOY.md](./DEPLOY.md) 中的 Docker 或 PM2 脚本;PM2 使用 `.venv/bin/python`,更新代码后执行 `.venv/bin/pip install -r backend/requirements.txt` 再重启。 ## 配置说明(.env) | 变量 | 说明 | 默认 | |------|------|------| | `WECOM_WEBHOOK_URL` | 企业微信机器人地址 | 空(不推送) | | `TOP_N` | 排名数量 | 30 | | `VOLUME_THRESHOLD` | 高亮成交额阈值 (USDT) | 10000000 | | `CHANGE_THRESHOLD` | 高亮涨跌幅阈值 (%) | 5 | | `REFRESH_MINUTES` | 今日自动刷新间隔(分钟);`240` = 每 4 小时 | 240 | | `HOST` / `PORT` | 服务监听 | 0.0.0.0:21450 | | `PROXY_ENABLED` | 是否启用 SOCKS5 代理 | false | | `PROXY_URL` | 代理地址 | socks5h://192.168.8.4:1081 | | `PROXY_FOR` | 代理范围 binance/wecom/all | binance | | `MAX_CONCURRENCY` | 币安 K 线并发数(过大易 418 封禁) | 3 | | `CANDIDATE_POOL` | 预筛候选合约数(按 24h 成交额) | 150 | | `CHART_KLINE_LIMIT` | 日 K 存储/展示根数 | 300 | | `CHART_CACHE_MINUTES` | 服务端日 K 视为新鲜的时间(分钟内不请求币安) | 60 | 完整示例见 [`.env.example`](./.env.example)。 ## API | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/today/top30` | 今日周期 Top30 | | GET | `/api/yesterday/top30` | 昨日周期 Top30 | | GET | `/api/daybefore/top30` | 前日周期 Top30 | | GET | `/api/stats/three-day` | 三日 Top30 交集统计 | | GET | `/api/chart/{symbol}/daily` | 日 K JSON(SQLite 优先) | | GET | `/api/funding/{symbol}/history` | 资金费率历史 | | GET | `/api/push/preview` | 预览企微推送(三日交集) | | POST | `/api/push/test` | 手动测试企业微信推送(仅交集币种) | | POST | `/api/refresh/today` | 立即刷新今日数据 | | POST | `/api/refresh/yesterday` | 重新计算昨日快照 | ## 定时任务 | 时间 (北京时间) | 任务 | |-----------------|------| | 08:00 | 固化昨日、前日周期快照到 SQLite | | 08:10 | 企业微信推送三日 Top30 交集(列表排版) | | 每 4 小时(整点 0/4/8/12/16/20) | 刷新今日周期(由 `REFRESH_MINUTES=240` 控制) | 进程重启后:若已过 08:10 且当日尚未推送成功,会自动补推。 ## Web 界面 | 页签 | 说明 | |------|------| | 今日 / 昨日 / 前日 | Top30 表、日 K、资金费率;支持排序与 CSV 导出 | | 数据统计 | 三日交集列表;可预览 / 测试企微推送 | 今日数据 **不会** 在浏览器里每 60 秒轮询;请依赖 4 小时后台任务或页脚 **「立即刷新今日」**。 ## 企业微信配置 1. 企业微信群 → 群设置 → 群机器人 → 添加 2. 复制 Webhook 地址到 `.env` 的 `WECOM_WEBHOOK_URL` 3. 启动后访问 `POST http://127.0.0.1:21450/api/push/test` 测试 ```bash curl -X POST http://127.0.0.1:21450/api/push/test ``` ## 数据说明 - 昨日 / 前日:按 08:00 切日,用 `1h` K 线聚合成交额 - 今日:默认 `TODAY_DATA_MODE=ticker24h`(单次 API,滚动 24h 口径) - 涨跌幅 = (周期末价 - 周期开盘价) / 开盘价 × 100% - 日 K:最多 300 根存 `daily_klines`;浏览器 `localStorage` 缓存周期表约 4 小时、K 线约 1 小时 ## 依赖说明 Python 包见 [`backend/requirements.txt`](./backend/requirements.txt)。PM2 使用 `.venv/bin/python`,依赖须装进 **`.venv`**,勿只装系统 Python。 ## 目录结构 ``` 币安排名/ ├── backend/app/ ├── backend/requirements.txt ├── web/ ├── data/monitor.db ├── .venv/ ├── deploy/ ├── run.py └── .env ```