From 32b66fc343eaee43465e02369ee57139c8dcdaaa Mon Sep 17 00:00:00 2001 From: dekun Date: Sun, 7 Jun 2026 20:39:46 +0800 Subject: [PATCH] docs(trend): add hub close and trade records review guide Document manual hub close flow, trade_records vs strategy snapshots, DCA display rules, backfill script, and deployment checklist. Co-authored-by: Cursor --- crypto_monitor_gate_bot/趋势回调策略说明.md | 2 + docs/trend-hub-close-and-trade-records.md | 183 ++++++++++++++++++++ 策略交易说明.md | 2 + 3 files changed, 187 insertions(+) create mode 100644 docs/trend-hub-close-and-trade-records.md diff --git a/crypto_monitor_gate_bot/趋势回调策略说明.md b/crypto_monitor_gate_bot/趋势回调策略说明.md index 9f4f07b..0c3d407 100644 --- a/crypto_monitor_gate_bot/趋势回调策略说明.md +++ b/crypto_monitor_gate_bot/趋势回调策略说明.md @@ -4,6 +4,8 @@ **四所主站**(Binance / Gate / OKX / 本目录 `crypto_monitor_gate_bot`)均在顶栏 **策略交易 → `/strategy`** 左栏提供同一套逻辑(共用 `strategy_trend_register.py`);本目录侧重 **Gate 子账户 / 机器人** 实例,可与主 Gate 账户隔离部署。 +**检阅备忘**(中控平仓、交易记录、补仓展示、漏记补录):[docs/trend-hub-close-and-trade-records.md](../docs/trend-hub-close-and-trade-records.md) + --- ## 1. 适用场景 diff --git a/docs/trend-hub-close-and-trade-records.md b/docs/trend-hub-close-and-trade-records.md new file mode 100644 index 0000000..000a1cc --- /dev/null +++ b/docs/trend-hub-close-and-trade-records.md @@ -0,0 +1,183 @@ +# 趋势回调:中控平仓与交易记录(检阅备忘) + +本文档汇总 **中控手动结束趋势计划**、**交易记录 / 策略记录** 写入规则,以及 **四所展示统一**、**补仓表计价** 相关修复,便于自行检阅与排错。 + +适用仓库:`crypto_monitor`(Binance / OKX / Gate / Gate Bot + `manual_trading_hub`)。 + +--- + +## 1. 中控手动平仓会不会写交易记录? + +**会。** 在实例已部署 **`80226ee` 及之后** 代码并 **重启对应 Flask** 的前提下: + +中控点击 **「结束计划」** → 实例执行市价平仓 + 结束计划 → **同时写入**: + +| 目标 | 表 | 页面入口 | +|------|-----|----------| +| 策略记录 | `strategy_trade_snapshots` | 顶栏 **策略交易记录** → 左栏「趋势回调记录」 | +| 交易记录 | `trade_records` | 顶栏 **交易记录与复盘** | + +手动结束的结果字段为 **「手动平仓」**(亏损时也不会被改成「止损」)。 + +--- + +## 2. 调用链(四所统一) + +``` +manual_trading_hub + POST /api/trend/{exchange_id}/stop + → 实例 POST /api/hub/trend/stop/{plan_id} + → stop_trend_pullback(pid) + → 市价平仓 + 撤单 + → _finalize_plan(cfg, conn, row, "手动平仓", exit_price) +``` + +共用实现:`strategy_trend_register.py`(四所同一套,Gate Bot 的 `stop_trend_pullback` 也调用 `_finalize_plan`)。 + +--- + +## 3. `_finalize_plan` 写入顺序(修复后) + +1. 写 **策略快照** `save_trend_plan_snapshot` → `strategy_trade_snapshots` +2. 撤该品种挂单 +3. 若尚无 `trade_records.trend_plan_id = 计划ID`: + - 更新当日 session 资金 + - **`insert_trade_record`** 写入交易记录 +4. 更新 `trend_pullback_plans.status`(`stopped_manual` / `stopped_sl` / `stopped_tp`) +5. **`conn.commit()`** 一次提交 + +要点:**先写交易记录,再结束计划**,避免「计划已结束、交易记录未写入」的半成功状态。 + +--- + +## 4. 曾出现的 Bug(#4 ONDO 漏记) + +**现象**:策略记录有(止损 -2.71U),**交易记录没有**。 + +**原因**:Gate Bot 的 `insert_trade_record` 曾 **缺少 `entry_reason` 参数**,而 `_finalize_plan` 固定传入 `entry_reason="趋势回调"`,触发: + +```text +TypeError: insert_trade_record() got an unexpected keyword argument 'entry_reason' +``` + +策略快照在异常 **之前** 已插入,交易记录插入失败,故只出现在策略记录页。 + +**修复提交**:`80226ee` + +- Gate Bot `insert_trade_record` 增加 `entry_reason` +- `_call_insert_trade_record`:按各所函数 **签名过滤** 参数,避免未知字段导致失败 +- 调整写入顺序:交易记录 → 计划结束 → commit + +--- + +## 5. 历史漏记补录 + +对已结束、策略快照在、交易记录缺的计划(如 #4): + +```bash +cd /opt/crypto_monitor # 或本机仓库根目录 + +# 先预览 +python scripts/backfill_trend_trade_records.py \ + --db crypto_monitor_gate_bot/crypto.db --dry-run + +# 确认后写入 +python scripts/backfill_trend_trade_records.py \ + --db crypto_monitor_gate_bot/crypto.db --apply +``` + +其它所将 `--db` 换成对应 `crypto.db` 路径即可。 + +--- + +## 6. 与「保本移交」的区别 + +| 操作 | 策略记录 | 交易记录 | +|------|----------|----------| +| 中控 **结束计划**(手动平仓) | 计划结束时写入 | **同一时刻**写入 | +| **保本移交** | 移交时写入策略快照 | **不立即写**;持仓移交到 `order_monitors`,**后续平仓** 再写入 `trade_records` | + +--- + +## 7. 四所展示统一(中控 ↔ 实例) + +### 7.1 数据 enrich 入口 + +| 场景 | 函数 | +|------|------| +| 实例策略页 | `enrich_trend_plan` | +| 中控 `/api/hub/monitor` | `enrich_trend_plan_for_hub` → 同上 | +| 补仓明细表 | `attach_trend_dca_levels` → `enrich_trend_dca_levels_with_tp` | + +Gate Bot 在 `hub_bridge` 安装后调用 `patch_trend_hub_enrich`,与另外三所 `install_strategy_trend` 行为一致。 + +### 7.2 补仓表「触发价 / 加仓后均价」 + +**禁止**为凑均价 **反推虚构成交价**(曾错误出现做多补仓触发价 0.3941 等离谱数值)。 + +**`trend_leg_display_price`(四所唯一口径)**: + +| 列 | 规则 | +|----|------| +| **触发价** | `leg_fill_prices_json` 有记录 → 实际成交价;无记录 → **计划网格价** | +| **末档已补仓的加仓后均价** | 与顶部均价一致,取 **交易所持仓 `entry_price`**(`avg_entry_price`) | +| **顶部均价** | 优先交易所 live `entry_price`,非计划库内估算值 | + +修复提交:`08082eb`(移除反推成交价逻辑)。 + +### 7.3 中控静态页 + +`manual_trading_hub/static/app.js`:趋势浮盈亏计算 **优先** `trendPlan.avg_entry_price`,与计划卡一致。 + +--- + +## 8. 部署与自检 + +### 8.1 升级 + +```bash +cd /opt/crypto_monitor +git pull # 需含 80226ee、08082eb +pm2 restart crypto-monitor-binance crypto-monitor-okx crypto-monitor-gate crypto-monitor-gate-bot manual-trading-hub +pm2 save +``` + +### 8.2 手动平仓后自检 + +1. 中控结束一笔测试计划(或极小仓位) +2. **策略交易记录**:出现对应条目 +3. **交易记录与复盘**:出现 `类型=趋势回调`、`结果=手动平仓`,且 `trend_plan_id` 与计划 ID 一致 +4. 若实例 flash / 日志出现「计划已结束但记账可能不完整」,说明 `insert_trade_record` 仍失败,需查 PM2 日志 + +### 8.3 相关代码文件 + +| 文件 | 作用 | +|------|------| +| `strategy_trend_register.py` | `_finalize_plan`、`_call_insert_trade_record`、`enrich_trend_plan` | +| `strategy_trend_lib.py` | `trend_leg_display_price`、`enrich_trend_dca_levels_with_tp` | +| `strategy_snapshot_lib.py` | 策略快照写入 | +| `hub_bridge.py` | `/api/hub/trend/stop/` | +| `crypto_monitor_gate_bot/app.py` | `insert_trade_record`(含 `entry_reason`) | +| `scripts/backfill_trend_trade_records.py` | 漏记交易记录补录 | + +### 8.4 相关提交 + +| 提交 | 说明 | +|------|------| +| `6a4ec69` | 中控与四所趋势展示 enrich 统一 | +| `08082eb` | 移除补仓表反推虚构成交价 | +| `80226ee` | 修复 Gate Bot 中控平仓漏写 `trade_records` | + +--- + +## 9. 相关文档 + +| 文档 | 内容 | +|------|------| +| [策略交易说明.md](../策略交易说明.md) | 策略总览、策略交易记录页 | +| [crypto_monitor_gate_bot/趋势回调策略说明.md](../crypto_monitor_gate_bot/趋势回调策略说明.md) | 趋势回调业务细则 | +| [manual_trading_hub/使用说明.md](../manual_trading_hub/使用说明.md) | 中控监控与趋势卡布局 | + +--- + +*最后整理:2026-06-07(与对话中修复项同步)* diff --git a/策略交易说明.md b/策略交易说明.md index 6665620..b4fdd0f 100644 --- a/策略交易说明.md +++ b/策略交易说明.md @@ -100,6 +100,7 @@ strategy_records_register.py # /strategy/records 路由与列表数据 - **入口**:顶栏 **策略交易记录** → `/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** 条。 - **页面布局**: - **左栏卡片**:趋势回调记录;**右栏卡片**:顺势加仓记录。 @@ -144,6 +145,7 @@ pm2 save | [crypto_monitor_gate_bot/趋势回调策略说明.md](./crypto_monitor_gate_bot/趋势回调策略说明.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/ubuntu-server.md](./docs/ubuntu-server.md) | Ubuntu / root /opt / PM2 部署 | | [fib_key_monitor_lib.py](./fib_key_monitor_lib.py) | 斐波公式共用 |