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

4.4 KiB
Raw Blame History

配置值格式简化方案

🎯 简化原则

核心原则用户直接输入小数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(不需要转换)✅

优势

简化的优势

  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

执行

# 执行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 "交易配置"

总结

简化方案

  1. 用户输入直接输入小数0.30
  2. 前端存储直接存储0.30),不做转换
  3. 后端使用直接使用0.30),不需要转换

关键点

  • 逻辑简单:不需要任何换算
  • 数据一致:前端和后端使用相同的值
  • 避免错误:减少转换过程中的错误

使用建议

  • 用户输入直接输入0.30表示30%
  • 验证范围0-1之间比例形式
  • 存储格式0.30(与后端使用相同的值)

🎯 最终结论

简化方案

  • 用户直接输入小数0.30
  • 前端直接存储0.30),不做转换
  • 后端直接使用0.30),不需要转换
  • 怎么简单准确怎么来