edf4bb835d
Co-authored-by: Cursor <cursoragent@cursor.com>
168 lines
8.0 KiB
Markdown
168 lines
8.0 KiB
Markdown
# 关键位监控说明(自动开仓 + 人工盯盘)
|
||
|
||
**适用:`crypto_monitor_gate`(Gate U 本位永续)**
|
||
Binance / OKX 见各自目录下同名文档;共享逻辑在仓库根目录 `key_monitor_lib.py`。
|
||
|
||
本文档与 `.env`、`check_key_monitors`、`add_key`、`_key_hard_checks`、`_process_key_rs_level_alert` 一致。
|
||
|
||
---
|
||
|
||
## 一、监控类型总览
|
||
|
||
| 录入类型 | 录入时选方向 | 自动市价开仓 | 触发与结案 |
|
||
|----------|--------------|--------------|------------|
|
||
| **箱体突破** | **必选** 多/空 | **是**(门控 + RR) | 条件满足 → 开仓或 `rr_insufficient` / `exchange_failed` → **一次性删除** |
|
||
| **收敛突破** | **必选** 多/空 | **是**(同上) | 同上 |
|
||
| **关键阻力位** | **不选**(`direction=watch`) | **否** | 5m 收盘突破上/下沿 → 微信 **3 次** → `key_level_alert_done` |
|
||
| **关键支撑位** | **不选** | **否** | 同上(与阻力位**相同规则**:填上沿+下沿,程序双向监控) |
|
||
| 斐波回调 0.618 / 0.786 | 必选 | 限价挂单逻辑 | 见斐波说明(**不在下文展开**) |
|
||
| **触价开仓** | **必选** 多/空 | **程序盯价 → 触 E 后市价** | 见下文 **§六** |
|
||
|
||
**添加时(箱体/收敛/斐波/触价):** 品种须 **日成交量排名前 `KEY_DAILY_VOLUME_RANK_MAX`(默认 30)**;上沿 **>** 下沿(触价开仓填 E/SL/TP,上下沿仅作展示占位)。
|
||
|
||
---
|
||
|
||
## 二、关键阻力位 / 关键支撑位(人工盯盘)
|
||
|
||
### 2.1 录入
|
||
|
||
- 填写 **上沿 `upper`** 与 **下沿 `lower`**(程序同时监控两侧,**无法预先判定**做多还是做空)。
|
||
- 页面 **不显示、不要求** 方向;库中 `direction` 初始为 `watch`,**首次突破后** 写入 `long`(向上突破上沿)或 `short`(向下突破下沿)。
|
||
|
||
### 2.2 触发(极简)
|
||
|
||
- 周期:**`KLINE_TIMEFRAME`(默认 5m)最近一根已闭合 K** 的 **收盘价**(非影线)。
|
||
- **向上突破上沿:** `收盘 > upper` → 推断方向 **多 / 向上**,本次监控任务开始按节奏提醒。
|
||
- **向下突破下沿:** `收盘 < lower` → 推断方向 **空 / 向下**,本次任务同样开始提醒。
|
||
- **任一侧突破即结束本条监控周期**(不会在突破后再等待另一侧;上沿、下沿谁先满足用谁,同根 K 仅可能满足一侧)。
|
||
|
||
**不参与:** 量能、二确 K、越过幅度下限、日成交排名(运行时)、计划 RR、自动开仓。
|
||
|
||
### 2.3 微信提醒次数
|
||
|
||
| 配置 | 默认 | 含义 |
|
||
|------|------|------|
|
||
| `KEY_ALERT_MAX_TIMES` | `3` | 突破后最多推送 3 次 |
|
||
| `KEY_ALERT_INTERVAL_MINUTES` | `5` | 相邻两次推送至少间隔 5 分钟 |
|
||
|
||
- 第 1 次:首次检测到突破的当次轮询(若已闭合 5m 满足条件)。
|
||
- 第 2、3 次:仅按间隔推送(**不要求**价格仍在箱外)。
|
||
- 第 3 次推送后:写入 `key_monitor_history`,`close_reason=**key_level_alert_done**`,从 `key_monitors` **删除**。
|
||
|
||
### 2.4 与箱体/收敛的区别
|
||
|
||
| 项目 | 阻力/支撑 | 箱体/收敛 |
|
||
|------|-----------|-----------|
|
||
| 方向 | 程序推断 | 人工选择 |
|
||
| K 线根数 | 1 根闭合 5m | 2 根(突破 K + 确认 K) |
|
||
| 提醒次数 | 3 次后结案 | 自动单:触发后 1 次业务推送并结案 |
|
||
|
||
---
|
||
|
||
## 三、箱体突破 / 收敛突破(自动开仓)
|
||
|
||
### 3.1 K 线结构(默认索引)
|
||
|
||
| 角色 | 环境变量 | 默认 | 含义 |
|
||
|------|----------|------|------|
|
||
| 突破 K | `KEY_CONFIRM_BREAKOUT_BAR` | `-2` | 倒数第 2 根闭合 K |
|
||
| 确认 K | `KEY_CONFIRM_BAR` | `-1` | 倒数第 1 根闭合 K |
|
||
|
||
### 3.2 硬门控(须全部通过)
|
||
|
||
1. **有效突破(收盘越界)**
|
||
- 多:`突破 K 收盘 > upper`
|
||
- 空:`突破 K 收盘 < lower`
|
||
|
||
2. **突破越过幅度(仅下限)**
|
||
- 多:`(突破 K 收盘 − upper) / upper × 100 > KEY_BREAKOUT_AMP_MIN_PCT`(默认 **0.03%**)
|
||
- 空:`(lower − 突破 K 收盘) / lower × 100 >` 同上
|
||
- **无上限**;突破过猛由 **计划 RR** 过滤。
|
||
- **不再**使用 K 线实体占开盘价比例;`KEY_BREAKOUT_AMP_MAX_PCT` **已不参与门控**。
|
||
|
||
3. **确认 K 不进箱体**
|
||
- 多:确认 K 收盘 **`> upper`**(不得在 `[lower, upper]` 内)
|
||
- 空:确认 K 收盘 **`< lower`**
|
||
|
||
4. **量能:** 突破 K 成交量 > 前 `KEY_VOLUME_MA_BARS`(默认 20)根均量 × `KEY_VOLUME_RATIO_MIN`(默认 1.3)
|
||
|
||
5. **日成交量排名:** 运行时仍须前 `KEY_DAILY_VOLUME_RANK_MAX`(默认 30)
|
||
|
||
6. **计划 RR(最后经济门控):** 按确认 K 收盘 **E** 计算 SL/TP 后,`RR` **严格大于** `KEY_AUTO_MIN_PLANNED_RR`(默认 1.5)才市价开仓
|
||
|
||
### 3.3 止损 / 止盈(确认 K 收盘为 E)
|
||
|
||
箱体高 **H = |upper − lower|**。止损锚在 **突破 K 极值** 外侧:
|
||
|
||
| 方向 | 止损(标准/趋势方案) |
|
||
|------|------------------------|
|
||
| 多 | 突破 K **最低价** × (1 − `KEY_STOP_OUTSIDE_BREAKOUT_PCT`%) |
|
||
| 空 | 突破 K **最高价** × (1 + `KEY_STOP_OUTSIDE_BREAKOUT_PCT`%) |
|
||
|
||
止盈方案见下表(与改版前一致):
|
||
|
||
| 方案 | `sl_tp_mode` | 多:SL / TP | 空:SL / TP |
|
||
|------|--------------|-------------|-------------|
|
||
| 标准突破 | `standard` | 突破 K 低外侧% / **E+H** | 突破 K 高外侧% / **E−H** |
|
||
| 箱体 1R·止盈 1.5H | `box_1p5` | **E−H** / **E+1.5×H** | **E+H** / **E−1.5×H** |
|
||
| 趋势单·自填止盈 | `trend_manual` | 突破 K 低 × (1−`KEY_TREND_STOP_OUTSIDE_PCT`%) / **录入止盈** | 突破 K 高外侧% / **录入止盈** |
|
||
|
||
### 3.4 一次性结案(`close_reason`)
|
||
|
||
| `close_reason` | 含义 |
|
||
|----------------|------|
|
||
| `rr_insufficient` | 门控通过但 RR 不达标或 SL/TP 几何无效 |
|
||
| `exchange_failed` | RR 达标但实盘/交易所等原因未开仓 |
|
||
| `auto_opened` | RR 达标且市价开仓成功 |
|
||
| `key_level_alert_done` | 阻力/支撑 **3 次提醒** 完成 |
|
||
|
||
---
|
||
|
||
## 四、触价开仓(程序触价,无交易所挂单)
|
||
|
||
### 4.1 录入
|
||
|
||
- 类型选 **触价开仓**;方向必选多/空。
|
||
- 填写 **计划入场价 E**、**止损 SL**、**止盈 TP**(做多须 `SL < E < TP`)。
|
||
- 计划 RR 以 **E** 为基准,须 **严格大于** `KEY_AUTO_MIN_PLANNED_RR`(默认 1.5,与箱体/斐波相同)。
|
||
- 可选移动保本、时间平仓;**全仓杠杆模式**下可用(页面隐藏箱体/收敛/斐波/假突破)。
|
||
|
||
### 4.2 触发与结案
|
||
|
||
- 轮询标记价:做多 `标记价 ≤ E`、做空 `标记价 ≥ E` → **下一轮询市价开仓**,挂交易所 TP/SL,进下单监控。
|
||
- 未成交前标记价先触 **TP 侧** → `trigger_tp_invalidate`;**24h** 未触发 → `trigger_entry_expired`。
|
||
- 成功 → `trigger_entry_filled`;触发后开仓失败 → `trigger_exchange_failed`。
|
||
|
||
### 4.3 计仓与占位
|
||
|
||
- **以损定仓**:按 E、SL 反推保证金,触发时重算;**全仓杠杆**:可用×缓冲比例,BTC/ETH 10x、其它 5x。
|
||
- **占当日开仓意图**(已开 + 待触发),未成交不占持仓;同币仅 1 条。
|
||
|
||
共享逻辑:`trigger_entry_key_monitor_lib.py`;轮询:`check_trigger_entry_key_monitors`。
|
||
|
||
---
|
||
|
||
## 五、环境与参数(`.env` 摘要)
|
||
|
||
| 变量 | 箱体/收敛 | 阻力/支撑 |
|
||
|------|-----------|-----------|
|
||
| `KEY_BREAKOUT_AMP_MIN_PCT` | 突破越过下限(默认 0.03) | 不用 |
|
||
| `KEY_BREAKOUT_AMP_MAX_PCT` | **已废弃门控** | 不用 |
|
||
| `KEY_VOLUME_*` / `KEY_CONFIRM_*` | 用 | 不用 |
|
||
| `KEY_AUTO_MIN_PLANNED_RR` | 用 | 不用 |
|
||
| `KEY_ALERT_MAX_TIMES` / `KEY_ALERT_INTERVAL_MINUTES` | 不用 | 用(默认 3 次 / 5 分钟) |
|
||
| `KEY_DAILY_VOLUME_RANK_MAX` | 添加时 + 运行时 | **仅添加时** |
|
||
|
||
---
|
||
|
||
## 六、相关代码
|
||
|
||
| 说明 | 位置 |
|
||
|------|------|
|
||
| 共享判定 | `key_monitor_lib.py` |
|
||
| 主循环 | `check_key_monitors` |
|
||
| 自动门控 | `_key_hard_checks` |
|
||
| 阻力/支撑提醒 | `_process_key_rs_level_alert` |
|
||
| 录入 | `add_key` |
|
||
| 开仓 | `_market_open_for_key_monitor` |
|