auto_trade_sys/docs/币安持仓与DB同步说明.md
薇薇安 df2b8d6372 fix(config_manager, api, database, position_manager, user_data_stream): 增强配置管理和日志记录
在配置管理模块中,新增了 `ONLY_AUTO_TRADE_CREATES_RECORDS` 配置项,以控制自动开仓记录的写入行为。同时,在多个模块中优化了日志记录,确保在数据库操作和交易记录完善时提供更清晰的错误信息。这一改动旨在提升系统的稳定性和可维护性,确保交易策略的有效性与安全性。
2026-02-26 11:19:23 +08:00

3.7 KiB
Raw Permalink Blame History

币安持仓与 DB 同步说明

当出现「币安有仓、数据库没有 open 记录」时,仪表盘/持仓列表会显示这些仓位没有 idstop_loss_pricetake_profit_price,且点「补挂止盈止损」依赖接口侧用配置比例计算(已支持无 DB 补挂)。若希望在 trading_system 里为这些仓位补建 DB 记录,并自动挂止损止盈、纳入监控,需正确配置以下项。

为何会“跳过补建”

逻辑顺序:

  1. ONLY_AUTO_TRADE_CREATES_RECORDS(默认 True
    为 True 时表示「只允许自动开仓写入 DB」强制关闭补建与手动开仓建记录,即:

    • SYNC_RECOVER_MISSING_POSITIONS 被置为 False
    • SYNC_CREATE_MANUAL_ENTRY_RECORD 被置为 False
      因此日志会看到“已跳过自动创建交易记录”。
  2. SYNC_RECOVER_MISSING_POSITIONS(默认 True
    为 True 时,在被上一条关闭的前提下会对「币安有仓、DB 无 open」的 symbol 做补建:写 DB、挂 SL/TP、纳入监控。

让币安持仓与 DB 一致(推荐配置)

目标:让那 15 个(或更多)「仅币安有仓」的持仓在下次同步时自动写入 DB、挂止损止盈并进入监控。

  1. ONLY_AUTO_TRADE_CREATES_RECORDS = False
    允许同步/补建时创建 DB 记录(必改,否则补建永远关闭)。

  2. SYNC_RECOVER_MISSING_POSITIONS = True
    开启「补建缺失持仓」(通常已是 True只要没被上一条覆盖即可

  3. 修改方式:

    • 推荐:在后台配置/仪表盘的「持仓」类配置中,将 ONLY_AUTO_TRADE_CREATES_RECORDS 设为 false(保存后会写入 Redistrading_system 下次拉取配置即生效)。
    • 或直接在 Redis / 数据库配置表中把 ONLY_AUTO_TRADE_CREATES_RECORDS 设为 false。
    • 若策略从本地 config.py 读配置,则在该处将 ONLY_AUTO_TRADE_CREATES_RECORDS 设为 False。
  4. 重启 trading_system 或等待下一次持仓同步(例如定时 sync 或启动时 sync即可对当前「币安有、DB 无」的持仓执行补建。

补建时会:

  • 为每个 symbol 创建一条 open 交易记录(entry_reasonsync_recoveredsync_recovered_unknown_origin
  • 先读交易所已有止损/止盈(若有且已达保本则沿用),否则用配置的 STOP_LOSS_PERCENT / TAKE_PROFIT_PERCENT 计算并挂单;
  • 将仓位加入内存监控(保本/移动止损等)。

可选配置

  • SYNC_RECOVER_ONLY_WHEN_HAS_SLTP(默认 True
    未配置 SYSTEM_ORDER_ID_PREFIX 时:仅对「已有止损/止盈单」的持仓补建。若希望无 SL/TP 的仓位也补建,可设为 False。

  • SYSTEM_ORDER_ID_PREFIX
    若配置了系统单前缀(如 SYS),补建会尝试用开仓订单的 clientOrderId 识别是否为本系统单;无论是否带前缀,当前逻辑都会一律补建并挂 SL/TP(不再因“来历不明”或“无 SL/TP”跳过

  • SYNC_CREATE_MANUAL_ENTRY_RECORD(默认 False
    仅当 sync_recover 为 False 时生效:为 True 时会对「仅币安有仓」走另一条「手动开仓」建记录分支。通常只要把 ONLY_AUTO_TRADE_CREATES_RECORDS=FalseSYNC_RECOVER_MISSING_POSITIONS=True 即可,不必单独开这个。

日志说明

  • 若看到:
    因 ONLY_AUTO_TRADE_CREATES_RECORDS=True 已关闭补建,共 N 个仅币安持仓未写入 DB。
    表示当前配置不允许补建,按上文把 ONLY_AUTO_TRADE_CREATES_RECORDS 设为 False 并保证 SYNC_RECOVER_MISSING_POSITIONS=True 即可。

  • 若看到:
    → 补建缺失持仓:一律写入 DB、自动挂止损止盈并纳入监控
    表示补建已开启,下次同步会对缺失的 symbol 执行补建。