From 01c11d62f6296fa3539c5f562daa9e8b5b5101a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=96=87=E8=96=87=E5=AE=89?= Date: Fri, 13 Feb 2026 07:35:23 +0800 Subject: [PATCH] 1 --- backend/config_manager.py | 2 + frontend/src/components/GlobalConfig.jsx | 67 ++++++++++++++++++++++-- trading_system/config.py | 9 ++-- trading_system/risk_manager.py | 7 +-- 4 files changed, 74 insertions(+), 11 deletions(-) diff --git a/backend/config_manager.py b/backend/config_manager.py index b03779d..8d32153 100644 --- a/backend/config_manager.py +++ b/backend/config_manager.py @@ -863,6 +863,8 @@ class ConfigManager: 'LEVERAGE': eff_get('LEVERAGE', 10), 'USE_DYNAMIC_LEVERAGE': eff_get('USE_DYNAMIC_LEVERAGE', True), 'MAX_LEVERAGE': eff_get('MAX_LEVERAGE', 20), # 动态杠杆上限 20,配合单笔仓位提高收益 + 'MIN_LEVERAGE': eff_get('MIN_LEVERAGE', 8), # 动态杠杆下限,不低于此值(之前盈利阶段多为 8x,避免被压到 2–4x 导致单笔盈利过少) + 'MAX_LEVERAGE_SMALL_CAP': eff_get('MAX_LEVERAGE_SMALL_CAP', 8), # 高波动/小众币最大杠杆,默认 8 与之前盈利阶段一致 # 移动止损:默认关闭(避免过早截断利润,让利润奔跑) 'USE_TRAILING_STOP': eff_get('USE_TRAILING_STOP', True), # 默认启用(2026-01-27优化:启用移动止损,保护利润) 'TRAILING_STOP_ACTIVATION': eff_get('TRAILING_STOP_ACTIVATION', 0.05), # 默认5%(2026-01-27优化:更早保护利润,避免回吐) diff --git a/frontend/src/components/GlobalConfig.jsx b/frontend/src/components/GlobalConfig.jsx index b86d078..8b15c01 100644 --- a/frontend/src/components/GlobalConfig.jsx +++ b/frontend/src/components/GlobalConfig.jsx @@ -389,6 +389,8 @@ const GlobalConfig = () => { MAX_OPEN_POSITIONS: 4, LEVERAGE: 10, MAX_LEVERAGE: 20, // 动态杠杆上限 20,配合单笔仓位提高收益 + MIN_LEVERAGE: 8, // 动态杠杆下限 8,与之前盈利阶段一致,避免被压到 2–4x + MAX_LEVERAGE_SMALL_CAP: 8, // 高波动币也允许 8x,与之前一致 USE_DYNAMIC_LEVERAGE: true, MIN_VOLUME_24H: 10000000, @@ -469,6 +471,60 @@ const GlobalConfig = () => { MIN_SIGNAL_STRENGTH: 8, }, }, + classic_profit: { + name: '之前盈利风格', + desc: '对齐 2 月初有盈利时的下单方式:固定 8 倍杠杆、单笔 12%、每笔风险 2.5%,不做动态降杠杆,单笔保证金与盈利空间更接近当时。', + configs: { + LEVERAGE: 8, + USE_DYNAMIC_LEVERAGE: false, // 固定 8x,与之前一致 + MIN_LEVERAGE: 8, + MAX_LEVERAGE: 20, + MAX_POSITION_PERCENT: 0.12, + MAX_TOTAL_POSITION_PERCENT: 0.45, + FIXED_RISK_PERCENT: 0.025, // 略高于 2%,单笔保证金更接近之前 + MAX_LEVERAGE_SMALL_CAP: 8, + ATR_STOP_LOSS_MULTIPLIER: 3.0, + RISK_REWARD_RATIO: 3.0, + TAKE_PROFIT_1_PERCENT: 0.2, + TAKE_PROFIT_PERCENT: 0.30, + MIN_RR_FOR_TP1: 1.5, + AUTO_TRADE_ALLOW_4H_NEUTRAL: false, + MAX_RSI_FOR_LONG: 65, + MIN_RSI_FOR_SHORT: 30, + SYMBOL_LOSS_COOLDOWN_ENABLED: true, + SYMBOL_MAX_CONSECUTIVE_LOSSES: 2, + SYMBOL_LOSS_COOLDOWN_SEC: 3600, + BETA_FILTER_ENABLED: true, + MIN_SIGNAL_STRENGTH: 8, + }, + }, + classic_profit_amplify: { + name: '之前盈利·放大', + desc: '在「之前盈利风格」基础上把杠杆提到 10 倍:同保证金下名义更大,盈利与亏损都会按比例放大。适合想进一步放大收益时使用。', + configs: { + LEVERAGE: 10, + USE_DYNAMIC_LEVERAGE: false, // 固定 10x + MIN_LEVERAGE: 10, + MAX_LEVERAGE: 20, + MAX_POSITION_PERCENT: 0.12, + MAX_TOTAL_POSITION_PERCENT: 0.45, + FIXED_RISK_PERCENT: 0.025, + MAX_LEVERAGE_SMALL_CAP: 10, + ATR_STOP_LOSS_MULTIPLIER: 3.0, + RISK_REWARD_RATIO: 3.0, + TAKE_PROFIT_1_PERCENT: 0.2, + TAKE_PROFIT_PERCENT: 0.30, + MIN_RR_FOR_TP1: 1.5, + AUTO_TRADE_ALLOW_4H_NEUTRAL: false, + MAX_RSI_FOR_LONG: 65, + MIN_RSI_FOR_SHORT: 30, + SYMBOL_LOSS_COOLDOWN_ENABLED: true, + SYMBOL_MAX_CONSECUTIVE_LOSSES: 2, + SYMBOL_LOSS_COOLDOWN_SEC: 3600, + BETA_FILTER_ENABLED: true, + MIN_SIGNAL_STRENGTH: 8, + }, + }, aggressive: { name: '激进高频', desc: '晚间波动大时使用,交易频率高,止损较紧但止盈合理(盈亏比1.5:1)', @@ -536,12 +592,13 @@ const GlobalConfig = () => { LEVERAGE: { value: 10, type: 'number', category: 'risk', description: '基础杠杆倍数。' }, MAX_POSITION_PERCENT: { value: 0.12, type: 'number', category: 'risk', description: '单笔最大保证金占可用资金比例(如 0.12=12%),加大可提高单笔盈利。' }, MAX_LEVERAGE: { value: 20, type: 'number', category: 'risk', description: '动态杠杆上限(如 20 表示最高 20 倍),配合单笔仓位提高收益。' }, + MIN_LEVERAGE: { value: 8, type: 'number', category: 'risk', description: '动态杠杆下限(如 8 表示不低于 8 倍)。之前盈利阶段多为 8x,避免被压到 2–4x 导致单笔盈利过少。' }, + MAX_LEVERAGE_SMALL_CAP: { value: 8, type: 'number', category: 'risk', description: '高波动/小众币最大允许杠杆(与之前盈利阶段一致)。' }, RISK_REWARD_RATIO: { value: 3, type: 'number', category: 'risk', description: '盈亏比目标(用于计算动态止盈止损,建议 3:1)。' }, ATR_TAKE_PROFIT_MULTIPLIER: { value: 1.5, type: 'number', category: 'risk', description: 'ATR 止盈倍数。' }, ATR_STOP_LOSS_MULTIPLIER: { value: 3, type: 'number', category: 'risk', description: 'ATR 止损倍数(2026-02-12:3 减少噪音止损)。' }, USE_FIXED_RISK_SIZING: { value: false, type: 'boolean', category: 'risk', description: '是否使用固定风险仓位计算(基于止损距离和账户余额)。' }, FIXED_RISK_PERCENT: { value: 0.01, type: 'number', category: 'risk', description: '每笔交易固定风险百分比(如 0.01=1%)。' }, - MAX_LEVERAGE_SMALL_CAP: { value: 3, type: 'number', category: 'risk', description: '小市值/山寨币最大允许杠杆。' }, } const loadConfigs = async () => { @@ -1040,18 +1097,20 @@ const GlobalConfig = () => { altcoin: { group: 'altcoin', tag: '当前推荐' }, more_opportunities: { group: 'altcoin', tag: '增加机会' }, profit_scale: { group: 'altcoin', tag: '盈利放大' }, + classic_profit: { group: 'altcoin', tag: '之前盈利' }, + classic_profit_amplify: { group: 'altcoin', tag: '杠杆放大' }, swing: { group: 'backup', tag: '纯限价' }, strict: { group: 'backup', tag: '精选低频' }, conservative: { group: 'backup', tag: '保守' }, } - // 快速方案:当前推荐(含增加机会/盈利放大)+ 备选 + // 快速方案:当前推荐(含增加机会/盈利放大/之前盈利)+ 备选 const presetGroups = [ { key: 'altcoin', title: '当前推荐 · 山寨币策略', - desc: '与当前策略一致。想增加下单机会可点「增加机会」:允许 4H 中性、放宽大盘/RSI 过滤。盈利阶段想放大收益可点「盈利放大」。', - presetKeys: ['altcoin', 'more_opportunities', 'profit_scale'], + desc: '与当前策略一致。想增加下单机会可点「增加机会」;盈利阶段可点「盈利放大」;想恢复 2 月初有盈利时的下单风格可点「之前盈利」;在之前盈利基础上再放大可点「杠杆放大」(10x)。', + presetKeys: ['altcoin', 'more_opportunities', 'profit_scale', 'classic_profit', 'classic_profit_amplify'], }, { key: 'backup', diff --git a/trading_system/config.py b/trading_system/config.py index c2d347b..1f68ec2 100644 --- a/trading_system/config.py +++ b/trading_system/config.py @@ -254,12 +254,13 @@ def _get_trading_config(): # ===== 仓位管理优化(山寨币专属)===== 'USE_FIXED_RISK_SIZING': True, # 固定每笔风险,避免亏损扩大 'FIXED_RISK_PERCENT': 0.01, # 每笔最多亏总资金1%(山寨币风险高) - 'MAX_LEVERAGE_SMALL_CAP': 4, # 小众币最大杠杆4倍(保持不变) + 'MAX_LEVERAGE_SMALL_CAP': 8, # 高波动/小众币最大杠杆(与之前盈利阶段一致) + 'MIN_LEVERAGE': 8, # 动态杠杆下限,避免被压到 2–4x 导致单笔盈利过少 'ATR_LEVERAGE_REDUCTION_THRESHOLD': 0.05, # ATR超过5%时降低杠杆 - 'LEVERAGE': 4, # 基础杠杆4倍(保持不变) - 'USE_DYNAMIC_LEVERAGE': True, # 开启动态杠杆(基于止损宽度自动调整) + 'LEVERAGE': 8, # 基础杠杆(与之前盈利阶段一致) + 'USE_DYNAMIC_LEVERAGE': True, # 开启动态杠杆(基于止损宽度自动调整,但不低于 MIN_LEVERAGE) 'MAX_SINGLE_TRADE_LOSS_PERCENT': 20.0, # 单笔交易最大本金亏损率(20%),用于限制杠杆 - 'MAX_LEVERAGE': 12, # 最大杠杆12倍,不要超过 + 'MAX_LEVERAGE': 20, # 最大杠杆 # 移动止损:必须开启!山寨币利润要保护 'USE_TRAILING_STOP': True, 'TRAILING_STOP_ACTIVATION': 0.10, # 盈利10%后激活(更早锁定利润) diff --git a/trading_system/risk_manager.py b/trading_system/risk_manager.py index e627d95..b7968bd 100644 --- a/trading_system/risk_manager.py +++ b/trading_system/risk_manager.py @@ -308,7 +308,7 @@ class RiskManager: if atr and entry_price and entry_price > 0: atr_percent = atr / entry_price atr_leverage_reduction_threshold = config.TRADING_CONFIG.get('ATR_LEVERAGE_REDUCTION_THRESHOLD', 0.05) # 5% - max_leverage_small_cap = config.TRADING_CONFIG.get('MAX_LEVERAGE_SMALL_CAP', 5) + max_leverage_small_cap = config.TRADING_CONFIG.get('MAX_LEVERAGE_SMALL_CAP', 8) # 默认 8,与之前盈利阶段一致 if atr_percent >= atr_leverage_reduction_threshold: atr_limit_leverage = max_leverage_small_cap @@ -351,8 +351,9 @@ class RiskManager: max_config_leverage = config.TRADING_CONFIG.get('MAX_LEVERAGE', 20) final_leverage = min(final_leverage, max_config_leverage) - # 至少为1倍 - final_leverage = max(1, final_leverage) + # 杠杆下限:不低于 MIN_LEVERAGE(之前盈利阶段多为固定 8x,下限 8 可避免被压到 2–4x 导致单笔盈利过少) + min_leverage = max(1, int(config.TRADING_CONFIG.get('MIN_LEVERAGE', 1) or 1)) + final_leverage = max(min_leverage, final_leverage) # 检查交易对最大杠杆限制 if symbol: