a
This commit is contained in:
parent
9448996837
commit
be6459d5dd
|
|
@ -1275,6 +1275,47 @@ class PositionManager:
|
|||
logger.error(f" ⚠️ 警告: 没有交易所级别的止损保护,如果系统崩溃或网络中断,可能无法及时止损!")
|
||||
logger.error(f" 💡 建议: 检查止损价格计算是否正确,或手动在币安界面设置止损")
|
||||
|
||||
# ⚠️ 关键修复:止损单挂单失败后,立即检查当前价格是否已触发止损
|
||||
# 如果已触发,立即执行市价平仓,避免亏损扩大
|
||||
if current_price and stop_loss:
|
||||
try:
|
||||
current_price_val = float(current_price)
|
||||
stop_loss_val = float(stop_loss)
|
||||
entry_price_val = float(entry_price) if entry_price else None
|
||||
|
||||
# 检查是否已触发止损
|
||||
should_close = False
|
||||
if side == "BUY":
|
||||
# 做多:当前价 <= 止损价,触发止损
|
||||
if current_price_val <= stop_loss_val:
|
||||
should_close = True
|
||||
elif side == "SELL":
|
||||
# 做空:当前价 >= 止损价,触发止损
|
||||
if current_price_val >= stop_loss_val:
|
||||
should_close = True
|
||||
|
||||
if should_close:
|
||||
entry_price_str = f"{entry_price_val:.8f}" if entry_price_val is not None else 'N/A'
|
||||
logger.error("=" * 80)
|
||||
logger.error(f"{symbol} ⚠️ 止损单挂单失败,但当前价格已触发止损,立即执行市价平仓保护!")
|
||||
logger.error(f" 当前价格: {current_price_val:.8f}")
|
||||
logger.error(f" 止损价格: {stop_loss_val:.8f}")
|
||||
logger.error(f" 入场价格: {entry_price_str}")
|
||||
logger.error(f" 持仓方向: {side}")
|
||||
logger.error(f" 价格偏离: {abs(current_price_val - stop_loss_val):.8f} ({abs(current_price_val - stop_loss_val)/stop_loss_val*100:.2f}%)")
|
||||
logger.error("=" * 80)
|
||||
# 立即执行市价平仓
|
||||
if await self.close_position(symbol, reason='stop_loss'):
|
||||
logger.info(f"{symbol} ✓ 止损平仓成功(止损单挂单失败后的保护措施)")
|
||||
return
|
||||
else:
|
||||
# 未触发止损,但需要增强WebSocket监控
|
||||
logger.warning(f"{symbol} ⚠️ 止损单挂单失败,当前价格未触发止损,将依赖WebSocket监控")
|
||||
logger.warning(f" 当前价格: {current_price_val:.8f}, 止损价格: {stop_loss_val:.8f}")
|
||||
logger.warning(f" 价格距离止损: {abs(current_price_val - stop_loss_val):.8f} ({abs(current_price_val - stop_loss_val)/stop_loss_val*100:.2f}%)")
|
||||
except Exception as e:
|
||||
logger.warning(f"{symbol} 检查止损触发条件时出错: {e},继续依赖WebSocket监控")
|
||||
|
||||
# 在挂止盈单前,检查当前价格是否已经触发止盈
|
||||
if current_price and take_profit:
|
||||
try:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user