6.1 KiB
6.1 KiB
关键位止盈止损方案 & 移动保本开关 — 更新说明
版本日期: 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. 前端(关键位添加表单)
在「上沿 / 下沿」后增加:
- 止盈止损方案(仅类型为箱体突破、收敛突破时显示)
- 趋势单止盈价(仅选「趋势单·自填止盈」时显示且必填)
- 移动保本(箱体/收敛/斐波显示;默认不勾)
活跃列表卡片展示:方案、保本:开/关。
7. 环境变量
# 标准方案:突破 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. 部署与验证建议
git pull后重启三个实例的 Flask 进程(会自动迁移key_monitors列)。- 在
.env中按需设置KEY_TREND_STOP_OUTSIDE_PCT(不配则用默认 1)。 - 验证 Binance/Gate
- 添加箱体突破,选「箱体1R·止盈1.5H」,不勾保本 → 触发后微信应显示方案名、保本关、SL/TP 符合 E±H / E±1.5H。
- 添加趋势单,填止盈,勾保本 → 成交后持仓卡片「移动保本:开」。
- 验证 OKX:门控通过时微信应含「录入方案」与计划 SL/TP,并注明提醒模式不自动开仓。
- 旧关键位条目:列表应显示「方案:标准突破」「保本:关」(除非库中已有新字段值)。
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=) |