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