mirror of
https://github.com/laoxong/nofx.git
synced 2026-06-04 09:58:22 +08:00
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:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user