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.
This commit is contained in:
tinkle-community
2025-12-08 13:19:41 +08:00
parent 9c53a266c0
commit c6f6d3ba9f
+16
View File
@@ -672,5 +672,21 @@ func (tm *TraderManager) addTraderFromStore(traderCfg *store.Trader, aiModelCfg
tm.traders[traderCfg.ID] = at tm.traders[traderCfg.ID] = at
logger.Infof("✓ Trader '%s' (%s + %s) loaded to memory", traderCfg.Name, aiModelCfg.Provider, exchangeCfg.ID) 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 return nil
} }