diff --git a/backend/config_manager.py b/backend/config_manager.py index b40ed46..0024190 100644 --- a/backend/config_manager.py +++ b/backend/config_manager.py @@ -819,11 +819,11 @@ class ConfigManager: # - 提高最小价格变动百分比(从2%到2.5%),避免止损过紧 'STOP_LOSS_PERCENT': eff_get('STOP_LOSS_PERCENT', 0.12), # 默认12%(保证金百分比) 'TAKE_PROFIT_PERCENT': eff_get('TAKE_PROFIT_PERCENT', 0.10), # 默认10%(第二目标/单目标止盈) - 'TAKE_PROFIT_1_PERCENT': eff_get('TAKE_PROFIT_1_PERCENT', 0.15), # 默认15%(分步止盈第一目标,提高整体盈亏比) + 'TAKE_PROFIT_1_PERCENT': eff_get('TAKE_PROFIT_1_PERCENT', 0.20), # 默认20%(2026-02-12优化:拉高第一目标改善盈亏比) 'MIN_STOP_LOSS_PRICE_PCT': eff_get('MIN_STOP_LOSS_PRICE_PCT', 0.025), # 默认2.5%(2026-01-29优化:从2%提高到2.5%,给波动更多空间) '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动态止损 - 'ATR_STOP_LOSS_MULTIPLIER': eff_get('ATR_STOP_LOSS_MULTIPLIER', 2.0), # ATR止损倍数2.0(2026-01-29优化:从1.5提高到2.0,减少被正常波动扫出) + 'ATR_STOP_LOSS_MULTIPLIER': eff_get('ATR_STOP_LOSS_MULTIPLIER', 3.0), # ATR止损倍数3.0(2026-02-12优化:减少噪音止损,配合止盈拉远) 'ATR_TAKE_PROFIT_MULTIPLIER': eff_get('ATR_TAKE_PROFIT_MULTIPLIER', 2.0), # ATR止盈倍数2.0(2026-01-27优化:降低止盈目标,更容易触发) 'RISK_REWARD_RATIO': eff_get('RISK_REWARD_RATIO', 3.0), # 盈亏比3:1(2026-01-27优化:降低,更容易触发,保证胜率) 'ATR_PERIOD': eff_get('ATR_PERIOD', 14), # ATR计算周期 @@ -887,7 +887,7 @@ class ConfigManager: 'BETA_FILTER_ENABLED': eff_get('BETA_FILTER_ENABLED', True), # 大盘共振过滤:BTC/ETH下跌时屏蔽多单 'BETA_FILTER_THRESHOLD': eff_get('BETA_FILTER_THRESHOLD', -0.005), # -0.5%(2026-01-27优化:更敏感地过滤大盘风险,15分钟内跌幅超过0.5%即屏蔽多单) # RSI / 24h 涨跌幅过滤(避免追高杀跌) - 'MAX_RSI_FOR_LONG': eff_get('MAX_RSI_FOR_LONG', 70), # 做多时 RSI 超过此值则不开多 + 'MAX_RSI_FOR_LONG': eff_get('MAX_RSI_FOR_LONG', 65), # 做多时 RSI 超过此值则不开多(2026-02-12:65 避免追高) 'MAX_CHANGE_PERCENT_FOR_LONG': eff_get('MAX_CHANGE_PERCENT_FOR_LONG', 25), # 做多时 24h 涨跌幅超过此值则不开多 'MIN_RSI_FOR_SHORT': eff_get('MIN_RSI_FOR_SHORT', 30), # 做空时 RSI 低于此值则不做空 'MAX_CHANGE_PERCENT_FOR_SHORT': eff_get('MAX_CHANGE_PERCENT_FOR_SHORT', 10), # 做空时 24h 涨跌幅超过此值则不做空 @@ -911,7 +911,8 @@ class ConfigManager: 'SYMBOL_LOSS_COOLDOWN_ENABLED': eff_get('SYMBOL_LOSS_COOLDOWN_ENABLED', True), 'SYMBOL_MAX_CONSECUTIVE_LOSSES': eff_get('SYMBOL_MAX_CONSECUTIVE_LOSSES', 2), 'SYMBOL_LOSS_COOLDOWN_SEC': eff_get('SYMBOL_LOSS_COOLDOWN_SEC', 3600), - + # 第一目标止盈最小盈亏比(相对止损距离) + 'MIN_RR_FOR_TP1': eff_get('MIN_RR_FOR_TP1', 1.5), # 2026-02-12:保证 TP1 至少 1.5 倍止损距离,改善盈亏比 } def _sync_to_redis(self): diff --git a/backend/sync_global_config_defaults.py b/backend/sync_global_config_defaults.py index 756c3aa..6d004ba 100644 --- a/backend/sync_global_config_defaults.py +++ b/backend/sync_global_config_defaults.py @@ -22,16 +22,18 @@ if str(backend_dir) not in sys.path: # 需要同步的缺省项(仅插入数据库中不存在的 key) DEFAULTS_TO_SYNC = [ - {"config_key": "MAX_RSI_FOR_LONG", "config_value": "70", "config_type": "number", "category": "strategy", - "description": "做多时 RSI 超过此值则不开多(避免超买区追多)。2026-01-31新增。"}, + {"config_key": "MAX_RSI_FOR_LONG", "config_value": "65", "config_type": "number", "category": "strategy", + "description": "做多时 RSI 超过此值则不开多(2026-02-12:65 避免追高)。"}, {"config_key": "MAX_CHANGE_PERCENT_FOR_LONG", "config_value": "25", "config_type": "number", "category": "strategy", "description": "做多时 24h 涨跌幅超过此值则不开多(避免追大涨)。单位:百分比数值,如 25 表示 25%。2026-01-31新增。"}, {"config_key": "MIN_RSI_FOR_SHORT", "config_value": "30", "config_type": "number", "category": "strategy", "description": "做空时 RSI 低于此值则不做空(避免深超卖反弹)。2026-01-31新增。"}, {"config_key": "MAX_CHANGE_PERCENT_FOR_SHORT", "config_value": "10", "config_type": "number", "category": "strategy", "description": "做空时 24h 涨跌幅超过此值则不做空(24h 仍大涨时不做空)。单位:百分比数值。2026-01-31新增。"}, - {"config_key": "TAKE_PROFIT_1_PERCENT", "config_value": "0.15", "config_type": "number", "category": "strategy", - "description": "分步止盈第一目标(保证金百分比,如 0.15=15%)。第一目标触发后了结50%仓位,剩余追求第二目标。"}, + {"config_key": "TAKE_PROFIT_1_PERCENT", "config_value": "0.2", "config_type": "number", "category": "strategy", + "description": "分步止盈第一目标(保证金百分比,如 0.2=20%)。2026-02-12 提高以改善盈亏比。"}, + {"config_key": "MIN_RR_FOR_TP1", "config_value": "1.5", "config_type": "number", "category": "strategy", + "description": "第一目标止盈相对止损的最小盈亏比(TP1 至少为止损距离的 1.5 倍)。2026-02-12 新增。"}, {"config_key": "SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT", "config_value": "8", "config_type": "number", "category": "scan", "description": "智能补单:多返回的候选数量。当前 TOP_N 中部分因冷却等被跳过时,仍会尝试这批额外候选,避免无单可下。"}, {"config_key": "BETA_FILTER_ENABLED", "config_value": "true", "config_type": "boolean", "category": "strategy", diff --git a/frontend/src/components/GlobalConfig.jsx b/frontend/src/components/GlobalConfig.jsx index d99505e..815e283 100644 --- a/frontend/src/components/GlobalConfig.jsx +++ b/frontend/src/components/GlobalConfig.jsx @@ -8,11 +8,12 @@ import './ConfigPanel.css' // 复用 ConfigPanel 的样式 // 复用 ConfigPanel 的 ConfigItem 组件 // 部分配置项使用“数值原样”(如 RSI 0–100、24h 涨跌幅 25 表示 25%),不做 0–1 比例转换 -const NUMBER_AS_IS_KEYS = new Set([ + const NUMBER_AS_IS_KEYS = new Set([ 'MAX_RSI_FOR_LONG', 'MIN_RSI_FOR_SHORT', 'MAX_CHANGE_PERCENT_FOR_LONG', 'MAX_CHANGE_PERCENT_FOR_SHORT', + 'MIN_RR_FOR_TP1', ]) // 配置项中文标签(便于识别) const KEY_LABELS = { @@ -27,6 +28,8 @@ const KEY_LABELS = { SYMBOL_LOSS_COOLDOWN_SEC: '冷却时间(秒)', RSI_EXTREME_REVERSE_ENABLED: 'RSI 极端反向(超买反空/超卖反多)', RSI_EXTREME_REVERSE_ONLY_NEUTRAL_4H: 'RSI 反向仅允许 4H 中性', + MIN_RR_FOR_TP1: '第一目标最小盈亏比(相对止损)', + AUTO_TRADE_ALLOW_4H_NEUTRAL: '允许 4H 中性时自动交易', } const ConfigItem = ({ label, config, onUpdate, disabled }) => { @@ -354,58 +357,61 @@ const GlobalConfig = () => { } }, altcoin: { - name: '山寨币狙击(高盈亏比)', - desc: '专为山寨币设计:宽止损(2.0倍ATR+12%固定)、合理盈亏比(3:1)、移动止损保护利润、严格成交量过滤(≥3000万美元)。2026-01-27优化:让收益率真实,胜率正常化。期望胜率40%+,盈亏比1.5:1+。', + name: '山寨币策略(当前推荐)', + desc: '与 2026-02-12 策略一致:4H 中性不自动交易、做多 RSI≤65、第一目标止盈 20%、止损 3×ATR、盈亏比 3:1、同品种连亏冷却。', configs: { - // 风险控制(最关键)- 2026-01-27优化:让收益率真实,胜率正常化 - ATR_STOP_LOSS_MULTIPLIER: 1.5, // ATR止损1.5倍(2026-01-27优化:收紧止损,减少单笔亏损) - STOP_LOSS_PERCENT: 12.0, // 固定止损12%(收紧止损,减少单笔亏损) - RISK_REWARD_RATIO: 3.0, // 盈亏比3:1(降低,更容易触发,保证胜率) - ATR_TAKE_PROFIT_MULTIPLIER: 2.0, // ATR止盈2.0倍(2026-01-27优化:降低止盈目标,更容易触发) - TAKE_PROFIT_PERCENT: 20.0, // 固定止盈20%(降低止盈目标,更容易触发,提升止盈单比例) - MIN_HOLD_TIME_SEC: 0, // 取消持仓锁(山寨币变化快) - USE_FIXED_RISK_SIZING: true, // 固定风险 - FIXED_RISK_PERCENT: 1.0, // 每笔最多亏1% - USE_DYNAMIC_ATR_MULTIPLIER: false, // 不使用动态ATR - - // 移动止损(必须开启)- 2026-01-27优化:与第一目标止盈一致 - USE_TRAILING_STOP: true, // 启用移动止损保护利润 - TRAILING_STOP_ACTIVATION: 20.0, // 盈利20%后激活(与第一目标止盈一致) - TRAILING_STOP_PROTECT: 10.0, // 保护10%利润(给回撤足够空间) - - // 仓位管理 - MAX_POSITION_PERCENT: 1.5, // 单笔1.5%(山寨币不加仓) - MAX_TOTAL_POSITION_PERCENT: 12.0, // 总仓位12% - MAX_DAILY_ENTRIES: 8, // 每日最多8笔(增加交易频率) - MAX_OPEN_POSITIONS: 4, // 最多4个持仓 - LEVERAGE: 8, // 基础杠杆8倍 - MAX_LEVERAGE: 12, // 最大杠杆12倍 - USE_DYNAMIC_LEVERAGE: false, // 不使用动态杠杆 - - // 品种筛选(流动性为王) - MIN_VOLUME_24H: 30000000, // 24H成交额≥3000万美元 - MIN_VOLUME_24H_STRICT: 50000000, // 严格过滤≥5000万 - MIN_VOLATILITY: 3.0, // 最小波动率3% - TOP_N_SYMBOLS: 8, // 选择信号最强的8个(给更多选择余地,避免错过好机会) - MAX_SCAN_SYMBOLS: 250, // 扫描前250个(增加覆盖率,从27.6%提升到46.0%) - MIN_SIGNAL_STRENGTH: 5, // 信号强度≥5(MACD金叉/死叉已足够,配合其他筛选) - EXCLUDE_MAJOR_COINS: true, // 排除主流币(BTC、ETH、BNB等),专注于山寨币 - - // 时间框架 - SCAN_INTERVAL: 1800, // 扫描间隔30分钟(增加交易机会) - PRIMARY_INTERVAL: '4h', // 主周期4小时 - ENTRY_INTERVAL: '1h', // 入场周期1小时 - CONFIRM_INTERVAL: '1d', // 确认周期日线 - - // 智能入场 - SMART_ENTRY_ENABLED: true, // 开启智能入场 - ENTRY_SYMBOL_COOLDOWN_SEC: 1800, // 币种冷却30分钟 - ENTRY_MAX_DRIFT_PCT_TRENDING: 0.8, // 追价偏离0.8% - ENTRY_MAX_DRIFT_PCT_RANGING: 0.3, // 震荡偏离0.3% - - // 交易控制 - AUTO_TRADE_ONLY_TRENDING: true, // 只做趋势市 - AUTO_TRADE_ALLOW_4H_NEUTRAL: true, // 允许4H中性(提高交易频率,宽止损+高盈亏比已考虑低胜率) + // 风险与止盈止损(与当前全局默认一致) + ATR_STOP_LOSS_MULTIPLIER: 3.0, // 3×ATR 减少噪音止损 + STOP_LOSS_PERCENT: 0.12, + RISK_REWARD_RATIO: 3.0, // 盈亏比 3:1 + TAKE_PROFIT_1_PERCENT: 0.2, // 第一目标止盈 20% + TAKE_PROFIT_PERCENT: 0.30, // 第二目标 30% + MIN_RR_FOR_TP1: 1.5, // 第一目标至少 1.5 倍止损距离 + MIN_HOLD_TIME_SEC: 1800, + USE_FIXED_RISK_SIZING: true, + FIXED_RISK_PERCENT: 0.02, // 每笔风险 2% + USE_DYNAMIC_ATR_MULTIPLIER: false, + + USE_TRAILING_STOP: true, + TRAILING_STOP_ACTIVATION: 0.20, + TRAILING_STOP_PROTECT: 0.10, + + MAX_POSITION_PERCENT: 0.08, + MAX_TOTAL_POSITION_PERCENT: 0.40, + MAX_DAILY_ENTRIES: 8, + MAX_OPEN_POSITIONS: 4, + LEVERAGE: 10, + MAX_LEVERAGE: 15, + USE_DYNAMIC_LEVERAGE: true, + + MIN_VOLUME_24H: 10000000, + MIN_VOLATILITY: 0.02, + TOP_N_SYMBOLS: 20, + MAX_SCAN_SYMBOLS: 500, + MIN_SIGNAL_STRENGTH: 8, + EXCLUDE_MAJOR_COINS: true, + SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT: 15, + + SCAN_INTERVAL: 1800, + PRIMARY_INTERVAL: '1h', + ENTRY_INTERVAL: '15m', + CONFIRM_INTERVAL: '4h', + + AUTO_TRADE_ONLY_TRENDING: true, + AUTO_TRADE_ALLOW_4H_NEUTRAL: false, // 4H 中性不自动交易,提升质量 + MAX_RSI_FOR_LONG: 65, // 做多不追高 + MIN_RSI_FOR_SHORT: 30, + MAX_CHANGE_PERCENT_FOR_LONG: 25, + MAX_CHANGE_PERCENT_FOR_SHORT: 10, + + SYMBOL_LOSS_COOLDOWN_ENABLED: true, + SYMBOL_MAX_CONSECUTIVE_LOSSES: 2, + SYMBOL_LOSS_COOLDOWN_SEC: 3600, + + BETA_FILTER_ENABLED: true, + BETA_FILTER_THRESHOLD: -0.005, + ENTRY_SHORT_TREND_FILTER_ENABLED: true, + MAX_TREND_MOVE_BEFORE_ENTRY: 0.05, }, }, aggressive: { @@ -452,15 +458,17 @@ const GlobalConfig = () => { // 已知全局配置项默认值(兜底:后端未返回时前端仍能显示,避免看不到新配置项) const KNOWN_GLOBAL_CONFIG_DEFAULTS = { - MAX_RSI_FOR_LONG: { value: 70, type: 'number', category: 'strategy', description: '做多时 RSI 超过此值则不开多(避免超买区追多)。2026-01-31新增。' }, + MAX_RSI_FOR_LONG: { value: 65, type: 'number', category: 'strategy', description: '做多时 RSI 超过此值则不开多(2026-02-12:65 避免追高)。' }, MAX_CHANGE_PERCENT_FOR_LONG: { value: 25, type: 'number', category: 'strategy', description: '做多时 24h 涨跌幅超过此值则不开多(避免追大涨)。单位:百分比数值,如 25 表示 25%。' }, MIN_RSI_FOR_SHORT: { value: 30, type: 'number', category: 'strategy', description: '做空时 RSI 低于此值则不做空(避免深超卖反弹)。2026-01-31新增。' }, MAX_CHANGE_PERCENT_FOR_SHORT: { value: 10, type: 'number', category: 'strategy', description: '做空时 24h 涨跌幅超过此值则不做空(24h 仍大涨时不做空)。单位:百分比数值。' }, - TAKE_PROFIT_1_PERCENT: { value: 0.15, type: 'number', category: 'strategy', description: '分步止盈第一目标(保证金百分比,如 0.15=15%)。第一目标触发后了结50%仓位。' }, + TAKE_PROFIT_1_PERCENT: { value: 0.2, type: 'number', category: 'strategy', description: '分步止盈第一目标(保证金百分比,如 0.2=20%)。2026-02-12 提高以改善盈亏比。' }, SCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENT: { value: 8, type: 'number', category: 'scan', description: '智能补单:多返回的候选数量,冷却时仍可尝试后续交易对。' }, SYMBOL_LOSS_COOLDOWN_ENABLED: { value: true, type: 'boolean', category: 'strategy', description: '是否启用同一交易对连续亏损后的冷却。' }, SYMBOL_MAX_CONSECUTIVE_LOSSES: { value: 2, type: 'number', category: 'strategy', description: '最大允许连续亏损次数(超过则禁止交易该交易对一段时间)。' }, SYMBOL_LOSS_COOLDOWN_SEC: { value: 3600, type: 'number', category: 'strategy', description: '连续亏损后的冷却时间(秒),默认1小时。' }, + MIN_RR_FOR_TP1: { value: 1.5, type: 'number', category: 'strategy', description: '第一目标止盈相对止损的最小盈亏比(如 1.5 表示 TP1 至少为止损距离的 1.5 倍)。2026-02-12 新增。' }, + AUTO_TRADE_ALLOW_4H_NEUTRAL: { value: false, type: 'boolean', category: 'strategy', description: '是否允许 4H 趋势为中性时自动交易。关闭可减少震荡扫损、提升质量(建议关闭)。' }, BETA_FILTER_ENABLED: { value: true, type: 'boolean', category: 'strategy', description: '大盘共振过滤:BTC/ETH 下跌时屏蔽多单。' }, BETA_FILTER_THRESHOLD: { value: -0.005, type: 'number', category: 'strategy', description: '大盘共振阈值(比例,如 -0.005 表示 -0.5%)。' }, RSI_EXTREME_REVERSE_ENABLED: { value: false, type: 'boolean', category: 'strategy', description: '开启后:原信号做多但 RSI 超买(≥做多上限)时改为做空;原信号做空但 RSI 超卖(≤做空下限)时改为做多。属均值回归思路,可填补超买超卖时不下单的空置;默认关闭。' }, @@ -470,9 +478,9 @@ const GlobalConfig = () => { TRAILING_STOP_ACTIVATION: { value: 0.20, type: 'number', category: 'risk', description: '移动止损激活阈值(盈利达到此比例后激活,如 20.0=20%)。' }, TRAILING_STOP_PROTECT: { value: 0.10, type: 'number', category: 'risk', description: '移动止损保护阈值(回撤至此比例时触发止损,如 10.0=10%)。' }, LEVERAGE: { value: 5, type: 'number', category: 'risk', description: '基础杠杆倍数。' }, - RISK_REWARD_RATIO: { value: 1.5, 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: 2.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: '小市值/山寨币最大允许杠杆。' }, @@ -971,41 +979,25 @@ const GlobalConfig = () => { } const presetUiMeta = { - altcoin: { group: 'altcoin', tag: '山寨币专用' }, - swing: { group: 'limit', tag: '纯限价' }, - strict: { group: 'limit', tag: '纯限价' }, - fill: { group: 'smart', tag: '智能入场' }, - steady: { group: 'smart', tag: '智能入场' }, - conservative: { group: 'legacy', tag: '传统' }, - balanced: { group: 'legacy', tag: '传统' }, - aggressive: { group: 'legacy', tag: '高频实验' }, - script_v1: { group: 'legacy', tag: '脚本迁移' }, + altcoin: { group: 'altcoin', tag: '当前推荐' }, + swing: { group: 'backup', tag: '纯限价' }, + strict: { group: 'backup', tag: '精选低频' }, + conservative: { group: 'backup', tag: '保守' }, } + // 快速方案只保留:当前推荐(山寨币)+ 备选(纯限价/保守),其余不展示 const presetGroups = [ { key: 'altcoin', - title: '⭐ 山寨币高盈亏比狙击策略', - desc: '专为山寨币设计:宽止损(2.0×ATR)+ 高盈亏比(4:1)+ 移动止损 + 严格流动性筛选。目标胜率35%,期望值+0.75%/笔。', + title: '当前推荐 · 山寨币策略', + desc: '与当前策略一致:4H 中性不自动交易、做多 RSI≤65、第一目标止盈 20%、止损 3×ATR、盈亏比 3:1、同品种连亏冷却。', presetKeys: ['altcoin'], }, { - key: 'limit', - title: 'A. 纯限价(SMART_ENTRY_ENABLED=false)', - desc: '只下 1 次限价单,未在确认时间内成交就撤单跳过。更控频、更接近"波段",但更容易出现 NEW→撤单。', - presetKeys: ['swing', 'strict'], - }, - { - key: 'smart', - title: 'B. 智能入场(SMART_ENTRY_ENABLED=true)', - desc: '限价回调 + 受限追价 +(趋势强时)可控市价兜底。更少漏单,但必须限制追价步数与偏离上限,避免回到高频追价。', - presetKeys: ['fill', 'steady'], - }, - { - key: 'legacy', - title: 'C. 传统 / 实验(不建议长期)', - desc: '这组更多用于对比或临时实验(频率更高/更容易过度交易),建议在稳定盈利前谨慎使用。', - presetKeys: ['conservative', 'balanced', 'aggressive', 'script_v1'], + key: 'backup', + title: '备选方案(纯限价 / 保守)', + desc: '需要更少出单或纯限价时可选:波段回归、精选低频、保守传统。', + presetKeys: ['swing', 'strict', 'conservative'], }, ] @@ -1157,16 +1149,16 @@ const GlobalConfig = () => {
-
怎么选更不迷糊
+
使用说明
diff --git a/trading_system/config.py b/trading_system/config.py index 74ee3d2..c2d347b 100644 --- a/trading_system/config.py +++ b/trading_system/config.py @@ -206,11 +206,11 @@ def _get_trading_config(): '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_RR_FOR_TP1': 1.5, # 第一目标止盈的最小盈亏比(相对于止损距离)(2026-02-12:1.5 改善盈亏比) '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': 2.0, # ATR止损倍数2.0(放宽止损,适应山寨币高波动) + 'ATR_STOP_LOSS_MULTIPLIER': 3.0, # ATR止损倍数3.0(2026-02-12:减少噪音止损,配合止盈拉远) 'ATR_TAKE_PROFIT_MULTIPLIER': 6.0, # ATR止盈倍数6.0(追求更高盈亏比) 'RISK_REWARD_RATIO': 3.0, # 盈亏比3:1 'ATR_PERIOD': 14, # ATR计算周期14 @@ -239,7 +239,7 @@ def _get_trading_config(): 'BETA_FILTER_ENABLED': True, # 大盘共振过滤:BTC/ETH下跌时屏蔽多单 'BETA_FILTER_THRESHOLD': -0.005, # -0.5%(2026-01-27优化:更敏感地过滤大盘风险,15分钟内跌幅超过0.5%即屏蔽多单) # ===== RSI / 24h 涨跌幅过滤(避免追高杀跌)===== - 'MAX_RSI_FOR_LONG': 70, # 做多时 RSI 超过此值则不开多(避免超买区追多) + 'MAX_RSI_FOR_LONG': 65, # 做多时 RSI 超过此值则不开多(2026-02-12:65 避免追高) 'MAX_CHANGE_PERCENT_FOR_LONG': 25, # 做多时 24h 涨跌幅超过此值则不开多(避免追大涨) 'MIN_RSI_FOR_SHORT': 30, # 做空时 RSI 低于此值则不做空(避免深超卖反弹) 'MAX_CHANGE_PERCENT_FOR_SHORT': 10, # 做空时 24h 涨跌幅超过此值则不做空(24h 仍大涨时不做空) diff --git a/trading_system/position_manager.py b/trading_system/position_manager.py index 78ffebb..04fa62d 100644 --- a/trading_system/position_manager.py +++ b/trading_system/position_manager.py @@ -614,7 +614,7 @@ class PositionManager: # 分步止盈(基于"实际成交价 + 已计算的止损/止盈") # ⚠️ 第一目标使用 TAKE_PROFIT_1_PERCENT(默认15%),与第二目标 TAKE_PROFIT_PERCENT 分离,提高整体盈亏比 # 第一目标和触发条件必须一致,都使用 TAKE_PROFIT_1_PERCENT - take_profit_1_pct_margin = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.15) + take_profit_1_pct_margin = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.20) # 兼容百分比形式和比例形式 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 @@ -628,7 +628,7 @@ class PositionManager: # ⚠️ 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_rr_for_tp1 = config.TRADING_CONFIG.get('MIN_RR_FOR_TP1', 1.5) 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}),已自动调整以保证盈亏比") @@ -1815,7 +1815,7 @@ class PositionManager: # ✅ 已移除时间锁限制,可以立即执行 if not partial_profit_taken and take_profit_1 is not None: # 直接使用配置的 TAKE_PROFIT_1_PERCENT,与开仓时计算的第一目标一致 - take_profit_1_pct_margin_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.15) + take_profit_1_pct_margin_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.20) # 兼容百分比形式和比例形式 if take_profit_1_pct_margin_config > 1: take_profit_1_pct_margin_config = take_profit_1_pct_margin_config / 100.0 @@ -3288,7 +3288,7 @@ class PositionManager: # 第一目标:TAKE_PROFIT_1_PERCENT 止盈(默认15%保证金),了结50%仓位 if not partial_profit_taken and take_profit_1 is not None: # 直接使用配置的 TAKE_PROFIT_1_PERCENT,与开仓时计算的第一目标一致 - take_profit_1_pct_margin_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.15) + take_profit_1_pct_margin_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.20) # 兼容百分比形式和比例形式 if take_profit_1_pct_margin_config > 1: take_profit_1_pct_margin_config = take_profit_1_pct_margin_config / 100.0 @@ -3300,7 +3300,7 @@ class PositionManager: min_profit_margin = 2.0 if pnl_percent_margin >= take_profit_1_pct_margin and pnl_percent_margin > min_profit_margin: - take_profit_pct_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.15) + take_profit_pct_config = config.TRADING_CONFIG.get('TAKE_PROFIT_1_PERCENT', 0.20) if take_profit_pct_config > 1: take_profit_pct_config = take_profit_pct_config / 100.0 take_profit_pct_display = take_profit_pct_config * 100