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

4.3 KiB
Raw Permalink Blame History

止损止盈计算说明(保证金 vs 价格距离)

一、当前逻辑概览

项目 是否基于「订单保证金」 实际如何算 为何会“很大”
止损 (SL) 部分 优先用 ATRSL 价格距离 = 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×倍数
    • TP212%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 都会在「保证金比例」范围内,避免极端远距。