From edc0f41d76141cacde2419fc8eec98d96bf977ea Mon Sep 17 00:00:00 2001 From: Shui <88711385+hzb1115@users.noreply.github.com> Date: Sat, 8 Nov 2025 13:57:28 -0500 Subject: [PATCH] fix(auto_trader): trader's stop channel isn't set when restarting (#779) * fix(auto_trader): trader's stop channel isn't set when restarting * fix stopping trader immediately --------- Co-authored-by: zbhan --- trader/auto_trader.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/trader/auto_trader.go b/trader/auto_trader.go index 88ed54fa..117af718 100644 --- a/trader/auto_trader.go +++ b/trader/auto_trader.go @@ -239,10 +239,15 @@ func NewAutoTrader(config AutoTraderConfig, database interface{}, userID string) // Run 运行自动交易主循环 func (at *AutoTrader) Run() error { at.isRunning = true + at.stopMonitorCh = make(chan struct{}) + at.startTime = time.Now() + log.Println("🚀 AI驱动自动交易系统启动") log.Printf("💰 初始余额: %.2f USDT", at.initialBalance) log.Printf("⚙️ 扫描间隔: %v", at.config.ScanInterval) log.Println("🤖 AI将全权决定杠杆、仓位大小、止损止盈等参数") + at.monitorWg.Add(1) + defer at.monitorWg.Done() // 启动回撤监控 at.startDrawdownMonitor() @@ -261,6 +266,9 @@ func (at *AutoTrader) Run() error { if err := at.runCycle(); err != nil { log.Printf("❌ 执行失败: %v", err) } + case <-at.stopMonitorCh: + log.Printf("[%s] ⏹ 收到停止信号,退出自动交易主循环", at.name) + return nil } }