# A+E+D 止盈止损策略 三合一套餐:多周期ATR融合(A) + 跟踪止损(E) + 自适应盈亏比(D) ## 第一层:入场止损 — 多周期ATR融合 (A) ``` SL距离 = (ATR_1H × 0.5 + ATR_4H × 0.3 + ATR_1D × 0.2) × 1.5 做多: SL = 入场价 - SL距离 做空: SL = 入场价 + SL距离 ``` **为什么用多周期:** 1H(50%)应对短期波动,4H(30%)做主心骨,1D(20%)兜底。避免单根4H大K线拉偏ATR导致止损过宽。 ## 第二层:跟踪止损 (E) — 持仓后动态调整 ``` 阶段1:初始SL = 第一层的SL距离 阶段2:浮盈 > ATR融合×1.0 → SL移到入场±ATR融合×0.3(保本) 阶段3:浮盈 > ATR融合×2.0 → SL跟踪,跟踪距离=ATR融合×1.2 ``` 实现方式:trading cron 定时轮询(15min间隔),reduceOnly模式。 ## 第三层:自适应盈亏比 (D) 趋势强度判断(EMA12-EMA26斜率): | 斜率 | 趋势 | R:R | 策略 | |------|------|:---:|------| | > +0.5 | strong_up | 3.0 | 强趋势多拿一会 | | < -0.5 | strong_down | 3.0 | 强趋势多拿一会 | | \|slope\| < 0.1 | ranging | 1.5 | 震荡见好就收 | | 其他 | weak_trend | 2.0 | 正常 | ## 完整流程 ```python def calc_tp_sl(entry, side, exchange, symbol): # A: 多周期ATR fused, _, _, _ = calc_multi_atr(exchange, symbol) sl_distance = fused if fused else entry * 0.03 # D: 自适应R:R trend, slope = estimate_trend_strength(exchange, symbol) rr = {'strong_up':3.0,'strong_down':3.0,'ranging':1.5}.get(trend, 2.0) if side == 'sell': sl = entry + sl_distance tp = entry - sl_distance * rr else: sl = entry - sl_distance tp = entry + sl_distance * rr return tp, sl, rr, trend # E: 跟踪止损(持仓后循环执行) def update_trail(entry, current, side, fused): upl = abs(current - entry) # 每张 if upl > fused * 2.0: # 阶段3 trail = fused * 1.2 return current - trail if side == 'buy' else current + trail if upl > fused * 1.0: # 阶段2 return entry + fused * 0.3 if side == 'sell' else entry - fused * 0.3 return None # 保持初始SL ``` ## 参数调整 - **高波动币种** (ATR% > 5%):×1.5 → ×2.0 - **低波动币种** (ATR% < 1%):×1.5 → ×1.0 - **数据不足**:退回到单4H ATR×1.5