feat: simplify Claw402 autopilot trading flow

This commit is contained in:
tinkle-community
2026-06-27 00:37:59 +08:00
parent 961e016d33
commit 24f6421a73
151 changed files with 7453 additions and 41117 deletions

View File

@@ -417,7 +417,7 @@ func ensureHyperliquidNativeStrategy(traderName, exchangeType string, cfg *store
}
source := strings.ToLower(strings.TrimSpace(cfg.CoinSource.SourceType))
if source == "hyper_rank" || source == "static" || source == "hyper_all" || source == "hyper_main" {
if source == "hyper_rank" || source == "vergex_signal" || source == "static" || source == "hyper_all" || source == "hyper_main" {
return
}
@@ -645,16 +645,19 @@ func (tm *TraderManager) addTraderFromStore(traderCfg *store.Trader, aiModelCfg
// Load strategy config (must have strategy)
var strategyConfig *store.StrategyConfig
strategyConfigRaw := ""
if traderCfg.StrategyID != "" {
strategy, err := st.Strategy().Get(traderCfg.UserID, traderCfg.StrategyID)
if err != nil {
return fmt.Errorf("failed to load strategy %s for trader %s: %w", traderCfg.StrategyID, traderCfg.Name, err)
}
strategyConfigRaw = strategy.Config
// Parse JSON config
strategyConfig, err = strategy.ParseConfig()
if err != nil {
return fmt.Errorf("failed to parse strategy config for trader %s: %w", traderCfg.Name, err)
}
strategyConfig.ClampLimits()
logger.Infof("✓ Trader %s loaded strategy config: %s", traderCfg.Name, strategy.Name)
ensureHyperliquidNativeStrategy(traderCfg.Name, exchangeCfg.ExchangeType, strategyConfig)
} else {
@@ -669,6 +672,7 @@ func (tm *TraderManager) addTraderFromStore(traderCfg *store.Trader, aiModelCfg
traderConfig := trader.AutoTraderConfig{
ID: traderCfg.ID,
Name: traderCfg.Name,
StrategyID: traderCfg.StrategyID,
AIModel: aiModelCfg.Provider,
Exchange: exchangeCfg.ExchangeType, // Exchange type: binance/bybit/okx/etc
ExchangeID: exchangeCfg.ID, // Exchange account UUID (for multi-account)
@@ -686,6 +690,7 @@ func (tm *TraderManager) addTraderFromStore(traderCfg *store.Trader, aiModelCfg
IsCrossMargin: traderCfg.IsCrossMargin,
ShowInCompetition: traderCfg.ShowInCompetition,
StrategyConfig: strategyConfig,
StrategyConfigRaw: strategyConfigRaw,
}
logger.Infof("📊 Loading trader %s: ScanIntervalMinutes=%d (from DB), ScanInterval=%v",

View File

@@ -265,7 +265,7 @@ func TestEnsureHyperliquidNativeStrategy(t *testing.T) {
})
t.Run("native sources are kept as-is", func(t *testing.T) {
nativeSources := []string{"hyper_rank", "static", "hyper_all", "hyper_main", " Hyper_Rank "}
nativeSources := []string{"hyper_rank", "vergex_signal", "static", "hyper_all", "hyper_main", " Hyper_Rank "}
for _, src := range nativeSources {
cfg := &store.StrategyConfig{
CoinSource: store.CoinSourceConfig{SourceType: src},