auto_trade_sys/docs/配置值格式简化方案.md
薇薇安 9fe028d704 a
2026-01-27 10:36:56 +08:00

200 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 配置值格式简化方案
## 🎯 简化原则
**核心原则**用户直接输入小数0.30),不做任何换算,怎么简单准确怎么来
### 数据格式
| 位置 | 格式 | 示例 | 说明 |
|------|------|------|------|
| **数据库存储** | 比例形式 | 0.30 | 表示30% |
| **前端显示** | 比例形式 | 0.30 | 直接显示数据库中的值 |
| **前端输入** | 比例形式 | 0.30 | 用户直接输入小数 |
| **前端存储** | 比例形式 | 0.30 | 直接存储,不做转换 |
| **后端使用** | 比例形式 | 0.30 | 直接使用,不需要转换 |
---
## ✅ 简化后的实现
### 前端逻辑
**显示逻辑**
```javascript
// 直接显示数据库中的值0.30
return formatPercent(numVal <= 1 ? numVal : numVal / 100)
```
**输入逻辑**
```javascript
// 用户直接输入小数0.30),直接存储,不做转换
if (processedValue < 0 || processedValue > 1) {
return // 验证范围0-1之间
}
// 直接使用输入的值0.30),不做转换
```
**验证逻辑**
```javascript
// 验证范围0-1之间比例形式
if (numValue < 0 || numValue > 1) {
return // 超出范围,不更新
}
```
---
### 后端逻辑
**使用逻辑**
```python
# 直接使用数据库中的值0.30),不需要转换
value = config_value # 0.30
```
**临时兼容性处理**
```python
# 如果值>1说明可能是旧数据百分比形式转换为比例形式
if value > 1:
value = value / 100.0 # 30 -> 0.30
```
---
## 📊 数据流
### 简化后的数据流
```
用户输入0.30
前端验证0-1之间 ✅
直接存储到数据库0.30(不做转换)✅
前端显示0.30(直接显示)✅
后端读取0.30(直接使用)✅
后端使用0.30(不需要转换)✅
```
---
## ✅ 优势
### 简化的优势
1. **逻辑简单**
- 用户输入0.30直接存储0.30
- 不需要做任何换算
- ✅ 减少出错,易于理解
2. **数据一致**
- 前端输入0.30
- 前端存储0.30
- 后端使用0.30
- ✅ 三者完全一致
3. **避免转换错误**
- 不需要30 -> 0.30的转换
- 不需要0.30 -> 30%的显示转换
- ✅ 避免转换过程中的错误
---
## 📝 使用说明
### 用户输入示例
**正确输入**
- `0.30` → 表示30%
- `0.15` → 表示15%
- `0.01` → 表示1%
**错误输入**
- `30` → 超出范围(>1会被拒绝
- `1.5` → 超出范围(>1会被拒绝
### 配置项说明
**百分比配置项**需要输入0-1之间的小数
- `TAKE_PROFIT_PERCENT`: 0.30表示30%
- `STOP_LOSS_PERCENT`: 0.15表示15%
- `TRAILING_STOP_ACTIVATION`: 0.30表示30%
- `TRAILING_STOP_PROTECT`: 0.15表示15%
- `MIN_VOLATILITY`: 0.03表示3%
---
## 🔧 实施步骤
### 步骤1执行数据迁移必须
**目的**将数据库中的百分比形式30转换为比例形式0.30
**脚本**`backend/database/migrate_percent_configs_to_ratio.sql`
**执行**
```bash
# 执行SQL迁移脚本
mysql -u username -p database_name < backend/database/migrate_percent_configs_to_ratio.sql
```
---
### 步骤2清除Redis缓存
```bash
# 清除Redis缓存让系统重新加载配置
redis-cli DEL "config:trading_config:*"
redis-cli DEL "config:global_strategy_config:*"
```
---
### 步骤3验证配置值
**检查前端显示**
- 配置项应该显示为0.30而不是30%
- 用户输入0.30直接存储0.30
**检查后端日志**
```bash
# 查看配置日志,确认配置值正确
tail -f /www/wwwroot/autosys_new/logs/trading_*.log | grep "交易配置"
```
---
## ✅ 总结
### 简化方案
1. **用户输入**直接输入小数0.30
2. **前端存储**直接存储0.30),不做转换
3. **后端使用**直接使用0.30),不需要转换
### 关键点
-**逻辑简单**:不需要任何换算
-**数据一致**:前端和后端使用相同的值
-**避免错误**:减少转换过程中的错误
### 使用建议
-**用户输入**直接输入0.30表示30%
-**验证范围**0-1之间比例形式
-**存储格式**0.30(与后端使用相同的值)
---
## 🎯 最终结论
**简化方案**
- ✅ 用户直接输入小数0.30
- ✅ 前端直接存储0.30),不做转换
- ✅ 后端直接使用0.30),不需要转换
- ✅ 怎么简单准确怎么来