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
+92 -92
View File
@@ -1,92 +1,92 @@
# 界面与风控更新说明OKX 实例
与 Gate / Binance 主站对齐的列表窗统计分品类交易记录展示复盘与移动保本交易所同步OKX 仍为 **三页导航**交易执行 / 记录复盘 / 统计),关键位监控合并在 **交易执行****无** Gate 独立「关键位监控」页与斐波限价监控
## 顶栏导航3 项
| 顺序 | 名称 | 路由 | 说明 |
|------|------|------|------|
| 1 | 交易执行 | `/trade` | 关键位监控 + 实盘下单**默认首页** `/``/trade` |
| 2 | 交易记录与复盘 | `/records` | 交易记录复盘表单AI 历史受顶栏 UTC 时间窗筛选 |
| 3 | 统计分析 | `/stats` | 按北京时间交易日切日 + 分品类统计块 |
## 列表时间窗UTC全站顶栏
共用模块仓库根目录 `history_window_lib.py`与 Gate / Binance 一致)。
| 项 | 说明 |
|----|------|
| 默认 | **UTC 当日**`win_preset=utc_today` |
| 可选 | 近 24 小时近 7 天自定义起止UTC |
| 作用范围 | 关键位历史交易记录列表复盘 APIAI 历史 API导出「交易记录」「关键位历史」 |
| 与统计 | **仅影响列表/导出**统计页仍按北京时间 `TRADING_DAY_RESET_HOUR`默认 8:00切日 |
| 切换 | 顶栏「列表筛选UTC」→ 应用保留当前路由 query |
## 交易记录与复盘
- 列表 **止损(开仓)**展示 `initial_stop_loss` 快照`display_open_stop_loss`)。
- 类型列显示 `monitor_type``key_signal_type`若有)。
- 平仓入库`stop_loss` / `initial_stop_loss` 为开仓止损快照机器单 `entry_reason` 可按 `key_signal_type` 自动映射箱体突破 / 收敛突破 → 四条固定关键位开仓类型文案)。
- 复盘开仓类型下拉含四条关键位固定文案 +「其他」离场触发含 **「止盈」**从交易记录填入时按结果与信号预填
- 复盘 K 线图**平仓时间** 为锚点向前约 `ORDER_CHART_LIMIT`默认 100)根(`_fetch_ohlcv_ending_at`)。
- `/api/journals``/api/reviews` 与顶栏 UTC 窗一致
### 导出交易记录 v3
- 文件名`trade_records_v3_YYYYMMDD.csv`
-`key_signal_type``initial_stop_loss`计划/实际 RR`risk_amount`末列「开仓类型」为有效展示文案
- 受 UTC 列表窗限制关键位历史导出同理
## 实盘下单交易执行页
- **移动保本**表单可勾选「启用移动保本」触发阶梯上移后 **先撤后挂** 交易所 TP/SL`replace_active_monitor_tpsl_on_exchange`),仅成功后才写库企业微信提示含「交易所已先撤后挂止盈止损」未配置实盘 API 时仅更新本地止损
- 开仓 TP/SL 仍通过 OKX `attachAlgoOrds`与原有逻辑一致);重挂使用 ccxt `stopLoss` / `takeProfit` 参数触发价经 `_okx_algo_trigger_price_str` 格式化
## 统计分析页`/stats`
| 项 | 说明 |
|----|------|
| 切日 | 北京时间边界 = `TRADING_DAY_RESET_HOUR:00`默认 8 |
| 品类下拉 | 全部交易下单监控关键位箱体突破关键位收敛结构关键位斐波0.618关键位斐波0.786 |
| URL | `stats_segment=``all` / `manual` / `key_box` / `key_conv` / `key_fib618` / `key_fib786` |
| 与 UTC 窗 | 统计 **不** 随顶栏列表窗变化 |
## 斐波关键位监控与 Gate / Binance 对齐
| 项 | 说明 |
|----|------|
| 类型 | **斐波回调0.618****斐波回调0.786**交易执行页关键位表单 |
| 同币互斥 | 每币仅一条斐波监控 |
| 挂单价 E | 做多 `E = H ratio×(HL)`做空 `E = L + ratio×(HL)`SL/TP 为 L/H |
| 添加后 | 立即在 OKX 挂限价单卡片显示 **挂E**限价单 ID |
| 失效 | 标记价触达止盈侧且限价未成交 → 仅撤本条限价单`cancel_fib_limit_order` |
| 成交后 | 挂交易所 TP/SL → 写入 `order_monitors``monitor_type=关键位监控``key_signal_type=斐波回调…`→ 从关键位表移除 |
| 轮询 | `check_fib_key_monitors()`与箱体/收敛 `check_key_monitors()` 分离 |
| 盈亏比 | 计划 RR 须 > `KEY_AUTO_MIN_PLANNED_RR`默认 1.5 |
| 日成交量 | 排名前 `KEY_DAILY_VOLUME_RANK_MAX`默认 30 |
计算逻辑见仓库根目录 `fib_key_monitor_lib.py`
## 与 Gate 的差异其余
- 无独立「关键位监控」导航页斐波在 **交易执行** 页添加)。
- 箱体/收敛与 Gate/Binance 相同**门控 + RR 达标后自动市价开仓**`LIVE_TRADING_ENABLED=true`)。
## 交易所已实现盈亏与 Gate 一致
- 打开 **交易执行 / 交易记录** 等主页面时若已配置 `OKX_API_KEY` / `OKX_API_SECRET` / `OKX_API_PASSPHRASE`只读即可),同进程约 **25 秒**内最多调用一次 OKX **历史仓位**`fetch_positions_history`),为未写入 `exchange_sync_key` 的记录匹配并回填 `exchange_realized_pnl`
- 复盘列表盈亏优先展示交易所 U旁标 **所**);本地公式估算标 **估**人工复核优先
- 手动强制同步`GET /api/sync_exchange_pnl`需登录)。
- 可选 `.env``EXCHANGE_POSITION_SYNC_FROM_BJ`北京时间起点)、`EXCHANGE_POSITION_HISTORY_LIMIT`默认 200)。
## 企业微信推送与 Gate 对齐
- 平仓`📉 … 平仓完成` 模板盈亏 ±X.XX U价位两位/按币价精度账户资金 2 位小数)。
- 开仓成功与 Gate 相同的 emoji 分段条件委托状态文案RR/张数/名义 2 位小数)。
- 移动保本仅首次触发推送交易所同步失败同一监控单只告警一次
- 斐波/关键位/划转等推送数值格式与 Gate 一致`format_wechat_scalar_2dp`)。
## 配置与部署
- 详见 `.env.example` 中 OKX`OKX_*`与通用风控项
- 代码更新后请 **重启 OKX 监控进程**旧库行不做批量回填展示字段有则用之无则回退
# 界面与风控更新说明(OKX 实例)
与 Gate / Binance 主站对齐的列表窗,统计分品类,交易记录展示,复盘与移动保本交易所同步;OKX 仍为 **三页导航**(交易执行 / 记录复盘 / 统计),关键位监控合并在 **交易执行**,**无** Gate 独立「关键位监控」页与斐波限价监控.
## 顶栏导航(3 项)
| 顺序 | 名称 | 路由 | 说明 |
|------|------|------|------|
| 1 | 交易执行 | `/trade` | 关键位监控 + 实盘下单(**默认首页** `/``/trade`) |
| 2 | 交易记录与复盘 | `/records` | 交易记录,复盘表单,AI 历史(受顶栏 UTC 时间窗筛选) |
| 3 | 统计分析 | `/stats` | 按北京时间交易日切日 + 分品类统计块 |
## 列表时间窗(UTC,全站顶栏)
共用模块:仓库根目录 `history_window_lib.py`(与 Gate / Binance 一致).
| 项 | 说明 |
|----|------|
| 默认 | **UTC 当日**(`win_preset=utc_today`) |
| 可选 | 近 24 小时,近 7 天,自定义起止(UTC) |
| 作用范围 | 关键位历史,交易记录列表,复盘 API,AI 历史 API,导出「交易记录」「关键位历史」 |
| 与统计 | **仅影响列表/导出**;统计页仍按北京时间 `TRADING_DAY_RESET_HOUR`(默认 8:00)切日 |
| 切换 | 顶栏「列表筛选(UTC)」→ 应用(保留当前路由 query) |
## 交易记录与复盘
- 列表 **止损(开仓)**:展示 `initial_stop_loss` 快照(`display_open_stop_loss`).
- 类型列显示 `monitor_type``key_signal_type`(若有).
- 平仓入库:`stop_loss` / `initial_stop_loss` 为开仓止损快照;机器单 `entry_reason` 可按 `key_signal_type` 自动映射(箱体突破 / 收敛突破 → 四条固定关键位开仓类型文案).
- 复盘:开仓类型下拉含四条关键位固定文案 +「其他」;离场触发含 **「止盈」**;从交易记录填入时按结果与信号预填.
- 复盘 K 线图:**平仓时间** 为锚点向前约 `ORDER_CHART_LIMIT`(默认 100)根(`_fetch_ohlcv_ending_at`).
- `/api/journals`,`/api/reviews` 与顶栏 UTC 窗一致.
### 导出(交易记录 v3)
- 文件名:`trade_records_v3_YYYYMMDD.csv`
-`key_signal_type`,`initial_stop_loss`,计划/实际 RR,`risk_amount`;末列「开仓类型」为有效展示文案.
- 受 UTC 列表窗限制;关键位历史导出同理.
## 实盘下单(交易执行页)
- **移动保本**:表单可勾选「启用移动保本」;触发阶梯上移后 **先撤后挂** 交易所 TP/SL(`replace_active_monitor_tpsl_on_exchange`),仅成功后才写库;企业微信提示含「交易所:已先撤后挂止盈止损」.未配置实盘 API 时仅更新本地止损.
- 开仓 TP/SL 仍通过 OKX `attachAlgoOrds`(与原有逻辑一致);重挂使用 ccxt `stopLoss` / `takeProfit` 参数,触发价经 `_okx_algo_trigger_price_str` 格式化.
## 统计分析页(`/stats`)
| 项 | 说明 |
|----|------|
| 切日 | 北京时间;边界 = `TRADING_DAY_RESET_HOUR:00`(默认 8) |
| 品类下拉 | 全部交易,下单监控,关键位箱体突破,关键位收敛结构,关键位斐波0.618,关键位斐波0.786 |
| URL | `stats_segment=`(`all` / `manual` / `key_box` / `key_conv` / `key_fib618` / `key_fib786`) |
| 与 UTC 窗 | 统计 **不** 随顶栏列表窗变化 |
## 斐波关键位监控(与 Gate / Binance 对齐)
| 项 | 说明 |
|----|------|
| 类型 | **斐波回调0.618**,**斐波回调0.786**(交易执行页关键位表单) |
| 同币互斥 | 每币仅一条斐波监控 |
| 挂单价 E | 做多 `E = H ratio×(HL)`;做空 `E = L + ratio×(HL)`;SL/TP 为 L/H |
| 添加后 | 立即在 OKX 挂限价单;卡片显示 **挂E**,限价单 ID |
| 失效 | 标记价触达止盈侧且限价未成交 → 仅撤本条限价单(`cancel_fib_limit_order`) |
| 成交后 | 挂交易所 TP/SL → 写入 `order_monitors`(`monitor_type=关键位监控`,`key_signal_type=斐波回调…`)→ 从关键位表移除 |
| 轮询 | `check_fib_key_monitors()`(与箱体/收敛 `check_key_monitors()` 分离) |
| 盈亏比 | 计划 RR 须 > `KEY_AUTO_MIN_PLANNED_RR`(默认 1.5) |
| 日成交量 | 排名前 `KEY_DAILY_VOLUME_RANK_MAX`(默认 30) |
计算逻辑见仓库根目录 `fib_key_monitor_lib.py`.
## 与 Gate 的差异(其余)
- 无独立「关键位监控」导航页(斐波在 **交易执行** 页添加).
- 箱体/收敛与 Gate/Binance 相同:**门控 + RR 达标后自动市价开仓**(`LIVE_TRADING_ENABLED=true`).
## 交易所已实现盈亏(与 Gate 一致)
- 打开 **交易执行 / 交易记录** 等主页面时,若已配置 `OKX_API_KEY` / `OKX_API_SECRET` / `OKX_API_PASSPHRASE`(只读即可),同进程约 **25 秒**内最多调用一次 OKX **历史仓位**(`fetch_positions_history`),为未写入 `exchange_sync_key` 的记录匹配并回填 `exchange_realized_pnl`.
- 复盘列表盈亏优先展示交易所 U(旁标 **所**);本地公式估算标 **估**;人工复核优先.
- 手动强制同步:`GET /api/sync_exchange_pnl`(需登录).
- 可选 `.env`:`EXCHANGE_POSITION_SYNC_FROM_BJ`(北京时间起点),`EXCHANGE_POSITION_HISTORY_LIMIT`(默认 200).
## 企业微信推送(与 Gate 对齐)
- 平仓:`📉 … 平仓完成` 模板(盈亏 ±X.XX U,价位两位/按币价精度,账户资金 2 位小数).
- 开仓成功:与 Gate 相同的 emoji 分段(条件委托状态文案,RR/张数/名义 2 位小数).
- 移动保本:仅首次触发推送;交易所同步失败同一监控单只告警一次.
- 斐波/关键位/划转等推送数值格式与 Gate 一致(`format_wechat_scalar_2dp`).
## 配置与部署
- 详见 `.env.example` 中 OKX(`OKX_*`)与通用风控项.
- 代码更新后请 **重启 OKX 监控进程**;旧库行不做批量回填,展示字段有则用之,无则回退.