文档:补充中控行情区 K 线说明与索引

- 新增 manual_trading_hub/行情区说明.md

- 更新使用说明、README、部署文档、常见问题与仓库根 README

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-06-02 15:42:47 +08:00
parent d455fc408e
commit 724b4a3dd8
7 changed files with 199 additions and 21 deletions
+37 -12
View File
@@ -1,6 +1,6 @@
# 多账户交易中控 — 使用说明
本文档说明 **manual_trading_hub** 的架构、启动方式、界面操作与故障排查。中控聚合四所 **持仓/条件单/余额/关键位/趋势计划监控 + 撤单/紧急全平**;**人工下单、关键位、策略交易(趋势回调 / 顺势加仓)、交易复盘** 均在各实例网页操作(点监控卡片 **「实例」**)。
本文档说明 **manual_trading_hub** 的架构、启动方式、界面操作与故障排查。中控聚合四所 **持仓/条件单/余额/关键位/趋势计划监控 + 撤单/紧急全平**,并提供 **行情区 K 线**;**人工下单、关键位、策略交易(趋势回调 / 顺势加仓)、交易复盘** 均在各实例网页操作(点监控卡片 **「实例」**)。行情区细则见 **[行情区说明.md](./行情区说明.md)**。
---
@@ -9,6 +9,7 @@
```
浏览器
├─ /monitor 监控区(持仓、关键位、趋势计划、全平)
├─ /market 行情区(K 线、技术指标、持仓价格线)
└─ /settings 系统设置(hub_settings.json
中控 hub.py(默认 :5100
@@ -157,6 +158,7 @@ python hub.py
浏览器打开:
- 监控区:http://127.0.0.1:5100/monitor
- 行情区:http://127.0.0.1:5100/market
- 系统设置:http://127.0.0.1:5100/settings
- 登录页:http://127.0.0.1:5100/login(已设 `HUB_PASSWORD` 时)
- 旧链接 `/trade` 会自动跳转到 `/monitor`
@@ -194,7 +196,21 @@ curl -s http://127.0.0.1:5100/api/ping
持仓数据以 **子代理 ccxt** 为准;关键位/趋势/机器人单以 **Flask 数据库** 为准。若 Flask 未启动,卡片仍会显示 agent 持仓,但下方策略信息可能为空或报错。
### 4.2 系统设置 `/settings`
### 4.2 行情区 `/market`
| 功能 | 说明 |
|------|------|
| **K 线** | 选择已启用交易所 + 币种 + 周期;按需拉取,本地 `data/hub_kline.db` 缓存(默认保留 15 天) |
| **周期** | `1m` `5m` `15m` `1h` `2h` `4h` `12h` `1d` `1w` |
| **加载 / 强制刷新** | 普通加载优先缓存;强制刷新重拉并覆盖缓存 |
| **从监控跳转** | 点击持仓合约名带入品种,并显示入场/止损/止盈/委托与 K 线价格线 |
| **技术指标** | 可选 EMA 21/55、MACD、RSI |
| **快捷键** | **`F`** 全屏/退出;全屏时 **`Esc`** 退出;数字键切换周期(见 [行情区说明.md](./行情区说明.md) |
| **自动刷新** | 约 5 秒更新最新 OHLCV |
数据经中控 → 各实例 `GET /api/hub/ohlcv``hub_ohlcv_lib`)。升级 hub 与四实例 Flask 后请 **强刷浏览器**;异常 K 线可点 **强制刷新**
### 4.3 系统设置 `/settings`
**可用**:打开 http://127.0.0.1:5100/settings ,修改表格后点 **保存设置** 即写入 `hub_settings.json`;**重新加载** 从磁盘/默认再读(会重新套用 `HUB_DISABLED_IDS`)。保存后监控区立即使用新 URL/启用状态,**无需重启 hub**。
@@ -212,7 +228,7 @@ curl -s http://127.0.0.1:5100/api/ping
| id | 与 `HUB_DISABLED_IDS`、全平 API 路径中的 id 对应;新增户勿与已有 id 重复 |
- **保存设置**:写入 `hub_settings.json`,重启 hub 后仍生效。
- **添加交易所**:见下文 §4.3(须先自建 Flask + agent,再在中控登记)。
- **添加交易所**:见下文 §4.4(须先自建 Flask + agent,再在中控登记)。
- **删**:从列表移除(保存后生效)。
#### 能力与「策略交易」的关系(重要)
@@ -227,11 +243,11 @@ curl -s http://127.0.0.1:5100/api/ping
---
### 4.3 增加账户(例如再挂一个 Gate
### 4.4 增加账户(例如再挂一个 Gate
中控 **不会** 自动启动进程,也 **不** 保存交易所 API Key。新增一户 = **复制/新建一套实例目录 + 独立 `.env` + 新端口 Flask/agent + 在中控登记一行**
#### 4.3.1 端口勿冲突(示例)
#### 4.4.1 端口勿冲突(示例)
| 用途 | 目录(示例) | Flask `APP_PORT` | Agent `PORT` |
|------|----------------|------------------|--------------|
@@ -241,7 +257,7 @@ curl -s http://127.0.0.1:5100/api/ping
`agent``PORT` 与 Flask 的 `APP_PORT` **必须不同**;且不要与币安 5001、OKX 5004、中控 5100 等占用端口相同。
#### 4.3.2 新建实例目录
#### 4.4.2 新建实例目录
1. 复制整个 `crypto_monitor_gate` 到新目录(仓库内副本或 `/opt/` 下均可)。
2. 在新目录:`cp .env.example .env`,至少修改:
@@ -268,7 +284,7 @@ python ..\manual_trading_hub\agent.py
验收:`curl http://127.0.0.1:5005/login` 能开页;`curl http://127.0.0.1:15204/status` 返回 `ok`
#### 4.3.3 在中控登记
#### 4.4.3 在中控登记
1. 打开 **系统设置****添加交易所**(或手改 `manual_trading_hub/hub_settings.json`)。
2. 填写 **Flask URL**、**Agent URL**、**id**(如 `4`)、**显示名**。
@@ -313,6 +329,8 @@ PM2:仓库 `ecosystem.config.cjs` 默认只有四 agent;第五户需自行 `
| POST | `/api/auth/login` | body `{"username":"...","password":"..."}` |
| POST | `/api/auth/logout` | 退出 |
| GET | `/api/ping` | 版本与健康检查(**免登录**) |
| GET | `/api/chart/meta` | 行情区:交易所、周期、limit |
| GET | `/api/chart/ohlcv` | 行情区 K 线(`exchange_key``symbol``timeframe`、可选 `refresh=1` |
已移除的 `/api/trade/*` 若被旧缓存页面请求,返回 **410** 并提示前往各实例网页。
@@ -322,6 +340,7 @@ PM2:仓库 `ecosystem.config.cjs` 默认只有四 agent;第五户需自行 `
|------|------|
| `/api/hub/ping` | 连通与能力 |
| `/api/hub/monitor` | 关键位、机器人单、趋势计划 |
| `/api/hub/ohlcv` | 行情区 OHLCV(ccxt 拉取,供中控聚合缓存) |
---
@@ -341,6 +360,8 @@ PM2:仓库 `ecosystem.config.cjs` 默认只有四 agent;第五户需自行 `
| `HUB_SESSION_SECRET` | 用户名+密码 | 会话 Cookie 签名密钥 |
| `HUB_COOKIE_SECURE` | `false` | HTTPS 反代建议 `true`(仅 HTTPS 发 Secure CookieHTTP 内网 IP 仍可登) |
| `HUB_SESSION_DAYS` | `7` | 登录保持天数 |
| `HUB_KLINE_RETENTION_DAYS` | `15` | 行情区 K 线库保留天数 |
| `HUB_KLINE_DB_PATH` | `data/hub_kline.db` | K 线 SQLite 路径 |
### 子代理 agent.py
@@ -384,6 +405,8 @@ PM2:仓库 `ecosystem.config.cjs` 默认只有四 agent;第五户需自行 `
| 域名能登、IP:5100 不能 | Secure Cookie + HTTP | 见常见问题 §2.1;或分别登录 |
| 添加关键位报错 / SyntaxError | 旧前端或旧 hub 代码 | 强刷浏览器;`git pull` + `verify_hub_deploy.sh` |
| `curl /api/ping` 非 JSON | hub 未启动 | `pm2 restart manual-trading-hub` |
| K 线只有约 300 根 | 旧版未分页 | `git pull` 四实例 + hub,强制刷新 |
| 12h 周期异常 | 无原生 12h 或旧缓存 | 强制刷新;见 [行情区说明.md](./行情区说明.md) |
**运维脚本**(在 `manual_trading_hub` 目录执行):
@@ -407,7 +430,7 @@ Invoke-WebRequest -Uri "http://127.0.0.1:5001/api/hub/ping" -Headers @{"X-Hub-To
早期中控 **仅监控 + 全平**,使用环境变量 `HUB_AGENTS` 列表。当前版本改为:
- **hub_settings.json**(或内置默认)管理四所 URL 与能力;
- **页 UI**:监控 / 设置;
- **页 UI**:监控 / 行情 / 设置;
- 通过 **hub_bridge** 只读聚合监控数据。
子代理 `agent.py` 仍负责持仓与全平;`HUB_AGENTS` 环境变量在新版 hub 中 **不再使用**(以设置文件为准)。
@@ -434,11 +457,12 @@ pm2 save && pm2 startup
1. 启动四所 **agent** + **Flask**OKX 按需)。
2. 启动 **hub.py**,打开监控区确认持仓与关键位门控正常。
3. 开仓、关键位、趋势 → 点击监控卡片「实例」进入对应 Flask
4. 复盘、导出记录 → 点击「复盘」进入 `/records`
5. 异常行情 → 单户全平或全局紧急全平
3. 看 K 线 → **行情区** 或监控区点击合约名跳转;异常图表点 **强制刷新**
4. 开仓、关键位、趋势 → 点击监控卡片「实例」进入对应 Flask
5. 复盘、导出记录 → 点击「复盘」进入 `/records`
6. 异常行情 → 单户全平或全局紧急全平。
增加账户步骤见 **§4.3**;无需改 `hub.py` 源码,但须该户 Flask 已 `git pull`**重启**`hub_bridge` + `has_trend`),且 agent 已部署。
增加账户步骤见 **§4.4**;无需改 `hub.py` 源码,但须该户 Flask 已 `git pull`**重启**`hub_bridge` + `has_trend` + `ohlcv`),且 agent 已部署。
---
@@ -447,6 +471,7 @@ pm2 save && pm2 startup
| 文档 | 内容 |
|------|------|
| [使用说明.md](./使用说明.md) | 本文 |
| [行情区说明.md](./行情区说明.md) | K 线周期、缓存、快捷键、API |
| [部署文档.md](./部署文档.md) | Ubuntu / PM2 / 反代 |
| [常见问题.md](./常见问题.md) | 故障实录与排障 |
| [README.md](./README.md) | 速览 |