a
This commit is contained in:
parent
e81dc33c3c
commit
9513f94760
|
|
@ -628,6 +628,47 @@ class BinanceClient:
|
||||||
logger.warning(f" 需要增加数量或提高仓位大小")
|
logger.warning(f" 需要增加数量或提高仓位大小")
|
||||||
return None
|
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 = {
|
order_params = {
|
||||||
'symbol': symbol,
|
'symbol': symbol,
|
||||||
|
|
|
||||||
|
|
@ -164,7 +164,7 @@ def _get_trading_config():
|
||||||
'MAX_POSITION_PERCENT': 0.05,
|
'MAX_POSITION_PERCENT': 0.05,
|
||||||
'MAX_TOTAL_POSITION_PERCENT': 0.30,
|
'MAX_TOTAL_POSITION_PERCENT': 0.30,
|
||||||
'MIN_POSITION_PERCENT': 0.01,
|
'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%以获取更多推荐(推荐系统可以更宽松)
|
'MIN_CHANGE_PERCENT': 0.5, # 降低到0.5%以获取更多推荐(推荐系统可以更宽松)
|
||||||
'TOP_N_SYMBOLS': 50, # 每次扫描后处理的交易对数量(增加到50以获取更多推荐)
|
'TOP_N_SYMBOLS': 50, # 每次扫描后处理的交易对数量(增加到50以获取更多推荐)
|
||||||
'MAX_SCAN_SYMBOLS': 500, # 扫描的最大交易对数量(0表示扫描所有)
|
'MAX_SCAN_SYMBOLS': 500, # 扫描的最大交易对数量(0表示扫描所有)
|
||||||
|
|
|
||||||
|
|
@ -303,7 +303,7 @@ class RiskManager:
|
||||||
position_value = required_quantity * current_price
|
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)
|
actual_leverage = leverage if leverage is not None else self.config.get('LEVERAGE', 10)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user