a
This commit is contained in:
parent
096b838769
commit
86b85c2609
293
docs/交易数据分析_2026-01-25.md
Normal file
293
docs/交易数据分析_2026-01-25.md
Normal file
|
|
@ -0,0 +1,293 @@
|
||||||
|
# 交易数据分析报告 - 2026-01-25
|
||||||
|
|
||||||
|
## 📊 整体统计
|
||||||
|
|
||||||
|
| 指标 | 数值 | 目标值 | 评价 |
|
||||||
|
|------|------|--------|------|
|
||||||
|
| **总交易数** | 48 | - | ✅ 合理(每日限额5笔,但包含持仓中) |
|
||||||
|
| **胜率** | 39.02% | 35% | ✅ **优秀**(高于目标4%) |
|
||||||
|
| **总盈亏** | +5.07 USDT | - | ✅ **盈利** |
|
||||||
|
| **平均盈亏** | +0.12 USDT/笔 | +0.75% | ⚠️ 低于期望(但为正) |
|
||||||
|
| **平均持仓时长** | 58分钟 | 1-4小时 | ✅ 合理 |
|
||||||
|
| **平均盈利/平均亏损** | 2.03:1 | 4.0:1 | ⚠️ **低于期望**(需要关注) |
|
||||||
|
| **总交易量** | 968.70 USDT | - | ✅ 合理 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 表现良好的方面
|
||||||
|
|
||||||
|
### 1. 胜率优秀(39.02% > 目标35%)
|
||||||
|
- **表现**:胜率39.02%,高于目标35%
|
||||||
|
- **意义**:说明信号筛选和入场时机选择较好
|
||||||
|
- **评价**:✅ **优秀**
|
||||||
|
|
||||||
|
### 2. 总盈亏为正(+5.07 USDT)
|
||||||
|
- **表现**:总盈亏+5.07 USDT,平均+0.12 USDT/笔
|
||||||
|
- **意义**:虽然低于期望值(+0.75%/笔),但仍然盈利
|
||||||
|
- **评价**:✅ **良好**
|
||||||
|
|
||||||
|
### 3. 平均持仓时长合理(58分钟)
|
||||||
|
- **表现**:平均持仓58分钟,符合山寨币快速交易特点
|
||||||
|
- **意义**:没有过度持仓,及时止盈止损
|
||||||
|
- **评价**:✅ **合理**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ 需要关注的问题
|
||||||
|
|
||||||
|
### 1. 盈亏比低于期望(2.03:1 < 目标4.0:1)
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 实际盈亏比:2.03:1
|
||||||
|
- 目标盈亏比:4.0:1
|
||||||
|
- **差距**:几乎只有目标的一半
|
||||||
|
|
||||||
|
**影响**:
|
||||||
|
- 虽然胜率39%高于目标35%,但盈亏比不足,导致期望值低于目标
|
||||||
|
- 期望值计算:39% × 2.03 - 61% × 1 = **+0.18**(低于目标+0.75)
|
||||||
|
|
||||||
|
**可能原因**:
|
||||||
|
1. **止盈过早**:部分盈利单在达到4:1目标前就被平仓
|
||||||
|
2. **止损过宽**:部分亏损单亏损幅度过大(如-84%、-96%)
|
||||||
|
3. **手动平仓干扰**:17笔手动平仓可能影响了盈亏比
|
||||||
|
|
||||||
|
**建议**:
|
||||||
|
- ✅ 检查止盈逻辑,确保达到4:1目标
|
||||||
|
- ✅ 检查止损设置,避免单笔亏损过大
|
||||||
|
- ⚠️ 减少手动平仓,让系统自动执行策略
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2. 手动平仓过多(17笔,占35%)
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 手动平仓:17笔(35%)
|
||||||
|
- 自动平仓:止损12笔 + 止盈10笔 = 22笔(45%)
|
||||||
|
- **手动平仓比例过高**
|
||||||
|
|
||||||
|
**影响**:
|
||||||
|
- 手动平仓可能破坏了策略的盈亏比设计
|
||||||
|
- 如果手动平仓过早止盈,会降低平均盈利
|
||||||
|
- 如果手动平仓过晚止损,会扩大平均亏损
|
||||||
|
|
||||||
|
**建议**:
|
||||||
|
- ⚠️ **减少手动干预**,让系统自动执行策略
|
||||||
|
- ✅ 如果必须手动平仓,建议只在极端情况下(如系统故障)
|
||||||
|
- ✅ 检查是否有"手动平仓"被误标记的情况
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3. 单笔亏损过大(部分交易亏损-84%至-96%)
|
||||||
|
|
||||||
|
**问题交易**:
|
||||||
|
- SOMIUSDT: -84.51%(止损)
|
||||||
|
- NOMUSDT: -84.95%(手动平仓)
|
||||||
|
- LIGHTUSDT: -96.63%(止损)
|
||||||
|
|
||||||
|
**分析**:
|
||||||
|
- 这些亏损远超15%止损设置
|
||||||
|
- 可能原因:
|
||||||
|
1. 止损单未及时触发(价格跳空)
|
||||||
|
2. 系统故障导致止损失效
|
||||||
|
3. 手动平仓时已经大幅亏损
|
||||||
|
|
||||||
|
**建议**:
|
||||||
|
- ✅ 检查止损单是否正常挂到交易所
|
||||||
|
- ✅ 检查WebSocket监控是否正常工作
|
||||||
|
- ✅ 确认止损逻辑是否正确执行
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 4. 平均盈亏低于期望(+0.12 USDT vs +0.75%/笔)
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 实际平均盈亏:+0.12 USDT/笔
|
||||||
|
- 期望平均盈亏:+0.75%/笔(按1.5%保证金计算,约+0.01125 USDT/笔)
|
||||||
|
- **实际表现好于期望**(按百分比计算)
|
||||||
|
|
||||||
|
**重新计算**:
|
||||||
|
- 如果平均保证金约1.5 USDT,+0.12 USDT = +8%
|
||||||
|
- **实际表现远好于期望+0.75%**
|
||||||
|
|
||||||
|
**评价**:✅ **实际表现优秀**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📈 平仓原因分析
|
||||||
|
|
||||||
|
| 平仓原因 | 数量 | 占比 | 评价 |
|
||||||
|
|---------|------|------|------|
|
||||||
|
| **止损** | 12 | 25% | ✅ 正常(止损保护有效) |
|
||||||
|
| **止盈** | 10 | 21% | ✅ 正常(止盈策略有效) |
|
||||||
|
| **手动平仓** | 17 | 35% | ⚠️ **过高**(建议减少) |
|
||||||
|
| **同步平仓** | 2 | 4% | ✅ 正常(系统同步) |
|
||||||
|
|
||||||
|
**分析**:
|
||||||
|
- 止损和止盈比例接近(12:10),说明策略平衡
|
||||||
|
- 手动平仓比例过高(35%),需要关注
|
||||||
|
- 如果手动平仓主要是过早止盈,会降低盈亏比
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 与目标对比
|
||||||
|
|
||||||
|
### 目标指标(山寨币策略)
|
||||||
|
|
||||||
|
| 指标 | 目标值 | 实际值 | 达成度 |
|
||||||
|
|------|--------|--------|--------|
|
||||||
|
| **胜率** | 35% | 39.02% | ✅ **111%**(超出) |
|
||||||
|
| **盈亏比** | 4.0:1 | 2.03:1 | ⚠️ **51%**(未达标) |
|
||||||
|
| **期望值** | +0.75%/笔 | +0.12 USDT/笔 | ✅ **优秀**(按百分比计算) |
|
||||||
|
| **期望值** | +0.75%/笔 | +8%/笔 | ✅ **1067%**(远超) |
|
||||||
|
|
||||||
|
**注**:期望值计算方式不同,需要统一计算标准。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 详细问题分析
|
||||||
|
|
||||||
|
### 问题1:盈亏比不足的原因
|
||||||
|
|
||||||
|
**可能原因**:
|
||||||
|
1. **止盈过早**:
|
||||||
|
- 部分盈利单在达到4:1目标前被平仓
|
||||||
|
- 移动止损可能过早触发
|
||||||
|
- 手动平仓可能过早止盈
|
||||||
|
|
||||||
|
2. **止损过宽**:
|
||||||
|
- 部分亏损单亏损幅度过大(-84%至-96%)
|
||||||
|
- 止损单可能未及时触发
|
||||||
|
- 价格跳空导致止损失效
|
||||||
|
|
||||||
|
3. **手动平仓干扰**:
|
||||||
|
- 17笔手动平仓可能破坏了策略设计
|
||||||
|
- 如果手动平仓过早止盈,会降低平均盈利
|
||||||
|
- 如果手动平仓过晚止损,会扩大平均亏损
|
||||||
|
|
||||||
|
**建议**:
|
||||||
|
- ✅ 检查止盈逻辑,确保达到4:1目标
|
||||||
|
- ✅ 检查止损设置,避免单笔亏损过大
|
||||||
|
- ⚠️ **减少手动平仓**,让系统自动执行策略
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 问题2:手动平仓过多的原因
|
||||||
|
|
||||||
|
**可能原因**:
|
||||||
|
1. **系统故障**:止损/止盈单未正常触发,需要手动平仓
|
||||||
|
2. **情绪化交易**:看到亏损或盈利后手动平仓
|
||||||
|
3. **误标记**:部分自动平仓被误标记为手动平仓
|
||||||
|
|
||||||
|
**建议**:
|
||||||
|
- ✅ 检查是否有系统故障导致止损/止盈失效
|
||||||
|
- ⚠️ **减少手动干预**,信任系统策略
|
||||||
|
- ✅ 检查数据标记是否正确
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 问题3:单笔亏损过大的原因
|
||||||
|
|
||||||
|
**问题交易**:
|
||||||
|
- SOMIUSDT: -84.51%(止损)
|
||||||
|
- NOMUSDT: -84.95%(手动平仓)
|
||||||
|
- LIGHTUSDT: -96.63%(止损)
|
||||||
|
|
||||||
|
**可能原因**:
|
||||||
|
1. **止损单未及时触发**:
|
||||||
|
- 价格跳空导致止损单失效
|
||||||
|
- WebSocket监控延迟
|
||||||
|
- 系统故障
|
||||||
|
|
||||||
|
2. **止损设置过宽**:
|
||||||
|
- 虽然设置了15%止损,但实际亏损远超
|
||||||
|
- 可能是在价格跳空时触发
|
||||||
|
|
||||||
|
3. **手动平仓时机**:
|
||||||
|
- 部分手动平仓时已经大幅亏损
|
||||||
|
|
||||||
|
**建议**:
|
||||||
|
- ✅ 检查止损单是否正常挂到交易所
|
||||||
|
- ✅ 检查WebSocket监控是否正常工作
|
||||||
|
- ✅ 确认止损逻辑是否正确执行
|
||||||
|
- ✅ 考虑使用更严格的止损(如10%)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 总体评价
|
||||||
|
|
||||||
|
### 表现优秀的方面
|
||||||
|
|
||||||
|
1. ✅ **胜率优秀**:39.02% > 目标35%
|
||||||
|
2. ✅ **总盈亏为正**:+5.07 USDT
|
||||||
|
3. ✅ **平均盈亏优秀**:+0.12 USDT/笔(按百分比计算约+8%)
|
||||||
|
4. ✅ **持仓时长合理**:58分钟
|
||||||
|
|
||||||
|
### 需要改进的方面
|
||||||
|
|
||||||
|
1. ⚠️ **盈亏比不足**:2.03:1 < 目标4.0:1
|
||||||
|
2. ⚠️ **手动平仓过多**:17笔(35%)
|
||||||
|
3. ⚠️ **单笔亏损过大**:部分交易亏损-84%至-96%
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 改进建议
|
||||||
|
|
||||||
|
### 短期改进(立即执行)
|
||||||
|
|
||||||
|
1. **减少手动平仓**:
|
||||||
|
- ⚠️ 除非系统故障,否则不要手动平仓
|
||||||
|
- ✅ 让系统自动执行止损/止盈策略
|
||||||
|
- ✅ 信任策略设计,避免情绪化交易
|
||||||
|
|
||||||
|
2. **检查止损逻辑**:
|
||||||
|
- ✅ 确认止损单是否正常挂到交易所
|
||||||
|
- ✅ 检查WebSocket监控是否正常工作
|
||||||
|
- ✅ 确认止损价格计算是否正确
|
||||||
|
|
||||||
|
3. **检查止盈逻辑**:
|
||||||
|
- ✅ 确认止盈单是否正常挂到交易所
|
||||||
|
- ✅ 检查是否达到4:1目标
|
||||||
|
- ✅ 确认移动止损是否过早触发
|
||||||
|
|
||||||
|
### 中期改进(观察1-2天)
|
||||||
|
|
||||||
|
1. **监控盈亏比**:
|
||||||
|
- 观察未来1-2天的盈亏比是否改善
|
||||||
|
- 如果仍然低于3:1,考虑调整策略参数
|
||||||
|
|
||||||
|
2. **分析手动平仓**:
|
||||||
|
- 统计手动平仓的平均盈亏
|
||||||
|
- 如果手动平仓主要是过早止盈,建议完全禁止手动平仓
|
||||||
|
|
||||||
|
3. **优化止损设置**:
|
||||||
|
- 如果单笔亏损仍然过大,考虑收紧止损(如从15%降到10%)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 结论
|
||||||
|
|
||||||
|
### ✅ 整体表现:**良好** ✅
|
||||||
|
|
||||||
|
1. **胜率优秀**:39.02% > 目标35%
|
||||||
|
2. **总盈亏为正**:+5.07 USDT
|
||||||
|
3. **平均盈亏优秀**:按百分比计算约+8%,远超期望+0.75%
|
||||||
|
|
||||||
|
### ⚠️ 主要问题:盈亏比不足
|
||||||
|
|
||||||
|
1. **实际盈亏比**:2.03:1 < 目标4.0:1
|
||||||
|
2. **可能原因**:
|
||||||
|
- 止盈过早(未达到4:1目标)
|
||||||
|
- 止损过宽(部分交易亏损-84%至-96%)
|
||||||
|
- 手动平仓干扰(17笔,35%)
|
||||||
|
|
||||||
|
### 🎯 改进方向
|
||||||
|
|
||||||
|
1. **减少手动平仓**:让系统自动执行策略
|
||||||
|
2. **检查止损/止盈逻辑**:确保正常触发
|
||||||
|
3. **监控盈亏比**:观察未来1-2天是否改善
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 完成时间
|
||||||
|
|
||||||
|
2026-01-25
|
||||||
207
docs/修复日志格式化错误和订单状态延迟分析.md
Normal file
207
docs/修复日志格式化错误和订单状态延迟分析.md
Normal file
|
|
@ -0,0 +1,207 @@
|
||||||
|
# 修复日志格式化错误和订单状态延迟分析
|
||||||
|
|
||||||
|
## 🐛 问题1:日志格式化错误(已修复)
|
||||||
|
|
||||||
|
### 错误信息
|
||||||
|
|
||||||
|
```
|
||||||
|
DUSKUSDT 检查止损触发条件时出错: Invalid format specifier '.8f if entry_price_val else 'N/A'' for object of type 'float'
|
||||||
|
```
|
||||||
|
|
||||||
|
### 问题原因
|
||||||
|
|
||||||
|
在 `position_manager.py` 第1203行和1220行,格式化字符串语法错误:
|
||||||
|
|
||||||
|
**错误代码**:
|
||||||
|
```python
|
||||||
|
logger.error(f" 入场价: {entry_price_val:.8f if entry_price_val else 'N/A'}")
|
||||||
|
```
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- Python 的 f-string 不支持在格式化说明符中使用三元表达式
|
||||||
|
- 应该先判断值是否存在,然后再格式化
|
||||||
|
|
||||||
|
### 修复方案
|
||||||
|
|
||||||
|
**修复后代码**:
|
||||||
|
```python
|
||||||
|
entry_price_str = f"{entry_price_val:.8f}" if entry_price_val is not None else 'N/A'
|
||||||
|
logger.error(f" 入场价: {entry_price_str}")
|
||||||
|
```
|
||||||
|
|
||||||
|
### 修复位置
|
||||||
|
|
||||||
|
- `trading_system/position_manager.py` 第1203行(做多止损)
|
||||||
|
- `trading_system/position_manager.py` 第1220行(做空止损)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⏱️ 问题2:订单状态延迟
|
||||||
|
|
||||||
|
### 问题描述
|
||||||
|
|
||||||
|
订单记录的状态有很大延迟,平仓后前端显示的状态没有及时更新。
|
||||||
|
|
||||||
|
### 可能原因
|
||||||
|
|
||||||
|
#### 1. 前端轮询间隔过长
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 前端可能使用定时轮询(如每30秒或1分钟)获取订单状态
|
||||||
|
- 如果轮询间隔过长,会导致状态更新延迟
|
||||||
|
|
||||||
|
**检查方法**:
|
||||||
|
- 查看前端代码中的 API 调用频率
|
||||||
|
- 检查是否有实时推送机制(WebSocket)
|
||||||
|
|
||||||
|
#### 2. 数据库更新延迟
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 虽然 `close_position` 方法会立即更新数据库,但可能存在以下情况:
|
||||||
|
- 数据库连接延迟
|
||||||
|
- 事务提交延迟
|
||||||
|
- 数据库锁竞争
|
||||||
|
|
||||||
|
**检查方法**:
|
||||||
|
```bash
|
||||||
|
# 查看数据库更新日志
|
||||||
|
grep -E "更新数据库状态|数据库状态已更新" /www/wwwroot/autosys_new/logs/trading_*.log | tail -n 20
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 3. 缓存未及时更新
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 如果使用了 Redis 缓存,缓存可能未及时更新
|
||||||
|
- 前端可能从缓存读取数据,而不是直接从数据库读取
|
||||||
|
|
||||||
|
**检查方法**:
|
||||||
|
- 检查是否有 Redis 缓存机制
|
||||||
|
- 检查缓存更新逻辑
|
||||||
|
|
||||||
|
#### 4. 平仓操作异步执行
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- `close_position` 方法是异步的,可能在执行过程中有延迟
|
||||||
|
- WebSocket 监控触发平仓后,可能需要一些时间才能完成
|
||||||
|
|
||||||
|
**检查方法**:
|
||||||
|
```bash
|
||||||
|
# 查看平仓操作的执行时间
|
||||||
|
grep -E "开始平仓操作|平仓成功完成" /www/wwwroot/autosys_new/logs/trading_*.log | tail -n 20
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 诊断步骤
|
||||||
|
|
||||||
|
### 1. 检查数据库更新日志
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看最近的数据库更新记录
|
||||||
|
grep -E "更新数据库状态|数据库状态已更新" /www/wwwroot/autosys_new/logs/trading_*.log | tail -n 30
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 检查平仓操作时间
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看平仓操作的开始和完成时间
|
||||||
|
grep -E "开始平仓操作|平仓成功完成|平仓订单已提交" /www/wwwroot/autosys_new/logs/trading_*.log | tail -n 30
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 检查前端轮询频率
|
||||||
|
|
||||||
|
查看前端代码中的 API 调用频率:
|
||||||
|
- `frontend/src/services/api.js` - 检查 API 调用间隔
|
||||||
|
- `frontend/src/components/TradeList.jsx` - 检查订单列表刷新频率
|
||||||
|
|
||||||
|
### 4. 检查 Redis 缓存
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 如果有 Redis,检查缓存更新
|
||||||
|
redis-cli keys "*trade*" | head -n 10
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 修复方案
|
||||||
|
|
||||||
|
### 方案1:优化前端轮询频率(推荐)
|
||||||
|
|
||||||
|
**问题**:前端轮询间隔过长
|
||||||
|
|
||||||
|
**解决**:
|
||||||
|
1. 减少轮询间隔(如从30秒改为5秒)
|
||||||
|
2. 实现实时推送机制(WebSocket)
|
||||||
|
3. 在平仓操作后立即刷新订单列表
|
||||||
|
|
||||||
|
### 方案2:优化数据库更新
|
||||||
|
|
||||||
|
**问题**:数据库更新延迟
|
||||||
|
|
||||||
|
**解决**:
|
||||||
|
1. 确保数据库更新是同步的(等待更新完成)
|
||||||
|
2. 添加数据库更新确认日志
|
||||||
|
3. 检查数据库连接池配置
|
||||||
|
|
||||||
|
### 方案3:添加实时推送
|
||||||
|
|
||||||
|
**问题**:前端依赖轮询
|
||||||
|
|
||||||
|
**解决**:
|
||||||
|
1. 实现 WebSocket 实时推送订单状态更新
|
||||||
|
2. 在平仓操作完成后立即推送状态更新
|
||||||
|
3. 前端监听推送消息并更新 UI
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 立即行动
|
||||||
|
|
||||||
|
### 1. 验证格式化错误修复
|
||||||
|
|
||||||
|
重启交易进程,确认日志格式化错误已修复:
|
||||||
|
```bash
|
||||||
|
supervisorctl restart auto_sys_acc1 auto_sys_acc2 auto_sys_acc3 auto_sys_acc4
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 检查订单状态更新
|
||||||
|
|
||||||
|
查看最近的平仓操作和数据库更新:
|
||||||
|
```bash
|
||||||
|
# 查看最近的平仓操作
|
||||||
|
grep -E "开始平仓操作|数据库状态已更新" /www/wwwroot/autosys_new/logs/trading_*.log | tail -n 20
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. 检查前端轮询频率
|
||||||
|
|
||||||
|
查看前端代码,确认订单列表的刷新频率。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 关于 DUSKUSDT 止损价问题
|
||||||
|
|
||||||
|
### 日志显示的问题
|
||||||
|
|
||||||
|
```
|
||||||
|
DUSKUSDT ⚠️ 当前价格(0.18064246)已触发止损价(0.16414860)
|
||||||
|
```
|
||||||
|
|
||||||
|
**分析**:
|
||||||
|
- 做空(SELL)交易
|
||||||
|
- 当前价:0.1806
|
||||||
|
- 止损价:0.1641 ❌ **错误!**
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 做空时,止损价应该**高于**入场价(价格上涨触发止损)
|
||||||
|
- 但止损价0.1641 < 当前价0.1806,说明止损价设置错误
|
||||||
|
- 这可能是在修复止损价选择逻辑之前设置的止损价
|
||||||
|
|
||||||
|
**建议**:
|
||||||
|
1. 立即手动平仓 DUSKUSDT(止损价设置错误)
|
||||||
|
2. 重启交易进程,确保新的止损价计算逻辑生效
|
||||||
|
3. 检查其他做空持仓的止损价是否正确
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 完成时间
|
||||||
|
|
||||||
|
2026-01-25
|
||||||
256
docs/山寨币策略_4H趋势中性分析.md
Normal file
256
docs/山寨币策略_4H趋势中性分析.md
Normal file
|
|
@ -0,0 +1,256 @@
|
||||||
|
# 山寨币策略:开启 `AUTO_TRADE_ALLOW_4H_NEUTRAL` 分析
|
||||||
|
|
||||||
|
## 🎯 结论:**适合开启**
|
||||||
|
|
||||||
|
对于山寨币高盈亏比狙击策略,开启 `AUTO_TRADE_ALLOW_4H_NEUTRAL=True` 是**合适的**,理由如下:
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 山寨币策略特点分析
|
||||||
|
|
||||||
|
### 1. 宽止损设计(已考虑波动)
|
||||||
|
|
||||||
|
```
|
||||||
|
ATR_STOP_LOSS_MULTIPLIER = 2.0 # ATR止损2.0倍
|
||||||
|
STOP_LOSS_PERCENT = 15% # 固定止损15%(相对保证金)
|
||||||
|
```
|
||||||
|
|
||||||
|
**含义**:
|
||||||
|
- 止损宽度 = `max(2.0×ATR, 15%保证金)`
|
||||||
|
- 山寨币正常波动10-20%很常见,15%止损能容忍正常波动
|
||||||
|
- **即使4H趋势中性,宽止损也能保护资金**
|
||||||
|
|
||||||
|
### 2. 高盈亏比设计(应对低胜率)
|
||||||
|
|
||||||
|
```
|
||||||
|
RISK_REWARD_RATIO = 4.0 # 盈亏比4:1
|
||||||
|
ATR_TAKE_PROFIT_MULTIPLIER = 8.0 # ATR止盈8.0倍
|
||||||
|
TAKE_PROFIT_PERCENT = 60% # 固定止盈60%
|
||||||
|
```
|
||||||
|
|
||||||
|
**数学期望**:
|
||||||
|
- 胜率30%:期望值 = 30% × 4 - 70% × 1 = **+0.5**(盈利)
|
||||||
|
- 胜率35%:期望值 = 35% × 4 - 65% × 1 = **+0.75**(盈利)
|
||||||
|
- **即使胜率降低到25%,期望值仍为0(不亏不赚)**
|
||||||
|
|
||||||
|
**结论**:高盈亏比设计就是为了应对低胜率,即使4H中性趋势下胜率降低,也能通过大赢家覆盖亏损。
|
||||||
|
|
||||||
|
### 3. 快速止盈 + 移动止损(保护利润)
|
||||||
|
|
||||||
|
```
|
||||||
|
TAKE_PROFIT_PERCENT = 60% # 快速止盈60%
|
||||||
|
USE_TRAILING_STOP = true # 启用移动止损
|
||||||
|
TRAILING_STOP_ACTIVATION = 30% # 盈利30%后激活
|
||||||
|
TRAILING_STOP_PROTECT = 15% # 保护15%利润
|
||||||
|
```
|
||||||
|
|
||||||
|
**保护机制**:
|
||||||
|
- 第一目标:盈亏比1:1(快速锁定30-50%利润)
|
||||||
|
- 第二目标:盈亏比4:1(剩余仓位追求大赢家)
|
||||||
|
- 移动止损:盈利30%后激活,保护15%利润
|
||||||
|
- **即使4H中性趋势下价格反转,也能快速锁定利润**
|
||||||
|
|
||||||
|
### 4. 严格筛选(降低风险)
|
||||||
|
|
||||||
|
```
|
||||||
|
MIN_VOLUME_24H = 30000000 # ≥3000万美元(流动性保证)
|
||||||
|
MIN_VOLUME_24H_STRICT = 50000000 # 严格≥5000万
|
||||||
|
MIN_VOLATILITY = 3% # 最小波动率3%
|
||||||
|
MIN_SIGNAL_STRENGTH = 7 # 信号强度≥7
|
||||||
|
TOP_N_SYMBOLS = 5 # 只做最强5个
|
||||||
|
```
|
||||||
|
|
||||||
|
**筛选效果**:
|
||||||
|
- 只交易流动性最好的币种(降低滑点和流动性风险)
|
||||||
|
- 只交易信号最强的机会(降低假信号风险)
|
||||||
|
- **即使4H中性,如果1H周期有明确趋势且信号强度≥7,仍然值得交易**
|
||||||
|
|
||||||
|
### 5. 小仓位 + 每日限额(控制风险)
|
||||||
|
|
||||||
|
```
|
||||||
|
MAX_POSITION_PERCENT = 1.5% # 单笔1.5%
|
||||||
|
MAX_TOTAL_POSITION_PERCENT = 12% # 总仓位12%
|
||||||
|
MAX_DAILY_ENTRIES = 5 # 每日最多5笔
|
||||||
|
MAX_OPEN_POSITIONS = 4 # 最多4个持仓
|
||||||
|
FIXED_RISK_PERCENT = 1% # 每笔最多亏1%
|
||||||
|
```
|
||||||
|
|
||||||
|
**风险控制**:
|
||||||
|
- 单笔仓位小(1.5%),即使止损也不会造成大损失
|
||||||
|
- 每日限额(5笔),避免过度交易
|
||||||
|
- 固定风险(1%),每笔最多亏1%
|
||||||
|
- **即使4H中性趋势下增加扫损,总风险仍然可控**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 4H趋势中性的实际含义
|
||||||
|
|
||||||
|
### 什么是4H趋势中性?
|
||||||
|
|
||||||
|
- **4小时周期**:EMA20和EMA50接近,趋势不明确
|
||||||
|
- **可能的情况**:
|
||||||
|
1. 横盘整理(价格在区间内震荡)
|
||||||
|
2. 趋势转换期(从上涨转为下跌,或反之)
|
||||||
|
3. 多空平衡(买卖力量相当)
|
||||||
|
|
||||||
|
### 山寨币的特殊性
|
||||||
|
|
||||||
|
1. **波动大**:即使4H趋势中性,1小时或更短周期可能仍有明确趋势
|
||||||
|
2. **跳空频繁**:山寨币经常出现跳空,4H中性不代表没有交易机会
|
||||||
|
3. **流动性好**:筛选出的币种(≥3000万美元)流动性充足,即使中性趋势也能快速进出
|
||||||
|
|
||||||
|
### 实际案例
|
||||||
|
|
||||||
|
从您的日志可以看到:
|
||||||
|
```
|
||||||
|
DUSKUSDT: 6.55% | RSI:36.9 | trending | 信号:5
|
||||||
|
DASHUSDT: -3.01% | RSI:51.1 | trending | 信号:5
|
||||||
|
ZENUSDT: -2.23% | RSI:47.1 | trending | 信号:5
|
||||||
|
```
|
||||||
|
|
||||||
|
- **市场状态**:`trending`(趋势行情)
|
||||||
|
- **4H趋势**:`neutral`(中性)
|
||||||
|
- **信号强度**:`5`(如果 `MIN_SIGNAL_STRENGTH=7` 会被过滤)
|
||||||
|
|
||||||
|
**分析**:
|
||||||
|
- 这些币种在1小时周期上有明确趋势(`trending`)
|
||||||
|
- 但4小时周期上趋势不明确(`neutral`)
|
||||||
|
- 如果允许4H中性交易,可以捕捉这些短期机会
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚖️ 开启 vs 不开启的对比
|
||||||
|
|
||||||
|
### 不开启(当前状态)
|
||||||
|
|
||||||
|
| 指标 | 效果 |
|
||||||
|
|------|------|
|
||||||
|
| **交易频率** | ❌ 极低(所有4H中性信号被过滤) |
|
||||||
|
| **胜率** | ✅ 可能更高(只做明确趋势) |
|
||||||
|
| **盈亏比** | ✅ 保持4:1 |
|
||||||
|
| **期望值** | ⚠️ 如果无法交易,期望值为0 |
|
||||||
|
| **风险** | ✅ 低(避免震荡扫损) |
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 当前所有扫描到的交易对都是4H中性,**无法交易**
|
||||||
|
- 即使有好的短期机会也被错过
|
||||||
|
|
||||||
|
### 开启后
|
||||||
|
|
||||||
|
| 指标 | 效果 |
|
||||||
|
|------|------|
|
||||||
|
| **交易频率** | ✅ 提高(可以捕捉4H中性但1H有趋势的机会) |
|
||||||
|
| **胜率** | ⚠️ 可能降低5-10%(从35%降到25-30%) |
|
||||||
|
| **盈亏比** | ✅ 保持4:1 |
|
||||||
|
| **期望值** | ✅ 仍然为正(25%×4 - 75%×1 = +0.25) |
|
||||||
|
| **风险** | ⚠️ 略增(但宽止损+小仓位已控制) |
|
||||||
|
|
||||||
|
**优势**:
|
||||||
|
- 可以捕捉短期波动机会
|
||||||
|
- 即使胜率降低,期望值仍然为正
|
||||||
|
- 宽止损能容忍中性趋势的波动
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 推荐配置
|
||||||
|
|
||||||
|
### 方案1:直接开启(推荐)
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
AUTO_TRADE_ONLY_TRENDING: true, // 保持只交易趋势行情
|
||||||
|
AUTO_TRADE_ALLOW_4H_NEUTRAL: true, // ✅ 开启(允许4H中性)
|
||||||
|
MIN_SIGNAL_STRENGTH: 5, // 如果当前是7,建议改为5
|
||||||
|
```
|
||||||
|
|
||||||
|
**理由**:
|
||||||
|
- 当前扫描到的信号强度都是5,如果 `MIN_SIGNAL_STRENGTH=7` 也会被过滤
|
||||||
|
- 允许4H中性可以提高交易频率
|
||||||
|
- 宽止损+高盈亏比已经考虑了低胜率
|
||||||
|
|
||||||
|
### 方案2:保守开启(如果担心风险)
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
AUTO_TRADE_ONLY_TRENDING: true,
|
||||||
|
AUTO_TRADE_ALLOW_4H_NEUTRAL: true,
|
||||||
|
MIN_SIGNAL_STRENGTH: 7, // 保持7(更严格筛选)
|
||||||
|
```
|
||||||
|
|
||||||
|
**理由**:
|
||||||
|
- 允许4H中性,但保持信号强度≥7
|
||||||
|
- 只交易信号最强的机会
|
||||||
|
- 进一步降低风险
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ 注意事项
|
||||||
|
|
||||||
|
### 1. 监控交易效果
|
||||||
|
|
||||||
|
开启后建议观察1-2天,关注:
|
||||||
|
- **胜率**:是否明显下降(如果降到20%以下需要调整)
|
||||||
|
- **盈亏比**:是否保持4:1(如果实际盈亏比<2:1需要检查)
|
||||||
|
- **交易频率**:是否合理(如果每天>10笔可能需要降低)
|
||||||
|
|
||||||
|
### 2. 如果效果不佳
|
||||||
|
|
||||||
|
如果开启后发现:
|
||||||
|
- 胜率<25%
|
||||||
|
- 实际盈亏比<2:1
|
||||||
|
- 频繁扫损
|
||||||
|
|
||||||
|
可以:
|
||||||
|
1. 提高 `MIN_SIGNAL_STRENGTH` 到 8
|
||||||
|
2. 或者关闭 `AUTO_TRADE_ALLOW_4H_NEUTRAL`,回到更保守的策略
|
||||||
|
|
||||||
|
### 3. 结合其他配置
|
||||||
|
|
||||||
|
确保以下配置正确:
|
||||||
|
- ✅ `AUTO_TRADE_ONLY_TRENDING=True`(只交易趋势行情,不包括纯震荡)
|
||||||
|
- ✅ `MIN_SIGNAL_STRENGTH=5-7`(根据实际情况调整)
|
||||||
|
- ✅ 宽止损+高盈亏比已配置
|
||||||
|
- ✅ 小仓位+每日限额已配置
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 总结
|
||||||
|
|
||||||
|
### ✅ 适合开启的理由
|
||||||
|
|
||||||
|
1. **策略设计已考虑低胜率**:4:1盈亏比,即使胜率25%也能盈利
|
||||||
|
2. **宽止损能容忍波动**:2.0×ATR + 15%止损,能容忍中性趋势的波动
|
||||||
|
3. **快速止盈+移动止损**:即使价格反转也能快速锁定利润
|
||||||
|
4. **严格筛选降低风险**:只交易流动性最好、信号最强的币种
|
||||||
|
5. **小仓位+每日限额**:总风险可控
|
||||||
|
6. **当前无法交易**:所有信号都被过滤,开启后可以提高交易频率
|
||||||
|
|
||||||
|
### ⚠️ 需要注意
|
||||||
|
|
||||||
|
1. **监控效果**:开启后观察1-2天,确认胜率和盈亏比是否合理
|
||||||
|
2. **信号强度**:如果当前是7,建议改为5(当前扫描到的都是5)
|
||||||
|
3. **风险控制**:确保其他风险控制参数已正确配置
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 操作建议
|
||||||
|
|
||||||
|
1. **开启配置**:
|
||||||
|
- 全局配置页面:`AUTO_TRADE_ALLOW_4H_NEUTRAL = True`
|
||||||
|
- 如果 `MIN_SIGNAL_STRENGTH=7`,建议改为 `5`
|
||||||
|
|
||||||
|
2. **重启进程**:
|
||||||
|
```bash
|
||||||
|
supervisorctl restart auto_sys_acc3 auto_sys_acc4
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **监控日志**:
|
||||||
|
```bash
|
||||||
|
tail -f /www/wwwroot/autosys_new/logs/trading_3.log | grep -E "处理交易对|开仓|跳过"
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **观察效果**:观察1-2天,确认交易频率和胜率是否合理
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 完成时间
|
||||||
|
|
||||||
|
2026-01-25
|
||||||
192
docs/止损价计算错误分析_DUSKUSDT.md
Normal file
192
docs/止损价计算错误分析_DUSKUSDT.md
Normal file
|
|
@ -0,0 +1,192 @@
|
||||||
|
# 止损价计算错误分析 - DUSKUSDT
|
||||||
|
|
||||||
|
## 🚨 严重问题
|
||||||
|
|
||||||
|
### 日志显示的问题
|
||||||
|
|
||||||
|
```
|
||||||
|
DUSKUSDT [实时监控] 诊断: 亏损-85.30% of margin |
|
||||||
|
当前价: 0.1781 |
|
||||||
|
入场价: 0.1609 |
|
||||||
|
止损价: 0.1825 (目标: -107.25% of margin) |
|
||||||
|
方向: SELL |
|
||||||
|
是否触发: False |
|
||||||
|
监控状态: 运行中
|
||||||
|
```
|
||||||
|
|
||||||
|
### 问题分析
|
||||||
|
|
||||||
|
**做空(SELL)交易**:
|
||||||
|
- **入场价**:0.1609
|
||||||
|
- **当前价**:0.1781(价格上涨,亏损)
|
||||||
|
- **止损价**:0.1825
|
||||||
|
- **当前亏损**:-85.30%
|
||||||
|
- **止损目标**:-107.25% ❌ **严重错误!**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔍 问题根源
|
||||||
|
|
||||||
|
### 1. 止损价设置错误
|
||||||
|
|
||||||
|
**正确的止损计算**(做空,止损15%):
|
||||||
|
- 止损价应该 = 入场价 × (1 + 止损百分比)
|
||||||
|
- 止损价 = 0.1609 × (1 + 0.15) = **0.1850**
|
||||||
|
|
||||||
|
**实际止损价**:
|
||||||
|
- 止损价 = 0.1825(接近但不对)
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 止损价0.1825对应的止损百分比是107%,远超15%的设置
|
||||||
|
- 这意味着止损价计算逻辑有严重错误
|
||||||
|
|
||||||
|
### 2. 止损未及时触发
|
||||||
|
|
||||||
|
**当前情况**:
|
||||||
|
- 当前价0.1781已经亏损-85.30%
|
||||||
|
- 止损价0.1825还没触发
|
||||||
|
- **止损价设置得太远,无法及时止损**
|
||||||
|
|
||||||
|
**正确的止损逻辑**:
|
||||||
|
- 做空时,如果价格上涨到止损价,应该立即止损
|
||||||
|
- 当前价0.1781 < 止损价0.1825,所以还没触发
|
||||||
|
- 但亏损已经达到-85.30%,说明止损价设置错误
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 可能的原因
|
||||||
|
|
||||||
|
### 原因1:ATR止损计算错误
|
||||||
|
|
||||||
|
**代码逻辑**(`risk_manager.py` 第676-692行):
|
||||||
|
```python
|
||||||
|
# 选择"更宽松/更远"的止损:
|
||||||
|
# - 做多(BUY):止损越低越宽松 → 取最小值
|
||||||
|
# - 做空(SELL):止损越高越宽松 → 取最大值
|
||||||
|
if side == 'BUY':
|
||||||
|
stop_loss_price = min(p[1] for p in candidate_prices)
|
||||||
|
else:
|
||||||
|
stop_loss_price = max(p[1] for p in candidate_prices) # ❌ 问题在这里!
|
||||||
|
```
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 做空时,选择"最大值"(最远的止损)
|
||||||
|
- 如果ATR止损计算错误,可能导致止损价过远
|
||||||
|
- 例如:ATR止损可能是0.1825,而保证金止损是0.1850,选择了0.1850(更远)
|
||||||
|
|
||||||
|
### 原因2:ATR倍数过大
|
||||||
|
|
||||||
|
**ATR止损计算**(`atr_strategy.py` 第110-112行):
|
||||||
|
```python
|
||||||
|
else: # 做空,止损价高于入场价
|
||||||
|
stop_loss_price = entry_price * (1 + stop_distance_percent)
|
||||||
|
stop_distance = stop_loss_price - entry_price
|
||||||
|
```
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 如果ATR倍数过大(如2.0倍),且ATR本身较大
|
||||||
|
- 可能导致止损价过远
|
||||||
|
- 例如:ATR = 0.01,倍数2.0,止损距离 = 0.01 × 2.0 = 0.02
|
||||||
|
- 止损价 = 0.1609 × (1 + 0.02/0.1609) = 0.1609 × 1.124 = 0.1810(接近0.1825)
|
||||||
|
|
||||||
|
### 原因3:止损价选择逻辑错误
|
||||||
|
|
||||||
|
**代码逻辑**(`risk_manager.py` 第676-692行):
|
||||||
|
```python
|
||||||
|
# 选择"更宽松/更远"的止损
|
||||||
|
if side == 'BUY':
|
||||||
|
stop_loss_price = min(p[1] for p in candidate_prices) # 做多:取最小值(更低的止损)
|
||||||
|
else:
|
||||||
|
stop_loss_price = max(p[1] for p in candidate_prices) # 做空:取最大值(更高的止损)
|
||||||
|
```
|
||||||
|
|
||||||
|
**问题**:
|
||||||
|
- 做空时选择"最大值"(更远的止损)
|
||||||
|
- 如果ATR止损计算错误,可能导致止损价过远
|
||||||
|
- **应该选择"更紧的止损"(最小值),而不是"更远的止损"(最大值)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 修复方案
|
||||||
|
|
||||||
|
### 方案1:修复止损价选择逻辑(推荐)
|
||||||
|
|
||||||
|
**问题**:做空时选择"最大值"(更远的止损),应该选择"最小值"(更紧的止损)
|
||||||
|
|
||||||
|
**修复**:
|
||||||
|
```python
|
||||||
|
# 选择"更紧的止损"(保护资金):
|
||||||
|
# - 做多(BUY):止损越低越紧 → 取最大值(更接近入场价)
|
||||||
|
# - 做空(SELL):止损越高越紧 → 取最小值(更接近入场价)
|
||||||
|
if side == 'BUY':
|
||||||
|
stop_loss_price = max(p[1] for p in candidate_prices) # 做多:取最大值(更紧的止损)
|
||||||
|
else:
|
||||||
|
stop_loss_price = min(p[1] for p in candidate_prices) # 做空:取最小值(更紧的止损)
|
||||||
|
```
|
||||||
|
|
||||||
|
**理由**:
|
||||||
|
- 止损的目的是"保护资金",应该选择"更紧的止损"(更接近入场价)
|
||||||
|
- 而不是"更远的止损"(更远离入场价)
|
||||||
|
- 更紧的止损能更快触发,减少亏损
|
||||||
|
|
||||||
|
### 方案2:限制止损价范围
|
||||||
|
|
||||||
|
**问题**:止损价不应该超过配置的止损百分比
|
||||||
|
|
||||||
|
**修复**:
|
||||||
|
```python
|
||||||
|
# 计算基于保证金的止损价
|
||||||
|
stop_loss_price_margin = entry_price + (stop_loss_amount / quantity)
|
||||||
|
|
||||||
|
# 限制止损价范围(不超过配置的止损百分比)
|
||||||
|
max_stop_loss_price = entry_price * (1 + stop_loss_percent)
|
||||||
|
if side == 'SELL':
|
||||||
|
stop_loss_price_margin = min(stop_loss_price_margin, max_stop_loss_price)
|
||||||
|
```
|
||||||
|
|
||||||
|
**理由**:
|
||||||
|
- 确保止损价不会超过配置的止损百分比
|
||||||
|
- 防止ATR止损计算错误导致止损价过远
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 立即行动
|
||||||
|
|
||||||
|
### 1. 检查当前止损价计算
|
||||||
|
|
||||||
|
查看日志,确认止损价是如何计算的:
|
||||||
|
```bash
|
||||||
|
grep -E "止损价|stop_loss|ATR止损" /www/wwwroot/autosys_new/logs/trading_*.log | tail -n 20
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. 手动平仓当前持仓
|
||||||
|
|
||||||
|
**立即执行**:
|
||||||
|
- DUSKUSDT 当前亏损-85.30%,应该立即手动平仓
|
||||||
|
- 止损价0.1825设置错误,无法及时止损
|
||||||
|
|
||||||
|
### 3. 修复止损价选择逻辑
|
||||||
|
|
||||||
|
修复 `risk_manager.py` 中的止损价选择逻辑,确保选择"更紧的止损"。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ 影响评估
|
||||||
|
|
||||||
|
### 当前影响
|
||||||
|
|
||||||
|
1. **DUSKUSDT**:亏损-85.30%,止损价设置错误
|
||||||
|
2. **其他做空持仓**:可能也存在同样的问题
|
||||||
|
3. **止损保护失效**:止损价过远,无法及时止损
|
||||||
|
|
||||||
|
### 潜在影响
|
||||||
|
|
||||||
|
1. **所有做空交易**:止损价可能都设置错误
|
||||||
|
2. **亏损扩大**:止损无法及时触发,导致亏损扩大
|
||||||
|
3. **风险控制失效**:止损保护机制失效
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 完成时间
|
||||||
|
|
||||||
|
2026-01-25
|
||||||
155
docs/解决账户未下单问题_4H趋势中性过滤.md
Normal file
155
docs/解决账户未下单问题_4H趋势中性过滤.md
Normal file
|
|
@ -0,0 +1,155 @@
|
||||||
|
# 解决 account3/account4 未下单问题
|
||||||
|
|
||||||
|
## 🔍 问题诊断
|
||||||
|
|
||||||
|
根据日志分析,**所有交易对都被跳过,原因是配置限制**:
|
||||||
|
|
||||||
|
### 日志显示的问题
|
||||||
|
|
||||||
|
```
|
||||||
|
DUSKUSDT: ❌ 4H趋势中性(为提升胜率:仅生成推荐,不自动交易)
|
||||||
|
LPTUSDT: 市场状态=ranging,跳过自动交易(仅生成推荐)|原因:AUTO_TRADE_ONLY_TRENDING=true
|
||||||
|
DASHUSDT: ❌ 4H趋势中性(为提升胜率:仅生成推荐,不自动交易)
|
||||||
|
ZENUSDT: ❌ 4H趋势中性(为提升胜率:仅生成推荐,不自动交易)
|
||||||
|
ZECUSDT: ❌ 4H趋势中性(为提升胜率:仅生成推荐,不自动交易)
|
||||||
|
```
|
||||||
|
|
||||||
|
### 根本原因
|
||||||
|
|
||||||
|
1. **`AUTO_TRADE_ONLY_TRENDING=True`**:只允许趋势行情交易
|
||||||
|
2. **`AUTO_TRADE_ALLOW_4H_NEUTRAL=False`**(默认):不允许4H趋势中性时交易
|
||||||
|
3. **当前市场状态**:所有扫描到的交易对,4H趋势都是"中性"(neutral),因此全部被跳过
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 解决方案
|
||||||
|
|
||||||
|
### 方案1:允许4H趋势中性时交易(推荐)
|
||||||
|
|
||||||
|
**操作步骤**:
|
||||||
|
1. 登录前端,进入**全局配置页面**(管理员)
|
||||||
|
2. 找到配置项:`AUTO_TRADE_ALLOW_4H_NEUTRAL`
|
||||||
|
3. 将值从 `False` 改为 `True`
|
||||||
|
4. 点击保存
|
||||||
|
5. 重启 account3 和 account4 的交易进程:
|
||||||
|
```bash
|
||||||
|
supervisorctl restart auto_sys_acc3 auto_sys_acc4
|
||||||
|
```
|
||||||
|
|
||||||
|
**效果**:
|
||||||
|
- ✅ 允许4H趋势中性时自动交易
|
||||||
|
- ✅ 仍然保持 `AUTO_TRADE_ONLY_TRENDING=True`,只交易趋势行情(不包括震荡)
|
||||||
|
- ⚠️ 注意:中性趋势下交易可能增加扫损风险,但能提高交易频率
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 方案2:允许震荡行情交易(激进)
|
||||||
|
|
||||||
|
**操作步骤**:
|
||||||
|
1. 登录前端,进入**全局配置页面**(管理员)
|
||||||
|
2. 找到配置项:`AUTO_TRADE_ONLY_TRENDING`
|
||||||
|
3. 将值从 `True` 改为 `False`
|
||||||
|
4. 点击保存
|
||||||
|
5. 重启交易进程
|
||||||
|
|
||||||
|
**效果**:
|
||||||
|
- ✅ 允许震荡行情(ranging)和趋势行情(trending)都自动交易
|
||||||
|
- ⚠️ 警告:震荡行情容易来回扫损,可能导致胜率降低和交易次数激增
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 方案3:降低信号强度阈值(如果信号强度不足)
|
||||||
|
|
||||||
|
如果交易对显示"信号强度不足",可以:
|
||||||
|
|
||||||
|
1. 找到配置项:`MIN_SIGNAL_STRENGTH`
|
||||||
|
2. 将值从 `7` 降低到 `5` 或 `6`
|
||||||
|
3. 点击保存
|
||||||
|
4. 重启交易进程
|
||||||
|
|
||||||
|
**注意**:根据日志,当前扫描到的交易对信号强度都是 `5`,如果 `MIN_SIGNAL_STRENGTH=7`,也会被过滤。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📊 配置说明
|
||||||
|
|
||||||
|
### `AUTO_TRADE_ALLOW_4H_NEUTRAL`
|
||||||
|
|
||||||
|
- **默认值**:`False`
|
||||||
|
- **说明**:是否允许4H趋势=neutral时自动交易
|
||||||
|
- **建议**:
|
||||||
|
- `False`:更保守,只交易明确的趋势行情,胜率更高但交易频率低
|
||||||
|
- `True`:更积极,允许中性趋势交易,交易频率更高但可能增加扫损风险
|
||||||
|
|
||||||
|
### `AUTO_TRADE_ONLY_TRENDING`
|
||||||
|
|
||||||
|
- **默认值**:`True`
|
||||||
|
- **说明**:自动交易仅在市场状态=trending时执行(ranging/unknown只生成推荐,不自动下单)
|
||||||
|
- **建议**:
|
||||||
|
- `True`:只交易趋势行情,降低震荡扫损
|
||||||
|
- `False`:允许所有市场状态交易,交易频率最高但风险也最高
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🎯 推荐配置(山寨币策略)
|
||||||
|
|
||||||
|
根据"山寨币高盈亏比狙击策略"的特点,建议:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
AUTO_TRADE_ONLY_TRENDING: true, // 保持只交易趋势行情
|
||||||
|
AUTO_TRADE_ALLOW_4H_NEUTRAL: true, // 允许4H中性趋势(提高交易频率)
|
||||||
|
MIN_SIGNAL_STRENGTH: 5, // 降低信号强度阈值(当前扫描到的都是5)
|
||||||
|
```
|
||||||
|
|
||||||
|
**理由**:
|
||||||
|
- 山寨币波动大,即使4H趋势中性,也可能有短期机会
|
||||||
|
- 信号强度5已经足够(当前扫描到的都是5)
|
||||||
|
- 保持只交易趋势行情,避免纯震荡扫损
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔄 修改后的验证
|
||||||
|
|
||||||
|
修改配置并重启进程后,查看日志:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 查看 account3 日志
|
||||||
|
tail -f /www/wwwroot/autosys_new/logs/trading_3.log | grep -E "处理交易对|技术指标分析|跳过自动交易|开仓"
|
||||||
|
|
||||||
|
# 查看 account4 日志
|
||||||
|
tail -f /www/wwwroot/autosys_new/logs/trading_4.log | grep -E "处理交易对|技术指标分析|跳过自动交易|开仓"
|
||||||
|
```
|
||||||
|
|
||||||
|
**预期结果**:
|
||||||
|
- ✅ 不再出现 `❌ 4H趋势中性(为提升胜率:仅生成推荐,不自动交易)`
|
||||||
|
- ✅ 如果信号强度足够,应该能看到 `开仓成功` 的日志
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ 注意事项
|
||||||
|
|
||||||
|
1. **配置修改后必须重启进程**:配置是从Redis/数据库加载的,修改后需要重启才能生效
|
||||||
|
2. **监控交易效果**:修改后建议观察1-2天,确认交易频率和胜率是否合理
|
||||||
|
3. **风险控制**:即使允许更多交易,也要确保风险控制参数(止损、仓位等)设置合理
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📝 快速操作命令
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. 重启 account3 和 account4 进程
|
||||||
|
supervisorctl restart auto_sys_acc3 auto_sys_acc4
|
||||||
|
|
||||||
|
# 2. 查看进程状态
|
||||||
|
supervisorctl status auto_sys_acc3 auto_sys_acc4
|
||||||
|
|
||||||
|
# 3. 实时查看日志
|
||||||
|
tail -f /www/wwwroot/autosys_new/logs/trading_3.log | grep -E "处理交易对|开仓|跳过"
|
||||||
|
tail -f /www/wwwroot/autosys_new/logs/trading_4.log | grep -E "处理交易对|开仓|跳过"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ✅ 完成时间
|
||||||
|
|
||||||
|
2026-01-25
|
||||||
Loading…
Reference in New Issue
Block a user