Files
crypto_monitor/docs/env配置说明.md
T

232 lines
9.2 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.
# env 配置页说明
本文档描述各交易实例 Web 端 **「env 配置」** 页展示项,含义,生效方式,以及与系统设置,中控密钥的分工.
> **不在本页展示的配置**(服务端口,数据库路径,关键位门控,轮询间隔等)仍保存在实例目录 `.env` 中,需 SSH 编辑或部署脚本维护,见文末「隐藏项」.
---
## 1. 设计原则
| 原则 | 说明 |
|------|------|
| **只展示运营相关项** | 不暴露全量 `.env`,避免误改基础设施 |
| **前端仅中文** | 页面只显示中文标签与说明,不显示 `APP_XXX` 等变量名 |
| **账户密码不进本页** | 登录用户名/密码在 **系统设置 → 账户密码修改** 中维护 |
| **密钥自动托管** | 中控通信密钥,登录会话密钥由 **首次部署脚本自动生成并写入**(一次生成,不轮换),本页不提供编辑 |
| **交易所 API 不进本页** | `OKX/BINANCE/GATE_API_*` 仅在服务器实例目录 `.env` 配置;新机默认为空,填真钥后 `pm2 restart --update-env` |
| **AI 仅中控配置** | OpenAI / Ollama 等 AI 项已从中控 **系统设置 → AI 配置** 统一维护并同步三所,本页不再展示 |
| **保存标注** | 每项标注「保存即生效」或「需重启」;含需重启项时可用「保存并重启」 |
---
## 2. 密钥分工(自动生成,本页不可见)
部署时由脚本统一生成并写入对应 `.env`(已有值则跳过,避免覆盖生产环境).
| 类型 | 环境变量 | 写入位置 | 用途 |
|------|----------|----------|------|
| **中控通信密钥** | `HUB_BRIDGE_TOKEN` | 中控 `manual_trading_hub/.env` + 三实例 `.env`(**相同值**) | 中控调用实例 API(`X-Hub-Token`),iframe SSO 签发与校验 |
| **登录会话密钥** | `FLASK_SECRET_KEY` | 三实例 `.env`(**三所相同**) | Flask Session 签名;与网页登录态相关,与中控密钥 **分离** |
| **中控会话密钥** | `HUB_SESSION_SECRET` | 中控 `.env` | 中控登录 Cookie 签名 |
| **登录账号** | `APP_USERNAME` / `APP_PASSWORD` | 三实例 `.env`(建议三所统一) | 直链实例 `/login` 使用;**仅在系统设置中修改** |
| **中控登录** | `HUB_USERNAME` / `HUB_PASSWORD` | 中控 `.env` | 中控网页登录;**仅在中控系统设置改密** |
说明:
- **长期密钥一次生成,不轮换**:`setup_env.sh` 末尾调用 `scripts/bootstrap_deploy_secrets.py`;已有非占位值不会被覆盖.
- **SSO 链接不变**:仍为中控每次签发,默认 2 小时有效,单次使用(`HUB_SSO_TTL_SEC`),与长期 `HUB_BRIDGE_TOKEN` 分离.
- 经中控 iframe / SSO 打开实例时,可免输实例密码;直链 IP/域名仍走 `/login`.
- 首次部署可生成随机强密码;用户日后在 **系统设置** 改密,不经过本页.
---
## 3. 页面布局(三列卡片)
| 列 1 | 列 2 | 列 3 |
|------|------|------|
| 交易所与实盘 | 企业微信 | 交易执行 |
| 交易风控 | 账户冷静期 | 自动划转 |
| 当日资金 | 期权账户(仅 OKX) | |
> **AI 复盘**(OpenAI / Ollama)已移至中控 **系统设置 → AI 配置**,保存后强制同步三所 `.env`.详见 [中控AI与密钥配置.md](./中控AI与密钥配置.md).
Binance / Gate 无期权模块时,第三列最后一格不显示或显示「本所无期权」.
---
## 4. 各卡片字段(中文展示名)
### 4.1 交易所与实盘
| 中文名 | 说明 | 重启 |
|--------|------|------|
| 开启实盘下单 | 关闭时仅走本地流程,不向交易所发单 | 需重启 |
| 保证金模式 | 全仓 / 逐仓 | 需重启 |
| 持仓模式 | 双向 / 单向净持仓等(按所) | 需重启 |
| 仓位查询类型 | 仅 OKX:如 SWAP | 需重启 |
| 账户备注 | 企业微信推送中显示的交易所备注 | 保存即生效 |
| 显示永续资金 | 仅 OKX:关闭后顶栏隐藏 USDT 资金/交易账户,总资金仅计期权 USDC 侧 | 保存即生效 |
**交易所 API Key / Secret / Passphrase 不在本页**:请 SSH 编辑各所 `crypto_monitor_*/.env`,新机部署后应为空;配好真钥后重启对应 Flask 与子代理(`pm2 restart … --update-env`).占位符或错误密钥会导致鉴权失败,Gate 上反复请求还可能封 IP.
**本卡片不包含**:网页登录账号密码,是否关闭登录校验,中控通信密钥.
---
### 4.2 企业微信
| 中文名 | 说明 |
|--------|------|
| 机器人 Webhook | 行情,风控,提醒推送地址 |
| 推送超时(秒) | 可选,默认 10 |
---
### 4.3 AI 复盘(已移至中控)
AI 相关环境变量(`AI_PROVIDER`,`OPENAI_*`,`OLLAMA_*`,`AI_MODEL`,`AI_TIMEOUT_SECONDS`)**不再在本页展示**.
请在中控 **系统设置 → AI 配置** 修改;保存后写入中控 `.env`**强制同步** 至 OKX / Binance / Gate 三实例.详见 [中控AI与密钥配置.md](./中控AI与密钥配置.md).
---
### 4.4 交易执行
| 中文名 | 说明 |
|--------|------|
| 计仓模式 | 以损定仓 / 全仓杠杆 |
| 以损定仓风险% | 单笔风险占资金比例 |
| 全仓资金缓冲比例 | 全仓模式下可用资金折扣 |
| BTC 默认杠杆 | |
| 山寨默认杠杆 | |
| 方向限制开关 | |
| 允许方向 | 多 / 空 / 双向 |
| 币种白名单开关 | |
| 白名单币种 | 逗号分隔 |
| 交易日切点(北京时间) | 默认 8 点 |
| 切点前禁止新开仓 | |
| 最大同时持仓 | |
| 人工最低盈亏比 | |
| 强制清仓开关 | `FORCE_CLOSE_ENABLED`;开启后在指定北京整点小时内,市价平掉本地 active 监控仓 |
| 强制清仓整点(北京) | `FORCE_CLOSE_BJ_HOUR`(023);例 `8` 表示 08:00~08:59;仅扫监控仓,不含交易所裸仓 |
---
### 4.5 交易风控(日内开仓)
| 中文名 | 说明 |
|--------|------|
| 单日开仓提醒阈值 | 达到次数后 AI 克制提醒(不拦单) |
| 单日开仓硬上限 | 0 表示不启用;达到后禁止新开仓 |
详见 [daily-open-limit.md](./daily-open-limit.md).
---
### 4.6 账户冷静期
| 中文名 | 说明 |
|--------|------|
| 冷静期总开关 | |
| 手动平仓冷静(小时) | |
| 复盘情绪冷静(小时) | |
| 日手动平仓次数上限 | |
| 日亏损次数上限 | 默认2;达限当日冻结开仓;0=不启用 |
| 情绪标签日冻结 | |
详见 [account-risk-cooldown.md](./account-risk-cooldown.md).
---
### 4.7 自动划转
| 中文名 | 说明 |
|--------|------|
| 启用自动划转 | |
| 目标余额(U) | 交易账户目标 USDT |
| 划出账户 | funding / swap |
| 划入账户 | swap / funding |
| 执行整点(北京时间) | |
| 划转币种 | 默认 USDT |
详见 [auto-transfer-daily.md](./auto-transfer-daily.md).
---
### 4.8 当日资金
| 中文名 | 说明 |
|--------|------|
| 日起始基数(U) | |
| 回撤后基数(U) | |
| 盈利后基数(U) | |
与自动划转目标余额相互独立;若需一致请手动对齐.
---
### 4.9 期权账户(仅 OKX)
| 中文名 | 说明 |
|--------|------|
| 启用期权模块 | 与永续共用 `OKX_API_*`;不再单独配置期权密钥 |
| 期权账户备注 | |
| 单笔预算(USDC) | |
| 预算缓冲比例 | |
| 默认标的 | 如 ETH |
| 最大到期天数 | 等常用策略参数 |
高级参数与完整说明见 [期权方案.md](./期权方案.md),[期权用法.md](./期权用法.md),[期权开平仓与监控说明.md](./期权开平仓与监控说明.md)(线上 `/options/guide`).
---
## 5. 操作说明
1. 修改后点 **保存**:即时生效项立即应用;需重启项写入 `.env` 但未重启进程.
2. 含需重启项时点 **保存并重启**:写 `.env` 后 PM2 重启当前实例.
3. **重新加载**:从磁盘重新读取 `.env` 刷新表单(放弃未保存修改).
4. 敏感项(API,密钥)显示为掩码;**留空提交表示不修改原值**.
---
## 6. 隐藏项(本页不展示)
以下仍存在于 `.env`,仅供运维或 SSH 修改:
- 服务:`APP_HOST`,`APP_PORT`,`APP_DEBUG`
- 数据:`DB_PATH`,`UPLOAD_DIR`
- **交易所 API**:`OKX_API_*`,`BINANCE_API_*`,`GATE_API_*`(仅 SSH;新机应为空)
- 关键位门控:全部 `KEY_*`,`KLINE_*`
- 轮询与同步:`BALANCE_REFRESH_SECONDS`,`PRICE_REFRESH_SECONDS`,`MONITOR_POLL_SECONDS`,`BREAKEVEN_*`,`RECONCILE_*`
- 代理:`OKX_SOCKS_PROXY`,`BINANCE_HTTP_PROXY`
- 备份:`BACKUP_*`
- 中控嵌入细节:`APP_ALLOW_HUB_EMBED`,`HUB_EMBED_*`,`APP_COOKIE_SECURE`
- 登录相关:`APP_AUTH_DISABLED`,`APP_USERNAME`,`APP_PASSWORD`,`FLASK_SECRET_KEY`,`HUB_BRIDGE_TOKEN`
后续若需要可增加「高级模式」折叠区,默认关闭.
---
## 7. 与系统设置的关系
| 能力 | env 配置 | 系统设置 | 中控系统设置 |
|------|----------|----------|--------------|
| 登录用户名/密码 | ❌ | ✅ 账户密码修改 | ✅ 中控账户密码 |
| 交易所 API | ❌(仅服务器 `.env`) | ❌ | ❌ |
| AI / OpenAI | ❌ | ❌ | ✅ AI 配置(同步三所) |
| 导航/区块显示 | ❌ | ✅ 导航显示 | ✅ 显示与导航 |
| 手动资金划转 | ❌ | ✅ 永续资金划转 | ❌ |
| 数据导出 | ❌ | ✅ 数据导出 | ❌ |
| 期权兑换/划转 UI | ❌ | ✅(OKX,可开关) | ❌ |
系统设置说明见 [系统设置说明.md](./系统设置说明.md);中控 AI 与部署密钥见 [中控AI与密钥配置.md](./中控AI与密钥配置.md).
---
## 8. 实现备注(开发用)
- 白名单分组:`lib/env/env_ui_manifest.py`(按 `exchange_key` 过滤)
- 中文标签:`ENV_UI_LABELS` 映射,模板只渲染 `label` / `note`
- 全量校验仍基于 `.env.example`;POST 仅接受 manifest 内 key