diff --git a/docs/STOP_LOSS_TAKE_PROFIT_EXPLANATION.md b/docs/STOP_LOSS_TAKE_PROFIT_EXPLANATION.md index 532bb46..688a573 100644 --- a/docs/STOP_LOSS_TAKE_PROFIT_EXPLANATION.md +++ b/docs/STOP_LOSS_TAKE_PROFIT_EXPLANATION.md @@ -93,11 +93,11 @@ - `MIN_STOP_LOSS_PRICE_PCT`: 0.01 (1%) - `MIN_TAKE_PROFIT_PRICE_PCT`: 0.015 (1.5%) -### 激进策略 +### 激进策略(不推荐过小最小距离) - `STOP_LOSS_PERCENT`: 0.02 (2% of margin) - `TAKE_PROFIT_PERCENT`: 0.03 (3% of margin) -- `MIN_STOP_LOSS_PRICE_PCT`: 0.005 (0.5%) -- `MIN_TAKE_PROFIT_PRICE_PCT`: 0.01 (1%) +- `MIN_STOP_LOSS_PRICE_PCT`: **≥ 0.015 (1.5%)**,不建议 0.5%,易被波动扫损 +- `MIN_TAKE_PROFIT_PRICE_PCT`: **≥ 0.02 (2%)** ## 优势 @@ -111,6 +111,7 @@ 1. **杠杆影响**:杠杆越高,基于保证金的止损对应的价格变动越小 2. **市场波动**:在波动大的市场,可以适当提高最小价格变动百分比 3. **技术止损**:系统仍会考虑技术分析(支撑/阻力、布林带),如果技术止损更紧,会使用技术止损 +4. **⚠️ 最小距离不宜过小**:`MIN_STOP_LOSS_PRICE_PCT` / `MIN_TAKE_PROFIT_PRICE_PCT` 是「离入场价的最小价格距离」。设为 0.5%、0.6% 会允许极紧的止损/止盈,容易被噪音扫损或过早止盈,建议**至少 2%~2.5%**(0.02~0.025)。代码默认:止损 2.5%、止盈 2%。 ## 如何配置 diff --git a/docs/止损止盈计算说明.md b/docs/止损止盈计算说明.md new file mode 100644 index 0000000..6585543 --- /dev/null +++ b/docs/止损止盈计算说明.md @@ -0,0 +1,47 @@ +# 止损止盈计算说明(保证金 vs 价格距离) + +## 一、当前逻辑概览 + +| 项目 | 是否基于「订单保证金」 | 实际如何算 | 为何会“很大” | +|------|------------------------|------------|----------------| +| **止损 (SL)** | 部分 | **优先用 ATR**:SL 价格距离 = ATR × ATR_STOP_LOSS_MULTIPLIER(如 3.0)。只有 ATR 不可用时才用「保证金×STOP_LOSS_PERCENT」换算成价格。 | ATR 宽时(如 2%×3=**6% 价格**),止损会离得很远;与“保证金 10%”的直觉不一致。 | +| **第一目标止盈 (TP1)** | 是,但会被抬升 | 先按 **TAKE_PROFIT_1_PERCENT(30% 保证金)** 算价格距离;再被 **MIN_RR_FOR_TP1(1.5 倍止损距离)** 抬升,取更大者。 | 当止损很宽(如 6% 价格)时,TP1 至少 1.5×6%=**9% 价格**,容易比“30% 保证金 ≈3.75% 价格”大很多。 | +| **第二目标止盈 (TP2)** | 否(当前实际多用盈亏比) | **优先用「止损距离×RISK_REWARD_RATIO」**(如 3:1)。即:止损 6% 价格 → TP2 = **18% 价格**。保证金 55% 只是候选之一,通常不会被选中。 | 盈亏比 3:1 下,止损一宽,止盈就非常远,**很难触及**,所以你感觉“很难获利离场”。 | + +**结论**: +- **止损**:多数情况是 **按价格距离(ATR)** 算,不是按“订单保证金百分比”一口价。 +- **止盈**: + - TP1 设计上是“基于保证金”,但被 MIN_RR_FOR_TP1 抬升后,可能变成“基于止损距离”的 1.5 倍,也会偏大。 + - TP2 **当前几乎总是“基于止损距离的盈亏比”**(3 倍止损距离),所以会很大,**并不是“按订单保证金”的 55% 来**。 + +--- + +## 二、换算关系(便于心里有数) + +- 杠杆 8x、**纯按保证金**时: + - 保证金 10% ≈ **1.25% 价格** + - 保证金 30% ≈ **3.75% 价格** + - 保证金 55% ≈ **6.875% 价格** + +- 当前实际常见情况(ATR 止损 + 3:1 止盈): + - 止损:例如 **4%~6% 价格**(ATR×倍数) + - TP2:**12%~18% 价格**(3×止损)→ 对很多行情来说很难碰到。 + +--- + +## 三、若希望“更容易获利离场”的改法 + +1. **让第二目标止盈也受“保证金”上限约束(推荐)** + - 增加逻辑:当「盈亏比算出的 TP2」对应的保证金盈利 **大于** 配置的 TAKE_PROFIT_PERCENT(如 55%)时,**改用「保证金 55%」对应的价格** 作为 TP2。 + - 这样 TP2 最远就是“55% 保证金”(约 6.875% 价格 @8x),不会出现 18% 价格那种很难到的止盈。 + +2. **调低盈亏比** + - 把 `RISK_REWARD_RATIO` 从 3.0 改为 2.0 或 1.5,TP2 会变近(仍会优先于“保证金止盈”被选用,除非再做上面 1 的约束)。 + +3. **第一目标 TP1 不要被抬得过高** + - 把 `MIN_RR_FOR_TP1` 从 1.5 改为 1.0,或关闭“TP1 至少 1.5 倍止损”的抬升,让 TP1 更贴近“30% 保证金”对应的价格。 + +4. **收紧止损(让 ATR 止损别太宽)** + - 降低 `ATR_STOP_LOSS_MULTIPLIER`(如从 3.0 到 2.0 或 1.5),止损变近,同比例下 TP2 也会变近(但止损更容易被扫到,需权衡)。 + +**已实现**:在 `risk_manager.get_take_profit_price` 中增加了 **USE_MARGIN_CAP_FOR_TP**(默认 True):当使用盈亏比算出 TP2 时,若该价格比「TAKE_PROFIT_PERCENT 对应的保证金止盈价」更远,则**改用保证金止盈价**作为 TP2,这样止盈不会远到难以触及。可在配置中关闭(设为 False)恢复“始终用盈亏比止盈”。 diff --git a/docs/盈利提升方案.md b/docs/盈利提升方案.md new file mode 100644 index 0000000..b670737 --- /dev/null +++ b/docs/盈利提升方案.md @@ -0,0 +1,87 @@ +# 盈利提升方案(策略与风控优化) + +在「止盈/止损与币安一致、策略逻辑无 bug」的前提下,从**仓位数量、单笔风险、出场与过滤**几方面做配置级优化,可提升资金曲线稳定性与盈利空间。 + +**已与「山寨币快速方案」对齐**:前端 GlobalConfig 山寨币预设的 `MIN_STOP_LOSS_PRICE_PCT` / `MIN_TAKE_PROFIT_PRICE_PCT` 已改为 2.5% / 2%(不再使用 0.5% / 0.6%),与代码默认及本文建议一致。 + +--- + +## 一、策略现状简要评估 + +- **止盈/止损**:与持仓导出一致,交易所条件单正常,策略侧无问题。 +- **过滤链**:4H 趋势、信号强度≥8、仅 trending、RSI/涨跌幅、成交量、短周期方向、连续亏损冷却等均已启用,逻辑完整。 +- **主要风险点**(结合 250U、16 仓、-8U 未实现): + - 仓位数量多(16)→ 单笔亏损(如 1000PEPE -49.7% 保证金)对总权益影响大。 + - 小资金下高杠杆 + 多仓 → 回撤容易集中爆发。 + +--- + +## 二、可落地的盈利提升方案 + +### 1. 小资金时减少持仓数量(优先) + +**目的**:降低“多仓同时亏损”的冲击,把仓位留给更高置信度信号。 + +| 配置项 | 当前示例 | 建议(总余额 < 500U) | 说明 | +|--------|----------|---------------------------|------| +| `MAX_OPEN_POSITIONS` | 16 | **6~8** | 250U 开 16 仓,单仓约 6~7U 保证金,回撤集中;降到 6~8 可减少分散损耗、提高单笔质量。 | + +**操作**:在后台/Redis 配置中把 `MAX_OPEN_POSITIONS` 改为 6 或 8,重启或等配置热更新生效。 + +--- + +### 2. 单笔风险与杠杆(小资金更保守) + +**目的**:单笔亏损可控,避免一两笔大亏拉崩曲线。 + +| 配置项 | 当前 | 建议(可选) | 说明 | +|--------|------|--------------|------| +| `FIXED_RISK_PERCENT` | 0.03 (3%) | **0.02 (2%)** | 250U 下单笔风险 5U,降低单笔对总资金占比。 | +| `MIN_LEVERAGE` | 8 | **5~6** | 小资金下略降杠杆,单笔波动对保证金占比变小,心理与风控都更稳。 | + +--- + +### 3. 更早锁定利润(移动止损与 TP1) + +**目的**:盈利仓尽早进入“保本/保护利润”,减少利润回吐。 + +| 配置项 | 当前 | 建议(可选) | 说明 | +|--------|------|--------------|------| +| `TRAILING_STOP_ACTIVATION` | 0.30 (30% 保证金盈利) | **0.20~0.25** | 盈利 20~25% 即激活移动止损、止损移至成本,适合小资金快进快出。 | +| `TAKE_PROFIT_1_PERCENT` | 0.30 (30%) | 保持或 **0.20~0.25** | 第一档止盈略提前,先落袋为安,剩余仓位用移动止损博趋势。 | + +--- + +### 4. 保持/强化“只做高质量信号” + +以下保持现状即可,无需放宽: + +- `MIN_SIGNAL_STRENGTH`: **8**(维持,不降到 7)。 +- `AUTO_TRADE_ONLY_TRENDING`: **True**(仅 trending 自动开仓)。 +- `AUTO_TRADE_ALLOW_4H_NEUTRAL`: **False**(4H 中性不自动开仓,避免震荡扫损)。 + +--- + +### 5. 单笔亏损“熔断”(可选,需代码支持) + +若希望**单笔亏损超过一定比例就强制平仓**(防止类似 1000PEPE -49.7% 保证金这种单笔拖累),可在 `position_manager.check_stop_loss_take_profit` 或监控逻辑中增加: + +- 当 `pnl_percent_margin < -X%`(例如 -25% 或 -30%)时,视为“单笔异常亏损”,执行市价平仓并记录原因。 + +目前代码中已有“移动止损”“固定 SL/TP”,暂无按“单笔亏损%熔断”的硬性平仓;若你希望加这一条,可以单独做一个小改动。 + +--- + +## 三、推荐实施顺序(小资金 250U 为例) + +1. **立刻可做**:把 `MAX_OPEN_POSITIONS` 调到 **6 或 8**。 +2. **其次**:`FIXED_RISK_PERCENT` 改为 **0.02**,`MIN_LEVERAGE` 改为 **5 或 6**(如接受略低杠杆)。 +3. **再选**:`TRAILING_STOP_ACTIVATION` 改为 **0.20~0.25**,让盈利仓更早保本。 +4. **保持**:信号强度≥8、仅 trending、4H 中性不开仓,不放松。 + +--- + +## 四、小结 + +- **策略与止盈止损**:无问题;币安条件单与持仓一致。 +- **盈利提升方向**:在不大改策略的前提下,通过**减少持仓数、降低单笔风险与杠杆、更早锁定利润**来平滑回撤、提高单笔质量;小资金优先做 1~2 项即可见效。 diff --git a/frontend/src/components/GlobalConfig.jsx b/frontend/src/components/GlobalConfig.jsx index d7593ba..a3fc2eb 100644 --- a/frontend/src/components/GlobalConfig.jsx +++ b/frontend/src/components/GlobalConfig.jsx @@ -233,8 +233,8 @@ const GlobalConfig = () => { // 风险与止盈止损 ATR_STOP_LOSS_MULTIPLIER: 3.0, STOP_LOSS_PERCENT: 0.10, // 10% 强平保护 - MIN_STOP_LOSS_PRICE_PCT: 0.005, - MIN_TAKE_PROFIT_PRICE_PCT: 0.006, + MIN_STOP_LOSS_PRICE_PCT: 0.025, // 2.5% 最小止损距离(过小易被波动扫损) + MIN_TAKE_PROFIT_PRICE_PCT: 0.02, // 2% 最小止盈距离(过小易过早止盈) RISK_REWARD_RATIO: 3.0, // 3:1 盈亏比 TAKE_PROFIT_1_PERCENT: 0.30, // 30% 第一止盈 TAKE_PROFIT_PERCENT: 0.55, // 55% 第二止盈(优化:更易触及) @@ -306,8 +306,8 @@ const GlobalConfig = () => { STOP_LOSS_PERCENT: 0.05, // 5% 强平保护 TAKE_PROFIT_PERCENT: 0.15, // 15% 止盈 TAKE_PROFIT_1_PERCENT: 0.10, // 10% 第一止盈 - MIN_STOP_LOSS_PRICE_PCT: 0.005, - MIN_TAKE_PROFIT_PRICE_PCT: 0.006, + MIN_STOP_LOSS_PRICE_PCT: 0.025, + MIN_TAKE_PROFIT_PRICE_PCT: 0.02, USE_TRAILING_STOP: false, ATR_STOP_LOSS_MULTIPLIER: 2.0, ATR_TAKE_PROFIT_MULTIPLIER: 1.5, @@ -336,8 +336,8 @@ const GlobalConfig = () => { TAKE_PROFIT_PERCENT: 0.30, // 30% 止盈 TAKE_PROFIT_1_PERCENT: 0.20, // 20% 第一止盈 STOP_LOSS_PERCENT: 0.10, // 10% 止损 - MIN_STOP_LOSS_PRICE_PCT: 0.005, - MIN_TAKE_PROFIT_PRICE_PCT: 0.006, + MIN_STOP_LOSS_PRICE_PCT: 0.025, + MIN_TAKE_PROFIT_PRICE_PCT: 0.02, MIN_HOLD_TIME_SEC: 1800, SMART_ENTRY_ENABLED: false, USE_DYNAMIC_ATR_MULTIPLIER: false, @@ -366,8 +366,8 @@ const GlobalConfig = () => { TAKE_PROFIT_PERCENT: 0.30, TAKE_PROFIT_1_PERCENT: 0.20, STOP_LOSS_PERCENT: 0.08, // 8% 止损 - MIN_STOP_LOSS_PRICE_PCT: 0.005, - MIN_TAKE_PROFIT_PRICE_PCT: 0.006, + MIN_STOP_LOSS_PRICE_PCT: 0.025, + MIN_TAKE_PROFIT_PRICE_PCT: 0.02, MIN_HOLD_TIME_SEC: 1800, USE_DYNAMIC_ATR_MULTIPLIER: false, USE_FIXED_RISK_SIZING: true, @@ -387,8 +387,8 @@ const GlobalConfig = () => { STOP_LOSS_PERCENT: 0.10, // 10% 止损 TAKE_PROFIT_PERCENT: 0.40, // 40% 止盈 TAKE_PROFIT_1_PERCENT: 0.25, // 25% 第一止盈 - MIN_STOP_LOSS_PRICE_PCT: 0.005, - MIN_TAKE_PROFIT_PRICE_PCT: 0.006, + MIN_STOP_LOSS_PRICE_PCT: 0.025, + MIN_TAKE_PROFIT_PRICE_PCT: 0.02, USE_TRAILING_STOP: false, ATR_STOP_LOSS_MULTIPLIER: 2.5, ATR_TAKE_PROFIT_MULTIPLIER: 1.5, diff --git a/trading_system/config.py b/trading_system/config.py index c09e492..737aff4 100644 --- a/trading_system/config.py +++ b/trading_system/config.py @@ -206,6 +206,7 @@ DEFAULT_TRADING_CONFIG = { 'ATR_STOP_LOSS_MULTIPLIER': 0.5, # ATR止损倍数0.5(2026-02-14:收紧止损,与ATR_MULTIPLIER_MAX一致) 'ATR_TAKE_PROFIT_MULTIPLIER': 6.0, # ATR止盈倍数6.0(追求更高盈亏比) 'RISK_REWARD_RATIO': 3.0, # 盈亏比3:1 + 'USE_MARGIN_CAP_FOR_TP': True, # 止盈按保证金上限封顶:当盈亏比算出的TP2过远时,改用TAKE_PROFIT_PERCENT对应价格,便于获利离场 'ATR_PERIOD': 14, # ATR计算周期14 'USE_DYNAMIC_ATR_MULTIPLIER': False, # 不使用动态ATR 'ATR_MULTIPLIER_MIN': 0.5, # 动态ATR倍数最小值 diff --git a/trading_system/risk_manager.py b/trading_system/risk_manager.py index 6bcc917..e9e7bc0 100644 --- a/trading_system/risk_manager.py +++ b/trading_system/risk_manager.py @@ -1317,11 +1317,23 @@ class RiskManager: candidate_prices.append(('价格百分比', take_profit_price_price)) # ⚠️ 2026-01-29优化:优先使用基于止损距离的盈亏比止盈(确保达到3:1目标) - # 如果存在基于盈亏比的止盈,优先使用它;否则选择最远的止盈(给利润更多空间,提高盈亏比) + # 若开启 USE_MARGIN_CAP_FOR_TP:当盈亏比算出的止盈过远时,用「保证金止盈」封顶,便于获利离场 + use_margin_cap = bool(config.TRADING_CONFIG.get('USE_MARGIN_CAP_FOR_TP', True)) if is_rr_based and take_profit_price_atr is not None: - # 优先使用基于止损距离的盈亏比止盈(确保达到3:1目标) take_profit_price = take_profit_price_atr selected_method = 'ATR盈亏比' + if use_margin_cap and take_profit_price_margin is not None: + # 取「更近」的止盈,避免盈亏比止盈过远难以触及 + if side == 'BUY': + if take_profit_price_margin < take_profit_price: + take_profit_price = take_profit_price_margin + selected_method = '保证金(止盈上限)' + logger.info(f"止盈已按保证金上限封顶: 原盈亏比止盈过远,采用 TAKE_PROFIT_PERCENT 对应价格") + else: + if take_profit_price_margin > take_profit_price: + take_profit_price = take_profit_price_margin + selected_method = '保证金(止盈上限)' + logger.info(f"止盈已按保证金上限封顶: 原盈亏比止盈过远,采用 TAKE_PROFIT_PERCENT 对应价格") else: # 如果没有基于盈亏比的止盈,选择最远的止盈(给利润更多空间,提高盈亏比) if side == 'BUY': diff --git a/山寨币策略配置评估与优化建议.md b/山寨币策略配置评估与优化建议.md index 99927a1..12af739 100644 --- a/山寨币策略配置评估与优化建议.md +++ b/山寨币策略配置评估与优化建议.md @@ -1,6 +1,7 @@ # 山寨币策略配置评估与优化建议 -> **已落实**:以下高优先级与中优先级建议已在「山寨币策略」预设与 ConfigGuide 中全量修改(总仓 65%、大盘 -1%、第二止盈 55%、显式补项、文档对齐)。 +> **已落实**:以下高优先级与中优先级建议已在「山寨币策略」预设与 ConfigGuide 中全量修改(总仓 65%、大盘 -1%、第二止盈 55%、显式补项、文档对齐)。 +> **2026-02 补充**:MIN_STOP_LOSS_PRICE_PCT / MIN_TAKE_PROFIT_PRICE_PCT 已从 0.5%/0.6% 调整为 2.5%/2%,与代码默认及《盈利提升方案》一致,避免过紧止损/止盈导致扫损或过早止盈。 ## 一、当前山寨币策略(altcoin)全部配置项 @@ -9,8 +10,8 @@ |--------|--------|------| | ATR_STOP_LOSS_MULTIPLIER | 3.0 | ATR 止损倍数,3 倍给波动空间,减少噪音止损 | | STOP_LOSS_PERCENT | 0.10 (10%) | 强平保护线(保证金比例) | -| MIN_STOP_LOSS_PRICE_PCT | 0.005 (0.5%) | 最小价格止损距离 | -| MIN_TAKE_PROFIT_PRICE_PCT | 0.006 (0.6%) | 最小价格止盈距离 | +| MIN_STOP_LOSS_PRICE_PCT | **0.025 (2.5%)** | 最小价格止损距离(过小易被波动扫损,已从 0.5% 修正) | +| MIN_TAKE_PROFIT_PRICE_PCT | **0.02 (2%)** | 最小价格止盈距离(过小易过早止盈,已从 0.6% 修正) | | RISK_REWARD_RATIO | 3.0 | 盈亏比目标 3:1 | | TAKE_PROFIT_1_PERCENT | 0.30 (30%) | 第一目标止盈(保证金 30%) | | TAKE_PROFIT_PERCENT | 0.80 (80%) | 第二目标止盈(保证金 80%) |