# 复盘系统中控(manual_trading_hub)

> **完整说明**:[使用说明.md](./使用说明.md) · **资金概况**:[资金概况说明.md](./资金概况说明.md) · **数据看板**:[数据看板说明.md](./数据看板说明.md) · **AI 教练**:[AI教练说明.md](./AI教练说明.md) · **行情区**:[行情区说明.md](./行情区说明.md) · **部署**:[部署文档.md](./部署文档.md) · **云服务器**:[云服务器部署说明.md](./云服务器部署说明.md) · **本地→云端迁移**:[本地数据迁移到云端.md](./本地数据迁移到云端.md) · **局域网/反代**:[局域网与反代部署说明.md](./局域网与反代部署说明.md) · **故障**:[常见问题.md](./常见问题.md)

多账户 **监控聚合 + 紧急全平**;**不在中控网页下单**.人工下单,关键位,**策略交易**(`/strategy`),复盘请在各 `crypto_monitor_*` 实例网页操作(监控卡片 **「实例」** / **「复盘」**).**增加子账户**见 [使用说明 §4.3](./使用说明.md#43-增加账户例如再挂一个-gate).

---

## 当前能力

| 能力 | 说明 |
|------|------|
| 监控区 | 持仓,余额,关键位摘要,趋势计划,机器人单(只读) |
| 资金概况 | 总/分户资金(资金户+交易户),180 日曲线,最大回撤 |
| **数据看板** | 三户当日总览/分户/平仓明细,SSE 推送(`/dashboard`;见 [数据看板说明.md](./数据看板说明.md)) |
| 行情区 | K 线(多周期,本地缓存,技术指标,从监控跳转持仓线) |
| **AI 教练** | 交易教练 + 普通聊天,会话历史(`/ai`;见 [AI教练说明.md](./AI教练说明.md)) |
| 紧急全平 | 单户 / 全局市价减仓 |
| 系统设置 | `hub_settings.json` 管理 URL,启用,**监控关键位 / 监控趋势计划**(不控制策略交易页) |
| Web 登录 | `.env` 设 `HUB_PASSWORD` 后用户名+密码保护(反代公网**务必**配置) |
| ~~下单区~~ | **已移除**(避免与实例重复,减少故障面) |

---

## 架构

```
浏览器 → hub.py (:5100)  监控 / 资金概况 / **数据看板** / 行情 / **AI 教练** / 设置 / 登录
            ├→ agent.py × N (:15200～15202)  持仓,全平
            └→ 各 Flask (:5000/5001/5004)  /api/hub/monitor 只读聚合
```

- 账户列表:**系统设置** 或默认 `settings_store.py`(不再使用环境变量 `HUB_AGENTS`).
- 三实例须注册 **hub_bridge**(仓库根 `hub_bridge.py`);PM2 建议 `PYTHONPATH=..`.

---

## 快速启动(Linux / PM2)

```bash
cd /opt/crypto_monitor/manual_trading_hub
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# 编辑 .env:HUB_PASSWORD,HUB_BRIDGE_TOKEN,HUB_PUBLIC_ORIGIN 等

pm2 start ecosystem.config.cjs   # 3 agent + hub
pm2 save

bash scripts/verify_hub_deploy.sh
curl -s http://127.0.0.1:5100/api/ping
```

浏览器:`http://<本机IP>:5100/monitor`(行情 `/market`;已设密码则先 `/login`).

---

## 中控 `.env` 要点

| 变量 | 说明 |
|------|------|
| `HUB_PASSWORD` / `HUB_USERNAME` | 非空密码即启用登录 |
| `HUB_BRIDGE_TOKEN` | 与三实例一致 |
| `HUB_DISABLED_IDS` | 默认 `1` 关闭 OKX |
| `HUB_PUBLIC_ORIGIN` | 其它设备打开复盘/实例外链(替换 127.0.0.1) |
| `HUB_COOKIE_SECURE` | HTTPS 反代建议 `true` |

详见 [.env.example](./.env.example).

---

## 子代理(agent)

每所策略目录单独进程,`EXCHANGE` + `PORT`(15200～15202),密钥来自**该目录 `.env`**.PM2 经 `scripts/run_agent.sh` 启动(自动 `source .env`,去 CRLF).

| PORT | 目录 |
|------|------|
| 15200 | crypto_monitor_binance |
| 15201 | crypto_monitor_okx |
| 15202 | crypto_monitor_gate |

---

## 运维脚本

| 脚本 | 作用 |
|------|------|
| [scripts/fix_hub_deps.sh](./scripts/fix_hub_deps.sh) | 安装/更新 venv 依赖 |
| [scripts/verify_hub_deploy.sh](./scripts/verify_hub_deploy.sh) | 验收代码版本与 ping |
| [scripts/fix_env_crlf.sh](./scripts/fix_env_crlf.sh) | 修复 .env 的 Windows 换行 |
| [scripts/pm2_hub.sh](./scripts/pm2_hub.sh) | PM2 启停 hub+agent |
| [scripts/后台运行-Ubuntu.md](./scripts/后台运行-Ubuntu.md) | PM2 常驻 |
| [docs/ubuntu-server.md](../docs/ubuntu-server.md) | Ubuntu / Python / Node / PM2 |

---

## 文档索引

| 文档 | 内容 |
|------|------|
| [使用说明.md](./使用说明.md) | 页面,API,环境变量,日常流程 |
| [行情区说明.md](./行情区说明.md) | K 线周期,缓存,快捷键,拉取逻辑 |
| [部署文档.md](./部署文档.md) | Ubuntu,PM2,反代,升级 |
| [常见问题.md](./常见问题.md) | 已遇到问题与处理 |
| [.env.example](./.env.example) | 环境变量模板 |
