auto_trade_sys/docs/common/止损止盈计算说明.md
薇薇安 13a0e7d580 delete: 移除过时的文档与代码文件
删除了多个不再使用的文档和代码文件,包括交易更新推送、条件订单推送、REST API 文档、WebSocket API 文档及相关的策略分析文档。这些文件的移除有助于清理代码库,确保项目的整洁性与可维护性。
2026-02-20 17:49:00 +08:00

52 lines
4.3 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.

# 止损止盈计算说明(保证金 vs 价格距离)
## 一、当前逻辑概览
| 项目 | 是否基于「订单保证金」 | 实际如何算 | 为何会“很大” |
|------|------------------------|------------|----------------|
| **止损 (SL)** | 部分 | **优先用 ATR**SL 价格距离 = ATR × ATR_STOP_LOSS_MULTIPLIER如 3.0)。只有 ATR 不可用时才用「保证金×STOP_LOSS_PERCENT」换算成价格。 | ATR 宽时(如 2%×3=**6% 价格**),止损会离得很远;与“保证金 10%”的直觉不一致。 |
| **第一目标止盈 (TP1)** | 是,但会被抬升 | 先按 **TAKE_PROFIT_1_PERCENT30% 保证金)** 算价格距离;再被 **MIN_RR_FOR_TP11.5 倍止损距离)** 抬升,取更大者。 | 当止损很宽(如 6% 价格TP1 至少 1.5×6%=**9% 价格**容易比“30% 保证金 ≈3.75% 价格”大很多。 |
| **第二目标止盈 (TP2)** | 否(当前实际多用盈亏比) | **优先用「止损距离×RISK_REWARD_RATIO」**(如 3:1。即止损 6% 价格 → TP2 = **18% 价格**。保证金 55% 只是候选之一,通常不会被选中。 | 盈亏比 3:1 下,止损一宽,止盈就非常远,**很难触及**,所以你感觉“很难获利离场”。 |
**结论**
- **止损**:多数情况是 **按价格距离ATR** 算,不是按“订单保证金百分比”一口价。
- **止盈**
- TP1 设计上是“基于保证金”,但被 MIN_RR_FOR_TP1 抬升后,可能变成“基于止损距离”的 1.5 倍,也会偏大。
- TP2 **当前几乎总是“基于止损距离的盈亏比”**3 倍止损距离),所以会很大,**并不是“按订单保证金”的 55% 来**。
---
## 二、换算关系(便于心里有数)
- 杠杆 8x、**纯按保证金**时:
- 保证金 10% ≈ **1.25% 价格**
- 保证金 30% ≈ **3.75% 价格**
- 保证金 55% ≈ **6.875% 价格**
- 当前实际常见情况ATR 止损 + 3:1 止盈):
- 止损:例如 **4%6% 价格**ATR×倍数
- TP2**12%18% 价格**3×止损→ 对很多行情来说很难碰到。
---
## 三、若希望“更容易获利离场”的改法
1. **让第二目标止盈也受“保证金”上限约束(推荐)**
- 增加逻辑:当「盈亏比算出的 TP2」对应的保证金盈利 **大于** 配置的 TAKE_PROFIT_PERCENT如 55%)时,**改用「保证金 55%」对应的价格** 作为 TP2。
- 这样 TP2 最远就是“55% 保证金”(约 6.875% 价格 @8x),不会出现 18% 价格那种很难到的止盈。
2. **调低盈亏比**
-`RISK_REWARD_RATIO` 从 3.0 改为 2.0 或 1.5TP2 会变近(仍会优先于“保证金止盈”被选用,除非再做上面 1 的约束)。
3. **第一目标 TP1 不要被抬得过高**
-`MIN_RR_FOR_TP1` 从 1.5 改为 1.0或关闭“TP1 至少 1.5 倍止损”的抬升,让 TP1 更贴近“30% 保证金”对应的价格。
4. **收紧止损(让 ATR 止损别太宽)**
- 降低 `ATR_STOP_LOSS_MULTIPLIER`(如从 3.0 到 2.0 或 1.5),止损变近,同比例下 TP2 也会变近(但止损更容易被扫到,需权衡)。
**已实现**:在 `risk_manager.get_take_profit_price` 中增加了 **USE_MARGIN_CAP_FOR_TP**(默认 **True**):当使用盈亏比算出 TP2 时若该价格比「TAKE_PROFIT_PERCENT 对应的保证金止盈价」更远,则**改用保证金止盈价**作为 TP2这样止盈不会远到难以触及。
- **⚠️ 不要关闭**:普遍出现的「止盈特别远(如 +238% 保证金)、亏损扛单」是因为**没有封顶**时用了「止损距离×3」的止盈。**关掉 USE_MARGIN_CAP_FOR_TP 会恢复那种过远止盈,加重扛单**。应保持 **True**,并确保交易进程已重启/配置已生效,新开仓才会用封顶后的止盈。
**止损封顶USE_MARGIN_CAP_FOR_SL**:若仅封顶止盈、不封顶止损,会出现「止盈 55%、止损 -58%-78%」——止损仍过宽、易扛单。因此增加了 **USE_MARGIN_CAP_FOR_SL**(默认 True当 ATR或技术止损对应的**保证金亏损**超过配置的 STOP_LOSS_PERCENT如 10%)时,**改用保证金止损**,使止损不再超过 10% 保证金。与 USE_MARGIN_CAP_FOR_TP 一起使用,新开仓的 SL/TP 都会在「保证金比例」范围内,避免极端远距。