Files
crypto_monitor_user/关键位止盈止损与移动保本更新说明.md
T
2026-05-21 16:44:31 +08:00

165 lines
6.1 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.
# 关键位止盈止损方案 & 移动保本开关 — 更新说明
**版本日期:** 2026-05-21
**影响实例:** `crypto_monitor_binance`(币安)、`crypto_monitor_gate`Gate)、`crypto_monitor_okx`OKX
**共用库:** 仓库根目录 `key_sl_tp_lib.py`(计算逻辑)、`fib_key_monitor_lib.py`(斐波 SL/TP 不变)
---
## 1. 变更摘要
| 项 | 变更前 | 变更后 |
|----|--------|--------|
| 箱体/收敛 SL/TP | 仅一种(标准突破) | 添加时可三选一 |
| 移动保本(关键位) | 自动单写死开启 | 添加时可勾选,**默认关闭** |
| 斐波 SL/TP | H/L 限价方案 | **不变**;仅增加移动保本开关 |
| 历史 `key_monitors` | 无新字段 | 缺字段视为 **标准方案 + 保本关** |
---
## 2. 数据库(`key_monitors` 新增列)
启动时自动 `ALTER TABLE`(已有库兼容):
| 字段 | 类型 | 默认 | 说明 |
|------|------|------|------|
| `sl_tp_mode` | TEXT | `standard` | `standard` / `box_1p5` / `trend_manual` |
| `manual_take_profit` | REAL | NULL | 仅 `trend_manual` 使用 |
| `breakeven_enabled` | INTEGER | `0` | 0=关,1=开 |
旧记录无上述列时,读取逻辑按 **`standard` + 保本关** 处理。
---
## 3. 三种止盈止损方案(仅箱体突破 / 收敛突破)
计划价 **E** = 确认 K(倒数第 1 根已闭合 5m)收盘价;**H** = \|上沿 下沿\|。
自动开仓(币安/Gate)前仍须:**计划 RR(按 E> `KEY_AUTO_MIN_PLANNED_RR`**(默认 1.5)。
### 3.1 标准突破 `standard`(原逻辑)
| 方向 | 止损 SL | 止盈 TP |
|------|---------|---------|
| 多 | 突破 K 最低价 × (1 − `KEY_STOP_OUTSIDE_BREAKOUT_PCT`/100) | E + 1×H |
| 空 | 突破 K 最高价 × (1 + 外侧%) | E 1×H |
默认外侧:**0.5%**`KEY_STOP_OUTSIDE_BREAKOUT_PCT`)。
### 3.2 箱体 1R / 止盈 1.5H `box_1p5`
**E 为当前价**,风险距离 = 1×H,止盈距离 = 1.5×H**计划 RR 固定约 1.5:1**。
| 方向 | 止损 SL | 止盈 TP |
|------|---------|---------|
| 多 | E H | E + 1.5×H |
| 空 | E + H | E 1.5×H |
### 3.3 趋势单 + 自填止盈 `trend_manual`
| 方向 | 止损 SL | 止盈 TP |
|------|---------|---------|
| 多 | 突破 K 最低价 × (1 − `KEY_TREND_STOP_OUTSIDE_PCT`/100) | 添加时录入的 `manual_take_profit` |
| 空 | 突破 K 最高价 × (1 + 外侧%) | 同上 |
- 环境变量 **`KEY_TREND_STOP_OUTSIDE_PCT`**,默认 **1**(即 1%)。
- 添加时校验:做多止盈 > 上沿;做空止盈 < 下沿。
---
## 4. 斐波回调 0.618 / 0.786
- **SL/TP**:仍为 `calc_fib_plan`(多:SL=L、TP=H;空:SL=H、TP=L),**无**三方案下拉。
- **移动保本**:添加时可勾选;成交写入 `order_monitors` 时带入该勾选状态(默认关)。
---
## 5. 移动保本
| 场景 | 行为 |
|------|------|
| 关键位添加 | 复选框「移动保本」,**默认不勾选** |
| 箱体/收敛自动开仓成功 | `order_monitors.breakeven_enabled` = 添加时的选择 |
| 斐波限价成交后 | 同上 |
| 人工「实盘下单」 | **不变**:仍为表单勾选,默认仍可按原页面逻辑 |
触发参数仍用全局 `.env``BREAKEVEN_RR_TRIGGER``BREAKEVEN_STEP_R``BREAKEVEN_OFFSET_PCT`
---
## 6. 前端(关键位添加表单)
在「上沿 / 下沿」后增加:
1. **止盈止损方案**(仅类型为箱体突破、收敛突破时显示)
2. **趋势单止盈价**(仅选「趋势单·自填止盈」时显示且必填)
3. **移动保本**(箱体/收敛/斐波显示;默认不勾)
活跃列表卡片展示:**方案**、**保本:开/关**。
---
## 7. 环境变量
```env
# 标准方案:突破 K 极值外侧 %
KEY_STOP_OUTSIDE_BREAKOUT_PCT=0.5
# 趋势单方案:突破 K 极值外侧 %
KEY_TREND_STOP_OUTSIDE_PCT=1
```
已写入各实例 `.env.example`Binance / Gate / OKX)。
---
## 8. 交易所差异
| 实例 | 箱体/收敛触发后 |
|------|----------------|
| **Binance / Gate** | 门控通过 → 按方案算 SL/TP → 市价开仓 → 挂交易所 TP/SL → 写入下单监控 |
| **OKX** | 门控通过 → **企业微信提醒**(推送中含录入方案的计划 SL/TP/RR),**不自动市价开仓** |
OKX 用户按推送中的计划价自行下单;斐波仍为限价 + 成交后挂 TP/SL(与原先一致)。
---
## 9. 涉及文件清单
| 路径 | 说明 |
|------|------|
| `key_sl_tp_lib.py` | **新建**,三方案计算与文案 |
| `crypto_monitor_binance/app.py` | 门控触发、开仓、斐波、add_key |
| `crypto_monitor_binance/templates/index.html` | 表单 + JS + 列表展示 |
| `crypto_monitor_binance/.env.example` | `KEY_TREND_STOP_OUTSIDE_PCT` |
| `crypto_monitor_gate/app.py` | 同 Binance |
| `crypto_monitor_gate/templates/index.html` | 同 Binance |
| `crypto_monitor_gate/.env.example` | 同上 |
| `crypto_monitor_okx/app.py` | add_key、提醒文案、斐波保本 |
| `crypto_monitor_okx/templates/index.html` | 表单 + JS |
| `crypto_monitor_okx/.env.example` | 注释项 |
---
## 10. 部署与验证建议
1. `git pull` 后重启三个实例的 Flask 进程(会自动迁移 `key_monitors` 列)。
2.`.env` 中按需设置 `KEY_TREND_STOP_OUTSIDE_PCT`(不配则用默认 1)。
3. **验证 Binance/Gate**
- 添加箱体突破,选「箱体1R·止盈1.5H」,不勾保本 → 触发后微信应显示方案名、保本关、SL/TP 符合 E±H / E±1.5H。
- 添加趋势单,填止盈,勾保本 → 成交后持仓卡片「移动保本:开」。
4. **验证 OKX**:门控通过时微信应含「录入方案」与计划 SL/TP,并注明提醒模式不自动开仓。
5. 旧关键位条目:列表应显示「方案:标准突破」「保本:关」(除非库中已有新字段值)。
---
## 11. 代码入口(便于二次开发)
| 功能 | 符号 |
|------|------|
| 计划 SL/TP | `plan_key_sl_tp()` in `key_sl_tp_lib.py` |
| 按监控行计算 | `_key_plan_sl_tp_for_row()` in各 `app.py` |
| 添加关键位 | `add_key()` |
| 箱体/收敛轮询 | `check_key_monitors()`OKX 仅提醒) |
| 斐波添加 | `_add_fib_key_monitor(..., breakeven_enabled=)` |
| 自动开仓写监控 | `_market_open_for_key_monitor(..., breakeven_enabled=)` |