From c6f6d3ba9fb36f6580a3f37a1792173f62db5049 Mon Sep 17 00:00:00 2001 From: tinkle-community Date: Mon, 8 Dec 2025 13:19:41 +0800 Subject: [PATCH] feat: auto-restart traders that were running before shutdown When the program restarts, traders that had is_running=true in the database will now automatically start. If a trader fails to run, its status will be updated to false in the database. --- manager/trader_manager.go | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/manager/trader_manager.go b/manager/trader_manager.go index 60dd392c..ef69f6c9 100644 --- a/manager/trader_manager.go +++ b/manager/trader_manager.go @@ -672,5 +672,21 @@ func (tm *TraderManager) addTraderFromStore(traderCfg *store.Trader, aiModelCfg tm.traders[traderCfg.ID] = at logger.Infof("✓ Trader '%s' (%s + %s) loaded to memory", traderCfg.Name, aiModelCfg.Provider, exchangeCfg.ID) + + // Auto-start if trader was running before shutdown + if traderCfg.IsRunning { + logger.Infof("🔄 Auto-starting trader '%s' (was running before shutdown)...", traderCfg.Name) + go func(trader *trader.AutoTrader, traderName, traderID, userID string) { + if err := trader.Run(); err != nil { + logger.Warnf("⚠️ Trader '%s' stopped with error: %v", traderName, err) + // Update database to reflect stopped state + if st != nil { + _ = st.Trader().UpdateStatus(userID, traderID, false) + } + } + }(at, traderCfg.Name, traderCfg.ID, traderCfg.UserID) + logger.Infof("✅ Trader '%s' auto-started successfully", traderCfg.Name) + } + return nil }