1
This commit is contained in:
parent
c27bed1efd
commit
1dd8d5893d
|
|
@ -194,24 +194,25 @@ def _get_trading_config():
|
|||
'MAX_OPEN_POSITIONS': 4, # 同时持仓数量上限(总仓位12% / 单笔1.5% = 最多4个)
|
||||
'MAX_DAILY_ENTRIES': 15, # 每日最多15笔(快速验证模式:提高上限以快速验证策略)
|
||||
|
||||
'MAX_POSITION_PERCENT': 0.015, # 单笔仓位1.5%(山寨币风险高,不加仓)
|
||||
'MAX_TOTAL_POSITION_PERCENT': 0.12, # 总仓位12%(保守控制总风险)
|
||||
'MAX_POSITION_PERCENT': 0.20, # 单笔仓位上限20%(作为风控熔断,实际仓位由固定风险模型决定)
|
||||
'MAX_TOTAL_POSITION_PERCENT': 0.80, # 总仓位80%(避免满仓,留有余地)
|
||||
'MIN_POSITION_PERCENT': 0.01, # 最小仓位1%
|
||||
'MIN_MARGIN_USDT': 5.0, # 最小保证金5美元
|
||||
'MIN_MARGIN_USDT': 10.0, # 最小保证金10美元(提高门槛,过滤过小交易)
|
||||
'MIN_CHANGE_PERCENT': 0.5, # 最小价格变动0.5%
|
||||
'TOP_N_SYMBOLS': 20, # 选择信号最强的20个优先处理(2026-02-06优化:扩大候选池以捕获更多机会)
|
||||
'SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT': 15, # 智能补单:多返回15个候选,冷却时仍可尝试后续交易对
|
||||
'MAX_SCAN_SYMBOLS': 500, # 扫描前500个(覆盖所有交易对,确保不遗漏高波动币种)
|
||||
'EXCLUDE_MAJOR_COINS': True, # 排除主流币(BTC、ETH、BNB等),专注于山寨币
|
||||
'STOP_LOSS_PERCENT': 0.10, # 止损10%(保证金百分比) - 2026-02-09优化:配合4倍杠杆,约2.5%价格波动
|
||||
'TAKE_PROFIT_PERCENT': 0.60, # 第二目标/单目标止盈60%(保证金百分比) - 追求更高盈亏比
|
||||
'TAKE_PROFIT_1_PERCENT': 0.30, # 第一目标止盈30%(保证金百分比) - 确保3:1盈亏比 (30% vs 10%)
|
||||
'MIN_STOP_LOSS_PRICE_PCT': 0.025, # 最小止损价格变动2.5%(2026-01-29优化:从2%提高到2.5%,给波动更多空间)
|
||||
'TOP_N_SYMBOLS': 30, # 扩大候选池到30个,增加机会
|
||||
'SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT': 20, # 智能补单候选增加
|
||||
'MAX_SCAN_SYMBOLS': 500, # 扫描前500个
|
||||
'EXCLUDE_MAJOR_COINS': True, # 排除主流币
|
||||
'STOP_LOSS_PERCENT': 0.05, # 基础止损5%(配合ATR动态止损,作为保底)
|
||||
'TAKE_PROFIT_PERCENT': 0.80, # 第二目标止盈80%(追求大趋势收益)
|
||||
'TAKE_PROFIT_1_PERCENT': 0.30, # 第一目标止盈30%(确保3:1盈亏比)
|
||||
'MIN_RR_FOR_TP1': 1.2, # 第一目标止盈的最小盈亏比(相对于止损距离)
|
||||
'MIN_STOP_LOSS_PRICE_PCT': 0.025, # 最小止损价格变动2.5%
|
||||
'MIN_TAKE_PROFIT_PRICE_PCT': 0.02, # 最小止盈价格变动2%
|
||||
'USE_ATR_STOP_LOSS': True, # 使用ATR动态止损
|
||||
'ATR_STOP_LOSS_MULTIPLIER': 1.5, # ATR止损倍数1.5(标准设置,避免噪音止损)
|
||||
'ATR_TAKE_PROFIT_MULTIPLIER': 4.5, # ATR止盈倍数4.5(确保3:1盈亏比)
|
||||
'RISK_REWARD_RATIO': 3.0, # 盈亏比3:1(2026-01-27优化:降低,更容易触发,保证胜率)
|
||||
'ATR_STOP_LOSS_MULTIPLIER': 2.0, # ATR止损倍数2.0(放宽止损,适应山寨币高波动)
|
||||
'ATR_TAKE_PROFIT_MULTIPLIER': 6.0, # ATR止盈倍数6.0(追求更高盈亏比)
|
||||
'RISK_REWARD_RATIO': 3.0, # 盈亏比3:1
|
||||
'ATR_PERIOD': 14, # ATR计算周期14
|
||||
'USE_DYNAMIC_ATR_MULTIPLIER': False, # 不使用动态ATR
|
||||
'ATR_MULTIPLIER_MIN': 1.5, # 动态ATR倍数最小值
|
||||
|
|
@ -261,8 +262,8 @@ def _get_trading_config():
|
|||
'MAX_LEVERAGE': 12, # 最大杠杆12倍,不要超过
|
||||
# 移动止损:必须开启!山寨币利润要保护
|
||||
'USE_TRAILING_STOP': True,
|
||||
'TRAILING_STOP_ACTIVATION': 0.20, # 盈利20%后激活(给交易更多呼吸空间)
|
||||
'TRAILING_STOP_PROTECT': 0.05, # 保护5%利润
|
||||
'TRAILING_STOP_ACTIVATION': 0.10, # 盈利10%后激活(更早锁定利润)
|
||||
'TRAILING_STOP_PROTECT': 0.02, # 保护2%利润(紧跟趋势)
|
||||
|
||||
# 最小持仓时间锁:立即取消!山寨币30分钟可能暴涨暴跌50%
|
||||
'MIN_HOLD_TIME_SEC': 0, # 取消持仓时间锁
|
||||
|
|
|
|||
|
|
@ -609,19 +609,34 @@ class PositionManager:
|
|||
# 兼容百分比形式和比例形式
|
||||
if take_profit_1_pct_margin is not None and take_profit_1_pct_margin > 1:
|
||||
take_profit_1_pct_margin = take_profit_1_pct_margin / 100.0
|
||||
# 计算第一目标止盈价(基于保证金,默认15%)
|
||||
|
||||
# 计算基于保证金的止盈距离
|
||||
tp1_distance = 0.0
|
||||
if margin_usdt and margin_usdt > 0 and quantity > 0:
|
||||
take_profit_1_amount = margin_usdt * take_profit_1_pct_margin
|
||||
tp1_distance = take_profit_1_amount / quantity
|
||||
|
||||
# ⚠️ 2026-02-10优化:确保TP1至少有 1.2倍 的盈亏比 (相对于止损距离)
|
||||
# 避免在高波动(宽止损)情况下,固定保证金比例止盈导致盈亏比过低
|
||||
if stop_distance_for_tp is not None and stop_distance_for_tp > 0:
|
||||
min_rr_for_tp1 = config.TRADING_CONFIG.get('MIN_RR_FOR_TP1', 1.2)
|
||||
min_tp1_distance = stop_distance_for_tp * min_rr_for_tp1
|
||||
if min_tp1_distance > tp1_distance:
|
||||
logger.info(f"{symbol} [优化] TP1距离 ({tp1_distance:.4f}) 小于 {min_rr_for_tp1}倍止损距离 ({min_tp1_distance:.4f}),已自动调整以保证盈亏比")
|
||||
tp1_distance = min_tp1_distance
|
||||
|
||||
# 计算最终TP1价格
|
||||
if tp1_distance > 0:
|
||||
if side == 'BUY':
|
||||
take_profit_1 = entry_price + (take_profit_1_amount / quantity) # 第一目标止盈(默认15%)
|
||||
take_profit_1 = entry_price + tp1_distance
|
||||
else:
|
||||
take_profit_1 = entry_price - (take_profit_1_amount / quantity) # 第一目标止盈(默认15%)
|
||||
take_profit_1 = entry_price - tp1_distance
|
||||
else:
|
||||
# 如果无法计算保证金,回退到盈亏比1:1
|
||||
# 如果无法计算(极少情况),回退到盈亏比1:1
|
||||
if side == 'BUY':
|
||||
take_profit_1 = entry_price + (entry_price - stop_loss_price) # 盈亏比1:1
|
||||
take_profit_1 = entry_price + (entry_price - stop_loss_price)
|
||||
else:
|
||||
take_profit_1 = entry_price - (stop_loss_price - entry_price) # 盈亏比1:1
|
||||
take_profit_1 = entry_price - (stop_loss_price - entry_price)
|
||||
take_profit_2 = take_profit_price
|
||||
|
||||
# 记录到数据库(只有在订单真正成交后才保存)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user