auto_trade_sys/docs/止损止盈计算说明.md
薇薇安 ba4a4b2205 1
2026-02-15 00:37:08 +08:00

48 lines
3.5 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这样止盈不会远到难以触及。可在配置中关闭设为 False恢复“始终用盈亏比止盈”。