文档与实现对齐:停机是 SIGTERM 且会平仓,补充崩溃/主动停机的差异

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jack
2026-08-28 17:13:56 +08:00
co-authored by Cursor
parent 1642b1bbfc
commit 3e3d579e35
+6 -1
View File
@@ -117,7 +117,8 @@ journalctl -u chan-live-ship -f # 搬运日志
# 停新开仓,但保留在场仓位的管理(48 分钟超时平仓在执行器进程里)
sudo systemctl stop chan-live-ship
# 全停。执行器收到 SIGINT 会先平掉在场仓位再退出,给了 90s
# 全停。执行器收到 SIGTERM 会**撤挂单 + 市价平掉在场仓位**再退出
# (内部平仓上限 60s,systemd 给了 90s 停机窗口)
sudo systemctl stop chan-live-exec
# 代码回滚
@@ -144,6 +145,10 @@ cd /opt/chan && sudo git reset --hard <sha> && sudo systemctl restart chan-live-
- **进程死掉不会变成裸仓。** 止损与止盈都挂在交易所侧(`presetStopLossPrice`
与 post-only reduce-only 限价单),只有 48 分钟超时平仓在本进程。所以进程死
掉的后果是持仓超过 48 根,不是失去保护。
- **崩溃与主动停机的处理不同,是刻意的。** 崩溃后 systemd 几秒内重启,
`reconcile` 接着撤挂单 + 平掉遗留仓位,空窗期由交易所侧止损兜着。主动
`systemctl stop` 则在退出前就平掉——因为停机后没人重启,仓位会一直挂到止损
或止盈,超时腿丢了就不是回测那个出场结构了。
- **断线超过 20s 就等于漏掉那期间的信号。** 重连会把总线重放上来,但旧信号会被
staleness 闸挡掉。这是对的——参考成交价是次根开盘价,过了就不是回测那个价。
- **重启时会平掉交易所上已有的仓位**(`reconcile`)。接管要重建入场价、ATR、