This commit is contained in:
薇薇安 2026-01-27 08:32:29 +08:00
parent 9e0f180229
commit 88ed3bfab4
5 changed files with 32 additions and 28 deletions

View File

@ -805,14 +805,14 @@ class ConfigManager:
'MIN_CHANGE_PERCENT': eff_get('MIN_CHANGE_PERCENT', 2.0), 'MIN_CHANGE_PERCENT': eff_get('MIN_CHANGE_PERCENT', 2.0),
# 风险控制 # 风险控制
'STOP_LOSS_PERCENT': eff_get('STOP_LOSS_PERCENT', 0.10), # 默认10% 'STOP_LOSS_PERCENT': eff_get('STOP_LOSS_PERCENT', 0.12), # 默认12%(2026-01-27优化:收紧止损,减少单笔亏损)
'TAKE_PROFIT_PERCENT': eff_get('TAKE_PROFIT_PERCENT', 0.30), # 默认30%(降低止盈目标,更容易触发平仓) 'TAKE_PROFIT_PERCENT': eff_get('TAKE_PROFIT_PERCENT', 0.20), # 默认20%(2026-01-27优化:降低止盈目标,更容易触发,提升止盈单比例)
'MIN_STOP_LOSS_PRICE_PCT': eff_get('MIN_STOP_LOSS_PRICE_PCT', 0.02), # 默认2% 'MIN_STOP_LOSS_PRICE_PCT': eff_get('MIN_STOP_LOSS_PRICE_PCT', 0.02), # 默认2%
'MIN_TAKE_PROFIT_PRICE_PCT': eff_get('MIN_TAKE_PROFIT_PRICE_PCT', 0.02), # 默认2%(防止ATR过小时计算出不切实际的微小止盈距离) 'MIN_TAKE_PROFIT_PRICE_PCT': eff_get('MIN_TAKE_PROFIT_PRICE_PCT', 0.02), # 默认2%(防止ATR过小时计算出不切实际的微小止盈距离)
'USE_ATR_STOP_LOSS': eff_get('USE_ATR_STOP_LOSS', True), # 是否使用ATR动态止损 'USE_ATR_STOP_LOSS': eff_get('USE_ATR_STOP_LOSS', True), # 是否使用ATR动态止损
'ATR_STOP_LOSS_MULTIPLIER': eff_get('ATR_STOP_LOSS_MULTIPLIER', 2.0), # ATR止损倍数2.0(容忍山寨币高波动) 'ATR_STOP_LOSS_MULTIPLIER': eff_get('ATR_STOP_LOSS_MULTIPLIER', 2.0), # ATR止损倍数2.0(容忍山寨币高波动)
'ATR_TAKE_PROFIT_MULTIPLIER': eff_get('ATR_TAKE_PROFIT_MULTIPLIER', 4.0), # ATR止盈倍数4.0(配合RISK_REWARD_RATIO 4.0) 'ATR_TAKE_PROFIT_MULTIPLIER': eff_get('ATR_TAKE_PROFIT_MULTIPLIER', 3.0), # ATR止盈倍数3.0(2026-01-27优化:降低,更容易触发)
'RISK_REWARD_RATIO': eff_get('RISK_REWARD_RATIO', 4.0), # 盈亏比4:1(山寨币必须追求大赢家) 'RISK_REWARD_RATIO': eff_get('RISK_REWARD_RATIO', 3.0), # 盈亏比3:1(2026-01-27优化:降低,更容易触发,保证胜率)
'ATR_PERIOD': eff_get('ATR_PERIOD', 14), # ATR计算周期 'ATR_PERIOD': eff_get('ATR_PERIOD', 14), # ATR计算周期
'USE_DYNAMIC_ATR_MULTIPLIER': eff_get('USE_DYNAMIC_ATR_MULTIPLIER', False), # 是否根据波动率动态调整ATR倍数 'USE_DYNAMIC_ATR_MULTIPLIER': eff_get('USE_DYNAMIC_ATR_MULTIPLIER', False), # 是否根据波动率动态调整ATR倍数
'ATR_MULTIPLIER_MIN': eff_get('ATR_MULTIPLIER_MIN', 1.5), # 动态ATR倍数最小值 'ATR_MULTIPLIER_MIN': eff_get('ATR_MULTIPLIER_MIN', 1.5), # 动态ATR倍数最小值
@ -842,9 +842,9 @@ class ConfigManager:
'USE_DYNAMIC_LEVERAGE': eff_get('USE_DYNAMIC_LEVERAGE', True), 'USE_DYNAMIC_LEVERAGE': eff_get('USE_DYNAMIC_LEVERAGE', True),
'MAX_LEVERAGE': eff_get('MAX_LEVERAGE', 15), # 降低到15,更保守,配合更大的保证金 'MAX_LEVERAGE': eff_get('MAX_LEVERAGE', 15), # 降低到15,更保守,配合更大的保证金
# 移动止损:默认关闭(避免过早截断利润,让利润奔跑) # 移动止损:默认关闭(避免过早截断利润,让利润奔跑)
'USE_TRAILING_STOP': eff_get('USE_TRAILING_STOP', False), 'USE_TRAILING_STOP': eff_get('USE_TRAILING_STOP', True), # 默认启用(2026-01-27优化:启用移动止损,保护利润)
'TRAILING_STOP_ACTIVATION': eff_get('TRAILING_STOP_ACTIVATION', 0.10), # 默认10%(给趋势更多空间) 'TRAILING_STOP_ACTIVATION': eff_get('TRAILING_STOP_ACTIVATION', 0.20), # 默认20%(2026-01-27优化:与第一目标止盈一致)
'TRAILING_STOP_PROTECT': eff_get('TRAILING_STOP_PROTECT', 0.05), # 默认5%(保护更多利润) 'TRAILING_STOP_PROTECT': eff_get('TRAILING_STOP_PROTECT', 0.10), # 默认10%(2026-01-27优化:给回撤足够空间)
# 最小持仓时间锁(强制波段持仓纪律,避免分钟级平仓) # 最小持仓时间锁(强制波段持仓纪律,避免分钟级平仓)
'MIN_HOLD_TIME_SEC': eff_get('MIN_HOLD_TIME_SEC', 1800), # 默认30分钟(1800秒) 'MIN_HOLD_TIME_SEC': eff_get('MIN_HOLD_TIME_SEC', 1800), # 默认30分钟(1800秒)

