# 币安 U本位合约 · 日成交额 Top30 监控 仓库:[Binance_Altcoin_Monitor](https://git.bz121.com/dekun/Binance_Altcoin_Monitor.git) 按 **北京时间 08:00** 切日,统计 U 本位永续合约成交额 Top30;每日 **08:10** 通过企业微信推送昨日完整周期数据;Web 展示昨日快照与今日实时累计。 > **Linux 生产部署(/opt、Docker、PM2、SOCKS5 代理)请参阅 [DEPLOY.md](./DEPLOY.md)** ## 功能 - 成交额排名 Top30(USDT 计价) - 高亮标记(不改变排名):成交额 ≥ 1000万 USDT、|涨跌幅| ≥ 5% - 昨日周期:`[D-1 08:00, D 08:00)` - 今日周期:`[D 08:00, 当前)`,每 5 分钟后台刷新,Web 每 60 秒拉取 ## 环境要求 - Python 3.10+ - 可访问 `fapi.binance.com` - 企业微信群机器人 Webhook(可选,用于推送) ## 快速开始 ```bash # 1. 进入项目目录 cd 币安排名 # 2. 安装依赖 pip install -r backend/requirements.txt # 3. 配置环境变量 copy .env.example .env # 编辑 .env,填入 WECOM_WEBHOOK_URL # 4. 启动服务(需保持进程常驻) python run.py ``` 浏览器打开:http://127.0.0.1:21450 ## 配置说明(.env) | 变量 | 说明 | 默认 | |------|------|------| | `WECOM_WEBHOOK_URL` | 企业微信机器人地址 | 空(不推送) | | `TOP_N` | 排名数量 | 30 | | `VOLUME_THRESHOLD` | 高亮成交额阈值 (USDT) | 10000000 | | `CHANGE_THRESHOLD` | 高亮涨跌幅阈值 (%) | 5 | | `REFRESH_MINUTES` | 今日数据刷新间隔 | 5 | | `HOST` / `PORT` | 服务监听 | 127.0.0.1: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 | ## API | 方法 | 路径 | 说明 | |------|------|------| | GET | `/api/yesterday/top30` | 昨日周期 Top30 | | GET | `/api/today/top30` | 今日周期 Top30(缓存) | | POST | `/api/push/test` | 手动测试企业微信推送 | | POST | `/api/refresh/today` | 立即刷新今日数据 | | POST | `/api/refresh/yesterday` | 重新计算昨日快照 | ## 定时任务 | 时间 (北京时间) | 任务 | |-----------------|------| | 08:00 | 固化昨日周期数据到 SQLite | | 08:10 | 企业微信推送昨日 Top30 | | 每 N 分钟 | 刷新今日周期(N = REFRESH_MINUTES) | 进程重启后:若已过 08:10 且当日尚未推送成功,会自动补推一次。 ## Windows 常驻运行 1. **任务计划程序**:触发器「登录时」或「计算机启动时」,操作运行 `pythonw.exe` 完整路径的 `run.py`,起始于项目目录。 2. 或使用云服务器 / VPS 用 `nssm`、pm2 等托管。 ## 企业微信配置 1. 企业微信群 → 群设置 → 群机器人 → 添加 2. 复制 Webhook 地址到 `.env` 的 `WECOM_WEBHOOK_URL` 3. 启动后访问 `POST http://127.0.0.1:21450/api/push/test` 测试(可用 Postman 或 curl) ```bash curl -X POST http://127.0.0.1:21450/api/push/test ``` ## 数据说明 - 使用币安合约 `1h` K 线按时间戳聚合 USDT 成交额(第 7 字段) - 涨跌幅 = (周期末价 - 周期开盘价) / 开盘价 × 100% - 今日末价优先使用实时 ticker 价格 ## 目录结构 ``` 币安排名/ ├── backend/app/ # 后端逻辑 ├── web/ # 前端静态页 ├── data/ # SQLite(自动创建) ├── run.py # 启动入口 └── .env # 本地配置(勿提交) ```