This commit is contained in:
薇薇安 2026-01-15 22:53:50 +08:00
parent e81dc33c3c
commit 9513f94760
3 changed files with 43 additions and 2 deletions

View File

@ -628,6 +628,47 @@ class BinanceClient:
logger.warning(f" 需要增加数量或提高仓位大小")
return None
# 检查最小保证金要求(避免手续费侵蚀收益)
# 获取当前杠杆(如果无法获取,使用默认值)
current_leverage = config.TRADING_CONFIG.get('LEVERAGE', 10)
try:
# 尝试从持仓信息获取实际使用的杠杆
positions = await self.client.futures_position_information(symbol=symbol)
if positions and len(positions) > 0:
position = positions[0]
if float(position.get('positionAmt', 0)) != 0:
# 有持仓,使用持仓的杠杆
leverage_bracket = position.get('leverage', current_leverage)
if leverage_bracket:
current_leverage = int(leverage_bracket)
except Exception as e:
logger.debug(f"无法获取 {symbol} 的杠杆信息,使用默认值: {current_leverage}x ({e})")
min_margin_usdt = config.TRADING_CONFIG.get('MIN_MARGIN_USDT', 1.0)
required_margin = notional_value / current_leverage
if required_margin < min_margin_usdt:
logger.warning(
f"{symbol} 订单保证金不足: {required_margin:.4f} USDT < "
f"最小保证金要求: {min_margin_usdt:.2f} USDT"
)
logger.warning(
f" 订单名义价值: {notional_value:.2f} USDT, "
f"杠杆: {current_leverage}x, "
f"保证金: {required_margin:.4f} USDT"
)
logger.warning(
f" 需要的最小名义价值: {min_margin_usdt * current_leverage:.2f} USDT "
f"(最小保证金 {min_margin_usdt:.2f} USDT × 杠杆 {current_leverage}x)"
)
logger.warning(f" 跳过此订单,避免手续费侵蚀收益")
return None
logger.info(
f" 保证金检查通过: {required_margin:.4f} USDT >= "
f"最小要求: {min_margin_usdt:.2f} USDT (杠杆: {current_leverage}x)"
)
# 构建订单参数
order_params = {
'symbol': symbol,

View File

@ -164,7 +164,7 @@ def _get_trading_config():
'MAX_POSITION_PERCENT': 0.05,
'MAX_TOTAL_POSITION_PERCENT': 0.30,
'MIN_POSITION_PERCENT': 0.01,
'MIN_MARGIN_USDT': 0.5, # 最小保证金要求USDT避免手续费侵蚀收益
'MIN_MARGIN_USDT': 1.0, # 最小保证金要求USDT避免手续费侵蚀收益提高到1.0以确保有足够收益)
'MIN_CHANGE_PERCENT': 0.5, # 降低到0.5%以获取更多推荐(推荐系统可以更宽松)
'TOP_N_SYMBOLS': 50, # 每次扫描后处理的交易对数量增加到50以获取更多推荐
'MAX_SCAN_SYMBOLS': 500, # 扫描的最大交易对数量0表示扫描所有

View File

@ -303,7 +303,7 @@ class RiskManager:
position_value = required_quantity * current_price
# 检查最小保证金要求(避免手续费侵蚀收益)
min_margin_usdt = self.config.get('MIN_MARGIN_USDT', 0.5) # 默认0.5 USDT
min_margin_usdt = self.config.get('MIN_MARGIN_USDT', 1.0) # 默认1.0 USDT提高到1.0以确保有足够收益)
# 使用传入的实际杠杆,如果没有传入则使用配置的基础杠杆
actual_leverage = leverage if leverage is not None else self.config.get('LEVERAGE', 10)