View File

@ -75,12 +75,13 @@ const ConfigPanel = () => {
const presets = { const presets = {
altcoin: { altcoin: {
name: '⭐山寨币狙击', name: '⭐山寨币狙击',
desc: '高盈亏比(4:1)+ 宽止损(2.0×ATR)+ 移动止损保护 + 严格流动性筛选。期望胜率35%,每笔+0.75%。', desc: '合理盈亏比(3:1)+ 宽止损(2.0×ATR)+ 移动止损保护 + 严格流动性筛选。2026-01-27优化:让收益率真实,胜率正常化。期望胜率40%+,盈亏比1.5:1+。',
configs: { configs: {
ATR_STOP_LOSS_MULTIPLIER: 2.0, STOP_LOSS_PERCENT: 15.0, RISK_REWARD_RATIO: 4.0, // 2026-01-27优化:让收益率真实,胜率正常化
ATR_TAKE_PROFIT_MULTIPLIER: 4.0, TAKE_PROFIT_PERCENT: 30.0, MIN_HOLD_TIME_SEC: 0, ATR_STOP_LOSS_MULTIPLIER: 2.0, STOP_LOSS_PERCENT: 12.0, RISK_REWARD_RATIO: 3.0,
ATR_TAKE_PROFIT_MULTIPLIER: 3.0, TAKE_PROFIT_PERCENT: 20.0, MIN_HOLD_TIME_SEC: 0,
USE_FIXED_RISK_SIZING: true, FIXED_RISK_PERCENT: 1.0, USE_FIXED_RISK_SIZING: true, FIXED_RISK_PERCENT: 1.0,
USE_TRAILING_STOP: true, TRAILING_STOP_ACTIVATION: 30.0, TRAILING_STOP_PROTECT: 15.0, USE_TRAILING_STOP: true, TRAILING_STOP_ACTIVATION: 20.0, TRAILING_STOP_PROTECT: 10.0,
MAX_POSITION_PERCENT: 1.5, MAX_TOTAL_POSITION_PERCENT: 12.0, MAX_DAILY_ENTRIES: 8, MAX_POSITION_PERCENT: 1.5, MAX_TOTAL_POSITION_PERCENT: 12.0, MAX_DAILY_ENTRIES: 8,
MIN_VOLUME_24H: 30000000, MIN_VOLATILITY: 3.0, TOP_N_SYMBOLS: 8, MIN_SIGNAL_STRENGTH: 5, MIN_VOLUME_24H: 30000000, MIN_VOLATILITY: 3.0, TOP_N_SYMBOLS: 8, MIN_SIGNAL_STRENGTH: 5,
MAX_SCAN_SYMBOLS: 250, SCAN_INTERVAL: 1800, SMART_ENTRY_ENABLED: true, AUTO_TRADE_ONLY_TRENDING: true, MAX_SCAN_SYMBOLS: 250, SCAN_INTERVAL: 1800, SMART_ENTRY_ENABLED: true, AUTO_TRADE_ONLY_TRENDING: true,

View File

@ -333,23 +333,23 @@ const GlobalConfig = () => {
}, },
altcoin: { altcoin: {
name: '山寨币狙击(高盈亏比)', name: '山寨币狙击(高盈亏比)',
desc: '专为山寨币设计:宽止损(2.0倍ATR+15%固定)、高盈亏比(4:1)、移动止损保护利润、严格成交量过滤(≥3000万美元)。期望胜率35%,每笔盈利+0.75%。', desc: '专为山寨币设计:宽止损(2.0倍ATR+12%固定)、合理盈亏比(3:1)、移动止损保护利润、严格成交量过滤(≥3000万美元)。2026-01-27优化:让收益率真实,胜率正常化。期望胜率40%+,盈亏比1.5:1+。',
configs: { configs: {
// 风险控制(最关键) // 风险控制(最关键)- 2026-01-27优化:让收益率真实,胜率正常化
ATR_STOP_LOSS_MULTIPLIER: 2.0, // ATR止损2.0倍(容忍山寨币高波动) ATR_STOP_LOSS_MULTIPLIER: 2.0, // ATR止损2.0倍(容忍山寨币高波动)
STOP_LOSS_PERCENT: 15.0, // 固定止损15%(山寨币波动大) STOP_LOSS_PERCENT: 12.0, // 固定止损12%(收紧止损,减少单笔亏损)
RISK_REWARD_RATIO: 4.0, // 盈亏比4:1(追求大赢家) RISK_REWARD_RATIO: 3.0, // 盈亏比3:1(降低,更容易触发,保证胜率)
ATR_TAKE_PROFIT_MULTIPLIER: 4.0, // ATR止盈4.0倍(配合RISK_REWARD_RATIO 4.0) ATR_TAKE_PROFIT_MULTIPLIER: 3.0, // ATR止盈3.0倍(降低,更容易触发)
TAKE_PROFIT_PERCENT: 30.0, // 固定止盈30%(降低止盈目标,更容易触发平仓) TAKE_PROFIT_PERCENT: 20.0, // 固定止盈20%(降低止盈目标,更容易触发,提升止盈单比例)
MIN_HOLD_TIME_SEC: 0, // 取消持仓锁(山寨币变化快) MIN_HOLD_TIME_SEC: 0, // 取消持仓锁(山寨币变化快)
USE_FIXED_RISK_SIZING: true, // 固定风险 USE_FIXED_RISK_SIZING: true, // 固定风险
FIXED_RISK_PERCENT: 1.0, // 每笔最多亏1% FIXED_RISK_PERCENT: 1.0, // 每笔最多亏1%
USE_DYNAMIC_ATR_MULTIPLIER: false, // 不使用动态ATR USE_DYNAMIC_ATR_MULTIPLIER: false, // 不使用动态ATR
// 移动止损(必须开启) // 移动止损(必须开启)- 2026-01-27优化:与第一目标止盈一致
USE_TRAILING_STOP: true, // 启用移动止损保护利润 USE_TRAILING_STOP: true, // 启用移动止损保护利润
TRAILING_STOP_ACTIVATION: 30.0, // 盈利30%后激活 TRAILING_STOP_ACTIVATION: 20.0, // 盈利20%后激活(与第一目标止盈一致)
TRAILING_STOP_PROTECT: 15.0, // 保护15%利润 TRAILING_STOP_PROTECT: 10.0, // 保护10%利润(给回撤足够空间)
// 仓位管理 // 仓位管理
MAX_POSITION_PERCENT: 1.5, // 单笔1.5%(山寨币不加仓) MAX_POSITION_PERCENT: 1.5, // 单笔1.5%(山寨币不加仓)

View File

@ -216,14 +216,14 @@ def _get_trading_config():
'TOP_N_SYMBOLS': 8, # 选择信号最强的8个(给更多选择余地,避免错过好机会) 'TOP_N_SYMBOLS': 8, # 选择信号最强的8个(给更多选择余地,避免错过好机会)
'MAX_SCAN_SYMBOLS': 250, # 扫描前250个(增加覆盖率,从27.6%提升到46.0%) 'MAX_SCAN_SYMBOLS': 250, # 扫描前250个(增加覆盖率,从27.6%提升到46.0%)
'EXCLUDE_MAJOR_COINS': True, # 排除主流币(BTC、ETH、BNB等),专注于山寨币 'EXCLUDE_MAJOR_COINS': True, # 排除主流币(BTC、ETH、BNB等),专注于山寨币
'STOP_LOSS_PERCENT': 0.15, # 止损15%(山寨币波动大,止损要宽) 'STOP_LOSS_PERCENT': 0.12, # 止损12%(2026-01-27优化:收紧止损,减少单笔亏损)
'TAKE_PROFIT_PERCENT': 0.30, # 止盈30%(降低止盈目标,更容易触发平仓) 'TAKE_PROFIT_PERCENT': 0.20, # 止盈20%(2026-01-27优化:降低止盈目标,更容易触发,提升止盈单比例)
'MIN_STOP_LOSS_PRICE_PCT': 0.02, # 最小止损价格变动2% 'MIN_STOP_LOSS_PRICE_PCT': 0.02, # 最小止损价格变动2%
'MIN_TAKE_PROFIT_PRICE_PCT': 0.02, # 最小止盈价格变动2% 'MIN_TAKE_PROFIT_PRICE_PCT': 0.02, # 最小止盈价格变动2%
'USE_ATR_STOP_LOSS': True, # 使用ATR动态止损 'USE_ATR_STOP_LOSS': True, # 使用ATR动态止损
'ATR_STOP_LOSS_MULTIPLIER': 2.0, # ATR止损倍数2.0(容忍山寨币高波动) 'ATR_STOP_LOSS_MULTIPLIER': 2.0, # ATR止损倍数2.0(容忍山寨币高波动)
'ATR_TAKE_PROFIT_MULTIPLIER': 4.0, # ATR止盈倍数4.0(配合RISK_REWARD_RATIO 4.0) 'ATR_TAKE_PROFIT_MULTIPLIER': 3.0, # ATR止盈倍数3.0(2026-01-27优化:降低,更容易触发)
'RISK_REWARD_RATIO': 4.0, # 盈亏比4:1(山寨币必须追求大赢家) 'RISK_REWARD_RATIO': 3.0, # 盈亏比3:1(2026-01-27优化:降低,更容易触发,保证胜率)
'ATR_PERIOD': 14, # ATR计算周期14 'ATR_PERIOD': 14, # ATR计算周期14
'USE_DYNAMIC_ATR_MULTIPLIER': False, # 不使用动态ATR 'USE_DYNAMIC_ATR_MULTIPLIER': False, # 不使用动态ATR
'ATR_MULTIPLIER_MIN': 1.5, # 动态ATR倍数最小值 'ATR_MULTIPLIER_MIN': 1.5, # 动态ATR倍数最小值
@ -254,8 +254,8 @@ def _get_trading_config():
'MAX_LEVERAGE': 12, # 最大杠杆12倍,不要超过 'MAX_LEVERAGE': 12, # 最大杠杆12倍,不要超过
# 移动止损:必须开启!山寨币利润要保护 # 移动止损:必须开启!山寨币利润要保护
'USE_TRAILING_STOP': True, 'USE_TRAILING_STOP': True,
'TRAILING_STOP_ACTIVATION': 0.30, # 盈利30%后激活(山寨币波动大) 'TRAILING_STOP_ACTIVATION': 0.20, # 盈利20%后激活(2026-01-27优化:与第一目标止盈一致)
'TRAILING_STOP_PROTECT': 0.15, # 保护15%利润(给回撤足够空间) 'TRAILING_STOP_PROTECT': 0.10, # 保护10%利润(2026-01-27优化:给回撤足够空间)
# 最小持仓时间锁:立即取消!山寨币30分钟可能暴涨暴跌50% # 最小持仓时间锁:立即取消!山寨币30分钟可能暴涨暴跌50%
'MIN_HOLD_TIME_SEC': 0, # 取消持仓时间锁 'MIN_HOLD_TIME_SEC': 0, # 取消持仓时间锁

View File

@ -750,10 +750,13 @@ class RiskManager:
# 重新选择最终的止损价(包括技术止损) # 重新选择最终的止损价(包括技术止损)
# 仍保持“更宽松/更远”的选择规则 # 仍保持“更宽松/更远”的选择规则
if side == 'BUY': if side == 'BUY':
final_stop_loss = min(p[1] for p in candidate_prices) # 做多:选择更高的止损价(更接近入场价,更紧)
final_stop_loss = max(p[1] for p in candidate_prices)
selected_method = [p[0] for p in candidate_prices if p[1] == final_stop_loss][0] selected_method = [p[0] for p in candidate_prices if p[1] == final_stop_loss][0]
else: else:
final_stop_loss = max(p[1] for p in candidate_prices) # ⚠️ 关键修复:做空必须选择更低的止损价(更接近入场价,更紧)
# 注意:对于SELL单,止损价高于入场价,所以"更低的止损价"意味着更接近入场价
final_stop_loss = min(p[1] for p in candidate_prices)
selected_method = [p[0] for p in candidate_prices if p[1] == final_stop_loss][0] selected_method = [p[0] for p in candidate_prices if p[1] == final_stop_loss][0]
logger.info( logger.info(