diff --git a/backend/app/crypto_agent/trading_decision_maker.py b/backend/app/crypto_agent/trading_decision_maker.py index 62f29c2..624881a 100644 --- a/backend/app/crypto_agent/trading_decision_maker.py +++ b/backend/app/crypto_agent/trading_decision_maker.py @@ -349,6 +349,20 @@ class TradingDecisionMaker: - **micro**:账户余额 × 1%(原1.5%) - **heavy**:❌ 日内交易禁用 +### ⚠️ 最小保证金要求(Bitget 合约限制) +**不同币种的最小保证金要求(10x 杠杆下)**: +- **BTC** (0.01 BTC/张): 最小保证金 $85 +- **ETH** (0.1 ETH/张): 最小保证金 $35 +- **SOL** (1 SOL/张): 最小保证金 $14 +- **其他币种**: 参考合约规格,确保保证金 × 杠杆 ≥ 1 张合约价值 + +**计算规则**: +``` +最小保证金 = (合约规格 × 当前价格) ÷ 杠杆倍数 +``` + +**必须确保**:计算的保证金金额 ≥ 该币种的最小保证金,否则无法开仓! + ### ⚠️ 日内交易特别规则 - 达到目标盈利(2-3%)**立即平仓**,不贪婪 - 持仓超过3小时**考虑强制平仓** @@ -1138,6 +1152,32 @@ class TradingDecisionMaker: f"超过最大仓位金额 (保证金 ${margin:.2f} → 持仓价值 ${position_value:.2f}, 总计 ${new_total_value:,.2f} > ${max_position_value:,.2f})" ) + # 最小保证金检查(Bitget 合约限制) + # 不同币种的最小保证金要求(10x 杠杆下) + MIN_MARGIN_REQUIREMENTS = { + 'BTC': 85, # 0.01 BTC/张 ≈ $850 + 'ETH': 35, # 0.1 ETH/张 ≈ $350 + 'SOL': 14, # 1 SOL/张 ≈ $140 + 'BNB': 7, # 0.1 BNB/张 ≈ $70 + 'XRP': 10, # 10 XRP/张 ≈ $100 + 'DOGE': 8, # 100 DOGE/张 ≈ $80 + 'ADA': 8, # 10 ADA/张 ≈ $80 (估计) + 'AVAX': 10, # 1 AVAX/张 ≈ $100 + 'LINK': 8, # 1 LINK/张 ≈ $80 + 'DOT': 5, # 1 DOT/张 ≈ $50 + 'MATIC': 8, # 10 MATIC/张 ≈ $80 + 'POL': 8, # 10 POL/张 ≈ $80 + } + + symbol = decision.get('symbol', '').replace('USDT', '').upper() + min_margin = MIN_MARGIN_REQUIREMENTS.get(symbol, 10) # 默认最小 $10 + + if margin > 0 and margin < min_margin: + logger.warning(f"⚠️ {symbol} 保证金不足: ${margin:.2f} < 最小要求 ${min_margin:.2f}") + logger.info(f" 自动调整保证金: ${margin:.2f} → ${min_margin:.2f}") + decision['quantity'] = min_margin + logger.info(f" ✅ 保证金已调整为最小值: ${min_margin:.2f}") + # 盈亏比检查:所有交易必须满足盈亏比 >= 1:1.2 action = decision.get('action', '') entry_price = decision.get('entry_price')