auto_trade_sys/docs/全局配置与数据库同步.md
薇薇安 0a0bcd941b a
2026-02-01 20:45:18 +08:00

2.9 KiB
Raw Blame History

全局配置与数据库同步

1. 是否需要“同步到数据库”?

分两种理解:

1在页面上改完并保存 → 已实现

  • 已实现:在「全局配置」页修改任意配置项并保存时,后端会调用 update_global_configs_batch,对每条配置执行 GlobalStrategyConfig.set(...)
  • GlobalStrategyConfig.set 使用 INSERT ... ON DUPLICATE KEY UPDATE
    • 若该 config_key 在表 global_strategy_config不存在,会插入一条新记录;
    • 已存在,会更新该记录的 config_valueconfig_typecategorydescription 等。
  • 因此:新加的配置项(如 MAX_RSI_FOR_LONG、MIN_RSI_FOR_SHORT 等)只要在页面上改一次并点保存,就会自动写入数据库,不需要单独“同步到数据库”的步骤。

2不打开页面一次性把“缺省值”写入数据库 → 可选脚本

  • 若希望新配置项一开始就出现在数据库里(方便备份、导出、或不在 UI 改也能看到默认值),可以执行一次同步缺省脚本
  • 脚本会检查 global_strategy_config 表,对尚未存在的 key 插入默认值;已存在的 key 不会覆盖

2. 已实现的能力小结

场景 是否已实现 说明
在「全局配置」页修改并保存 调用 POST /api/config/global/batch,写入 global_strategy_config
新 key 第一次保存 GlobalStrategyConfig.set 用 INSERT ... ON DUPLICATE KEY UPDATE会自动插入新 key
策略/后端读取配置 config_manager.get_trading_config() 从全局配置表(及 Redis缺省时用代码里的默认值
一次性把缺省项写入 DB 可选 运行 backend/sync_global_config_defaults.py(见下)

3. 可选:一次性同步缺省到数据库

若希望把新增的全局配置项默认值一次性写入 global_strategy_config 表(不覆盖已有记录),可在项目根目录或 backend 目录执行:

# 在项目根目录
cd backend && python sync_global_config_defaults.py

# 或(若 PYTHONPATH 已含 backend
python backend/sync_global_config_defaults.py

脚本会:

  • 只插入当前在表中不存在的 config_key
  • 已存在的 key 不会被修改;
  • 默认会同步的项包括:MAX_RSI_FOR_LONGMAX_CHANGE_PERCENT_FOR_LONGMIN_RSI_FOR_SHORTMAX_CHANGE_PERCENT_FOR_SHORTTAKE_PROFIT_1_PERCENTSCAN_EXTRA_SYMBOLS_FOR_SUPPLEMENTBETA_FILTER_ENABLEDBETA_FILTER_THRESHOLD 等(见脚本内 DEFAULTS_TO_SYNC)。

结论

  • 需要同步到数据库吗? 若你会在「全局配置」里改这些项并保存,则不需要额外同步,保存即写入数据库。
  • 有实现吗? 有:保存即写入;另提供可选脚本,用于一次性把缺省值写入数据库。