Normalize fullwidth punctuation to ASCII across codebase.

Add scripts/normalize_ambiguous_unicode.py; fix corrupted patch_instance_theme_templates.py. Preserves curly quotes in string literals; removes Git homoglyph warnings on .env.example.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-08 23:42:26 +08:00
parent aaa72c7961
commit b733e551a0
392 changed files with 71522 additions and 71369 deletions
+78 -78
View File
@@ -1,133 +1,133 @@
# 策略交易说明
本文档说明仓库根目录 **共用策略逻辑** 与三个 `crypto_monitor_*` 实例中的 **策略交易** 入口顶栏「策略交易」页内子 Tab趋势回调 / 顺势加仓)。
本文档说明仓库根目录 **共用策略逻辑** 与三个 `crypto_monitor_*` 实例中的 **策略交易** 入口(顶栏「策略交易」,页内子 Tab:趋势回调 / 顺势加仓).
---
## 一架构精简共用
## 一,架构(精简共用)
```
strategy_trend_lib.py # 趋势回调网格价补仓拆分边界校验纯计算
strategy_roll_lib.py # 顺势加仓总风险反推斐波限价最多 3 腿纯计算
strategy_trend_lib.py # 趋势回调:网格价,补仓拆分,边界校验(纯计算)
strategy_roll_lib.py # 顺势加仓:总风险反推,斐波限价,最多 3 腿(纯计算)
strategy_db.py # roll_groups / roll_legs 表结构
strategy_config.py # 各所 app → 统一回调配置交易所 API
strategy_register.py # Flask POST/strategy/roll/preview/strategy/roll/execute
strategy_ui.py # 主站 index 页数据滚仓组持仓列表等
strategy_exchange_*.py # 适配器说明实际下单仍走各所 app 的 ccxt
strategy_templates/ # strategy_trading_page.html双栏)、trend/roll 面板records 页
strategy_snapshot_lib.py # 结束快照表 strategy_trade_snapshots最近 100 条
strategy_config.py # 各所 app → 统一回调配置(交易所 API)
strategy_register.py # Flask POST:/strategy/roll/preview,/strategy/roll/execute
strategy_ui.py # 主站 index 页数据(滚仓组,持仓列表等)
strategy_exchange_*.py # 适配器说明(实际下单仍走各所 app 的 ccxt)
strategy_templates/ # strategy_trading_page.html(双栏),trend/roll 面板,records 页
strategy_snapshot_lib.py # 结束快照表 strategy_trade_snapshots(最近 100 条)
strategy_records_register.py # /strategy/records 路由与列表数据
```
| 层级 | 职责 |
|------|------|
| **lib** | 不算 ccxt不写库 |
| **config** | 把 `place_exchange_order``replace_active_monitor_tpsl_on_exchange` 等接到统一 cfg |
| **各所 app** | `.env`DB`init_db`PM2微信监控轮询 |
| **lib** | 不算 ccxt,不写库 |
| **config** | 把 `place_exchange_order`,`replace_active_monitor_tpsl_on_exchange` 等接到统一 cfg |
| **各所 app** | `.env`,DB,`init_db`,PM2,微信,监控轮询 |
部署时各实例 `PYTHONPATH` 需包含仓库根目录`ecosystem.config.cjs``PYTHONPATH=..`)。
部署时各实例 `PYTHONPATH` 需包含仓库根目录(`ecosystem.config.cjs``PYTHONPATH=..`).
---
## 二导航与页面
## 二,导航与页面
顶栏**策略交易** → `/strategy`趋势回调 | 顺势加仓 左右并列);**策略交易记录** → `/strategy/records`已结束快照)。旧链接 `/strategy/trend``/strategy/roll` 会跳转到 `/strategy`
顶栏:**策略交易** → `/strategy`(趋势回调 | 顺势加仓 左右并列);**策略交易记录** → `/strategy/records`(已结束快照).旧链接 `/strategy/trend`,`/strategy/roll` 会跳转到 `/strategy`.
| 区域 | 说明 |
|------|------|
| 左栏 · 趋势回调 | **三所均可**预览执行自动补仓程序止盈);运行中计划卡含 **补仓计划明细** 表 |
| 右栏 · 顺势加仓 | 须已有同向持仓滚仓组/历史表在右栏内滚动 |
| **策略交易记录** | 趋势回调 / 顺势加仓 **分两栏**每条约一行摘要点击展开详情库内保留最近 **100** 条 |
| `/trade` | 实盘下单 | 首仓以损定仓移动保本不变 |
| 左栏 · 趋势回调 | **三所均可**(预览,执行,自动补仓,程序止盈);运行中计划卡含 **补仓计划明细** 表 |
| 右栏 · 顺势加仓 | 须已有同向持仓;滚仓组/历史表在右栏内滚动 |
| **策略交易记录** | 趋势回调 / 顺势加仓 **分两栏**;每条约一行摘要,点击展开详情;库内保留最近 **100** 条 |
| `/trade` | 实盘下单 | 首仓,以损定仓,移动保本(不变) |
各所 `app.py` 注册 `@app.route("/strategy/trend|roll")``render_main_page(...)``install_strategy_trading` 仅注册滚仓 POST API
各所 `app.py` 注册 `@app.route("/strategy/trend|roll")``render_main_page(...)`;`install_strategy_trading` 仅注册滚仓 POST API.
---
## 三趋势回调
## 三,趋势回调
- **位置**各所顶栏 **策略交易 → 趋势回调**共用 `strategy_trend_register.py` + 各所交易所 API)。
- **行为**与《[docs/trend-pullback-strategy.md](./docs/trend-pullback-strategy.md)》一致——预览 → 确认执行 → 首仓 50% + 交易所止损 + 多档 **自动** 市价补仓 + 程序监控止盈
- **共用代码**`parse_and_compute_trend_pullback_plan` 中网格/拆档已改为调用 `strategy_trend_lib`
- **互斥**与「机器人下单监控」持仓上限运行中趋势计划互斥逻辑未改)。
- **位置**:各所顶栏 **策略交易 → 趋势回调**(共用 `strategy_trend_register.py` + 各所交易所 API).
- **行为**:与《[docs/trend-pullback-strategy.md](./docs/trend-pullback-strategy.md)》一致——预览 → 确认执行 → 首仓 50% + 交易所止损 + 多档 **自动** 市价补仓 + 程序监控止盈.
- **共用代码**:`parse_and_compute_trend_pullback_plan` 中网格/拆档已改为调用 `strategy_trend_lib`.
- **互斥**:与「机器人下单监控」持仓上限,运行中趋势计划互斥(逻辑未改).
各所使用自己的 API 密钥与 `crypto.db`互不影响
各所使用自己的 API 密钥与 `crypto.db`,互不影响.
---
## 四顺势加仓滚仓仅人工
## 四,顺势加仓(滚仓,仅人工)
> **详细说明**计仓公式四种方式程序监控生命周期):仓库 [`顺势加仓滚仓说明.md`](./顺势加仓滚仓说明.md)各实例策略页 **[`/strategy/roll/docs`](/strategy/roll/docs)** 可在线阅读
> **详细说明**(计仓公式,四种方式,程序监控,生命周期):仓库 [`顺势加仓滚仓说明.md`](./顺势加仓滚仓说明.md);各实例策略页 **[`/strategy/roll/docs`](/strategy/roll/docs)** 可在线阅读.
### 4.1 原则
- **禁止自动加仓**仅页面按钮「执行滚仓」或挂限价单无价格穿越自动下单)。
- **全币种**与各所合约列表一致)。
- **止盈**全程使用 **首仓** `order_monitors.take_profit`滚仓不改止盈
- **止损**每次人工填写 **新统一止损**成交后调用各所 **先撤后挂** TP/SL止盈仍为首仓)。
- **总风险%**按「合并持仓 + 新止损」反推本次加仓张数使触及新止损时亏损约 **账户基数 × 风险%**默认 2%可在表单修改)。
- **做多**最多滚仓 **3**首仓不计入仅计 `roll_legs` 已成交次数);做空默认同样 3 次`strategy_roll_lib.ROLL_MAX_LEGS_SHORT`)。
- **禁止自动加仓**;仅页面按钮「执行滚仓」或挂限价单(无价格穿越自动下单).
- **全币种**(与各所合约列表一致).
- **止盈**:全程使用 **首仓** `order_monitors.take_profit`,滚仓不改止盈.
- **止损**:每次人工填写 **新统一止损**;成交后调用各所 **先撤后挂** TP/SL(止盈仍为首仓).
- **总风险%**:按「合并持仓 + 新止损」反推本次加仓张数,使触及新止损时亏损约 **账户基数 × 风险%**(默认 2%,可在表单修改).
- **做多**最多滚仓 **3**(首仓不计入,仅计 `roll_legs` 已成交次数);做空默认同样 3 次(`strategy_roll_lib.ROLL_MAX_LEGS_SHORT`).
### 4.2 斐波限价
- 填写 **上沿 H下沿 L**H > L),仅用于计算限价加仓价`fib_key_monitor_lib.calc_fib_plan`**entry** 一致)。
- **做多**下沿 = 结构止损侧**做空**上沿 = 结构止损侧
- 可选 **0.618****0.786**与关键位自动单的 TPH/L 对侧**不同**滚仓 TP 锁定首仓
- 填写 **上沿 H,下沿 L**(H > L),仅用于计算限价加仓价(`fib_key_monitor_lib.calc_fib_plan`**entry** 一致).
- **做多**:下沿 = 结构止损侧;**做空**:上沿 = 结构止损侧.
- 可选 **0.618****0.786**;与关键位自动单的 TP(H/L 对侧)**不同**,滚仓 TP 锁定首仓.
### 4.3 前置条件
1.**实盘下单** 已有同 symbol同方向 **active** `order_monitors`
2. 交易所有同向持仓`get_live_position_contracts`)。
3.**active** `trend_pullback_plans`与趋势回调互斥)。
1.**实盘下单** 已有同 symbol,同方向 **active** `order_monitors`.
2. 交易所有同向持仓(`get_live_position_contracts`).
3.**active** `trend_pullback_plans`(与趋势回调互斥).
### 4.4 数据表各所 `crypto.db`
### 4.4 数据表(各所 `crypto.db`)
- `roll_groups`绑定 `order_monitor_id`首仓 TP/SL当前 SL已滚仓次数
- `roll_legs`每腿方式市价 / 斐波0.618 / 斐波0.786)、张数新 SL状态`filled` / `pending`)。
- `roll_groups`:绑定 `order_monitor_id`,首仓 TP/SL,当前 SL,已滚仓次数.
- `roll_legs`:每腿方式(市价 / 斐波0.618 / 斐波0.786),张数,新 SL,状态(`filled` / `pending`).
`init_db()` 时自动 `CREATE TABLE IF NOT EXISTS``strategy_db.init_strategy_tables`)。
`init_db()` 时自动 `CREATE TABLE IF NOT EXISTS`(`strategy_db.init_strategy_tables`).
### 4.5 操作步骤
1. 打开顶栏 **策略交易** `/strategy`**右栏·顺势加仓** 操作
2. 选择持仓币种方向加仓方式填写 H/L斐波时)、**新统一止损**总风险%
3. 点击 **执行滚仓**市价立即加仓并更新止损限价则挂委托成交后需再处理止损——当前版本限价 pending 后提示手动同步)。
4. 查看页底 **滚仓腿历史**
1. 打开顶栏 **策略交易** `/strategy`,**右栏·顺势加仓** 操作.
2. 选择持仓币种,方向,加仓方式,填写 H/L(斐波时),**新统一止损**,总风险%.
3. 点击 **执行滚仓**(市价立即加仓并更新止损;限价则挂委托,成交后需再处理止损——当前版本限价 pending 后提示手动同步).
4. 查看页底 **滚仓腿历史**.
可选对表单字段 POST `/strategy/roll/preview`JSON查看 `strategy_roll_lib.preview_roll` 结果
可选:对表单字段 POST `/strategy/roll/preview`(JSON)查看 `strategy_roll_lib.preview_roll` 结果.
---
## 五策略交易记录三所统一
## 五,策略交易记录(三所统一)
- **入口**顶栏 **策略交易记录**`/strategy/records``strategy_records_register.register_strategy_records`)。
- **写入时机**趋势计划结束止盈 / 止损 / 手动结束)、**保本移交**顺势加仓组结案时写入表 **`strategy_trade_snapshots`**`strategy_snapshot_lib`)。
- **与交易记录区别**策略记录写 **`strategy_trade_snapshots`**顶栏 **交易记录与复盘****`trade_records`**中控手动结束计划时 **两者都应写入**详见 [docs/trend-hub-close-and-trade-records.md](./docs/trend-hub-close-and-trade-records.md))。
- **保留条数**每次写入后自动修剪仅保留按 **`closed_at` 倒序** 的最近 **100**
- **页面布局**
- **左栏卡片**趋势回调记录**右栏卡片**顺势加仓记录
- 每条默认 **一行简略**品种方向结果盈亏补仓进度结束时间);**点击行**展开均价/止损/止盈/补仓档位表或滚仓腿表
- **筛选**币种时间排序最新/最早)、芯片 **盈利 / 亏损 / 未补仓 / 补仓**前端过滤数据来自服务端 enrich 字段 `filter_pnl``dca_tag``dca_done`)。
- **共用模板**`strategy_templates/strategy_records_page.html`三所 `index.html` include)。
- **入口**:顶栏 **策略交易记录**`/strategy/records`(`strategy_records_register.register_strategy_records`).
- **写入时机**:趋势计划结束(止盈 / 止损 / 手动结束),**保本移交**,顺势加仓组结案时,写入表 **`strategy_trade_snapshots`**(`strategy_snapshot_lib`).
- **与交易记录区别**:策略记录写 **`strategy_trade_snapshots`**;顶栏 **交易记录与复盘****`trade_records`**.中控手动结束计划时 **两者都应写入**(详见 [docs/trend-hub-close-and-trade-records.md](./docs/trend-hub-close-and-trade-records.md)).
- **保留条数**:每次写入后自动修剪,仅保留按 **`closed_at` 倒序** 的最近 **100**.
- **页面布局**:
- **左栏卡片**:趋势回调记录;**右栏卡片**:顺势加仓记录.
- 每条默认 **一行简略**(品种,方向,结果,盈亏,补仓进度,结束时间);**点击行**展开均价/止损/止盈/补仓档位表或滚仓腿表.
- **筛选**:币种,时间排序(最新/最早),芯片 **盈利 / 亏损 / 未补仓 / 补仓**(前端过滤,数据来自服务端 enrich 字段 `filter_pnl`,`dca_tag`,`dca_done`).
- **共用模板**:`strategy_templates/strategy_records_page.html`(三所 `index.html` include).
---
## 六中控全屏 · 趋势回调展示
## 六,中控全屏 · 趋势回调展示
各所 Flask 经 `hub_bridge` + `enrich_trend_plan_for_hub` 向中控提供 active 计划`dca_levels`)。**manual_trading_hub** 全屏 **趋势回调**单所通常仅 **一仓**计划卡为 **横向两列**与实例字段一致操作在实例完成):
各所 Flask 经 `hub_bridge` + `enrich_trend_plan_for_hub` 向中控提供 active 计划(`dca_levels`).**manual_trading_hub** 全屏 **趋势回调**,单所通常仅 **一仓**,计划卡为 **横向两列**(与实例字段一致,操作在实例完成):
| 区域 | 内容 |
|------|------|
| 顶栏 | `#ID 品种`方向徽章**结束计划**SSO 打开实例并确认 |
| **左列** | 来源/风险/补仓边界/已补仓均价止损止盈盈亏比标记价浮盈亏% 按 **计划保证金** |
| **右列** | **补仓计划明细**首仓 + 各档未成交显示 **待补仓** |
| **底栏** | 保本移交偏移%跳转实例策略页)、**快照可用 / 计划保证金 / 杠杆** |
| 顶栏 | `#ID 品种`,方向徽章,**结束计划**(SSO 打开实例并确认) |
| **左列** | 来源/风险/补仓边界/已补仓;均价,止损,止盈,盈亏比,标记价,浮盈亏(% 按 **计划保证金**) |
| **右列** | **补仓计划明细**(首仓 + 各档;未成交显示 **待补仓**) |
| **底栏** | 保本移交(偏移%,跳转实例策略页),**快照可用 / 计划保证金 / 杠杆** |
静态资源版本见 `manual_trading_hub/static/index.html``app.js` / `app.css``?v=` 参数改 UI 后请 **强刷** 中控页
静态资源版本见 `manual_trading_hub/static/index.html``app.js` / `app.css``?v=` 参数;改 UI 后请 **强刷** 中控页.
---
## 七升级与重启
## 七,升级与重启
```bash
cd /opt/crypto_monitor
@@ -136,25 +136,25 @@ pm2 restart crypto-monitor-binance crypto-monitor-okx crypto-monitor-gate manual
pm2 save
```
部署约定**Ubuntu + root + /opt/crypto_monitor + PM2** → [docs/ubuntu-server.md](./docs/ubuntu-server.md)
部署约定:**Ubuntu + root + /opt/crypto_monitor + PM2** → [docs/ubuntu-server.md](./docs/ubuntu-server.md).
---
## 八相关文档
## 八,相关文档
| 文档 | 内容 |
|------|------|
| [docs/trend-pullback-strategy.md](./docs/trend-pullback-strategy.md) | 趋势回调细则三所共用逻辑 |
| [AI复盘与模型配置说明.md](./AI复盘与模型配置说明.md) | 复盘页 AI与策略无关 |
| [manual_trading_hub/使用说明.md](./manual_trading_hub/使用说明.md) | 中控监控全屏趋势卡两列布局 |
| [docs/trend-hub-close-and-trade-records.md](./docs/trend-hub-close-and-trade-records.md) | 中控平仓交易记录写入补仓展示统一漏记补录 |
| [docs/hub-symbol-archive-kline.md](./docs/hub-symbol-archive-kline.md) | 币种档案永久 5m K 线建档与 4h 增量同步 |
| [docs/trend-pullback-strategy.md](./docs/trend-pullback-strategy.md) | 趋势回调细则(三所共用逻辑) |
| [AI复盘与模型配置说明.md](./AI复盘与模型配置说明.md) | 复盘页 AI(与策略无关) |
| [manual_trading_hub/使用说明.md](./manual_trading_hub/使用说明.md) | 中控监控,全屏趋势卡两列布局 |
| [docs/trend-hub-close-and-trade-records.md](./docs/trend-hub-close-and-trade-records.md) | 中控平仓,交易记录写入,补仓展示统一,漏记补录 |
| [docs/hub-symbol-archive-kline.md](./docs/hub-symbol-archive-kline.md) | 币种档案,永久 5m K 线,建档与 4h 增量同步 |
| [docs/ubuntu-server.md](./docs/ubuntu-server.md) | Ubuntu / root /opt / PM2 部署 |
| [fib_key_monitor_lib.py](./fib_key_monitor_lib.py) | 斐波公式共用 |
---
## 九后续可增强未实现
## 九,后续可增强(未实现)
- 滚仓页内嵌预览按钮限价成交后一键同步止损
- 策略交易记录按 UTC 时间窗与顶栏「列表筛选」联动
- 滚仓页内嵌预览按钮,限价成交后一键同步止损.
- 策略交易记录按 UTC 时间窗与顶栏「列表筛选」联动.