This commit is contained in:
薇薇安 2026-02-15 00:37:08 +08:00
parent 99df066101
commit ba4a4b2205
7 changed files with 167 additions and 18 deletions

View File

@ -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.020.025)。代码默认:止损 2.5%、止盈 2%。
## 如何配置

View File

@ -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_PERCENT30% 保证金)** 算价格距离;再被 **MIN_RR_FOR_TP11.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.5TP2 会变近(仍会优先于“保证金止盈”被选用,除非再做上面 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恢复“始终用盈亏比止盈”。

View File

@ -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 | **68** | 250U 开 16 仓,单仓约 67U 保证金,回撤集中;降到 68 可减少分散损耗、提高单笔质量。 |
**操作**:在后台/Redis 配置中把 `MAX_OPEN_POSITIONS` 改为 6 或 8重启或等配置热更新生效。
---
### 2. 单笔风险与杠杆(小资金更保守)
**目的**:单笔亏损可控,避免一两笔大亏拉崩曲线。
| 配置项 | 当前 | 建议(可选) | 说明 |
|--------|------|--------------|------|
| `FIXED_RISK_PERCENT` | 0.03 (3%) | **0.02 (2%)** | 250U 下单笔风险 5U降低单笔对总资金占比。 |
| `MIN_LEVERAGE` | 8 | **56** | 小资金下略降杠杆,单笔波动对保证金占比变小,心理与风控都更稳。 |
---
### 3. 更早锁定利润(移动止损与 TP1
**目的**:盈利仓尽早进入“保本/保护利润”,减少利润回吐。
| 配置项 | 当前 | 建议(可选) | 说明 |
|--------|------|--------------|------|
| `TRAILING_STOP_ACTIVATION` | 0.30 (30% 保证金盈利) | **0.200.25** | 盈利 2025% 即激活移动止损、止损移至成本,适合小资金快进快出。 |
| `TAKE_PROFIT_1_PERCENT` | 0.30 (30%) | 保持或 **0.200.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.200.25**,让盈利仓更早保本。
4. **保持**信号强度≥8、仅 trending、4H 中性不开仓,不放松。
---
## 四、小结
- **策略与止盈止损**:无问题;币安条件单与持仓一致。
- **盈利提升方向**:在不大改策略的前提下,通过**减少持仓数、降低单笔风险与杠杆、更早锁定利润**来平滑回撤、提高单笔质量;小资金优先做 12 项即可见效。

View File

@ -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,

View File

@ -206,6 +206,7 @@ DEFAULT_TRADING_CONFIG = {
'ATR_STOP_LOSS_MULTIPLIER': 0.5, # ATR止损倍数0.52026-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倍数最小值

View File

@ -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':

View File

@ -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% |