Files
Binance_Altcoin_Monitor/README.md
T
2026-05-26 10:20:45 +08:00

145 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 币安 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)**
## 功能
- 成交额排名 Top30USDT 计价)
- 高亮标记(不改变排名):成交额 ≥ 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
# 编辑 .envWECOM_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 JSONSQLite 优先) |
| 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
```