@@ -210,6 +210,7 @@ type CreateTraderRequest struct {
210210 AIModelID string `json:"ai_model_id" binding:"required"`
211211 ExchangeID string `json:"exchange_id" binding:"required"`
212212 InitialBalance float64 `json:"initial_balance"`
213+ ScanIntervalMinutes int `json:"scan_interval_minutes"`
213214 BTCETHLeverage int `json:"btc_eth_leverage"`
214215 AltcoinLeverage int `json:"altcoin_leverage"`
215216 TradingSymbols string `json:"trading_symbols"`
@@ -332,6 +333,12 @@ func (s *Server) handleCreateTrader(c *gin.Context) {
332333 systemPromptTemplate = req .SystemPromptTemplate
333334 }
334335
336+ // 设置扫描间隔默认值
337+ scanIntervalMinutes := req .ScanIntervalMinutes
338+ if scanIntervalMinutes <= 0 {
339+ scanIntervalMinutes = 3 // 默认3分钟
340+ }
341+
335342 // 创建交易员配置(数据库实体)
336343 trader := & config.TraderRecord {
337344 ID : traderID ,
@@ -349,7 +356,7 @@ func (s *Server) handleCreateTrader(c *gin.Context) {
349356 OverrideBasePrompt : req .OverrideBasePrompt ,
350357 SystemPromptTemplate : systemPromptTemplate ,
351358 IsCrossMargin : isCrossMargin ,
352- ScanIntervalMinutes : 3 , // 默认3分钟
359+ ScanIntervalMinutes : scanIntervalMinutes ,
353360 IsRunning : false ,
354361 }
355362
@@ -379,16 +386,17 @@ func (s *Server) handleCreateTrader(c *gin.Context) {
379386
380387// UpdateTraderRequest 更新交易员请求
381388type UpdateTraderRequest struct {
382- Name string `json:"name" binding:"required"`
383- AIModelID string `json:"ai_model_id" binding:"required"`
384- ExchangeID string `json:"exchange_id" binding:"required"`
385- InitialBalance float64 `json:"initial_balance"`
386- BTCETHLeverage int `json:"btc_eth_leverage"`
387- AltcoinLeverage int `json:"altcoin_leverage"`
388- TradingSymbols string `json:"trading_symbols"`
389- CustomPrompt string `json:"custom_prompt"`
390- OverrideBasePrompt bool `json:"override_base_prompt"`
391- IsCrossMargin * bool `json:"is_cross_margin"`
389+ Name string `json:"name" binding:"required"`
390+ AIModelID string `json:"ai_model_id" binding:"required"`
391+ ExchangeID string `json:"exchange_id" binding:"required"`
392+ InitialBalance float64 `json:"initial_balance"`
393+ ScanIntervalMinutes int `json:"scan_interval_minutes"`
394+ BTCETHLeverage int `json:"btc_eth_leverage"`
395+ AltcoinLeverage int `json:"altcoin_leverage"`
396+ TradingSymbols string `json:"trading_symbols"`
397+ CustomPrompt string `json:"custom_prompt"`
398+ OverrideBasePrompt bool `json:"override_base_prompt"`
399+ IsCrossMargin * bool `json:"is_cross_margin"`
392400}
393401
394402// handleUpdateTrader 更新交易员配置
@@ -437,23 +445,30 @@ func (s *Server) handleUpdateTrader(c *gin.Context) {
437445 if altcoinLeverage <= 0 {
438446 altcoinLeverage = existingTrader .AltcoinLeverage // 保持原值
439447 }
440-
448+
449+ // 设置扫描间隔,允许更新
450+ scanIntervalMinutes := req .ScanIntervalMinutes
451+ if scanIntervalMinutes <= 0 {
452+ scanIntervalMinutes = existingTrader .ScanIntervalMinutes // 保持原值
453+ }
454+
441455 // 更新交易员配置
442456 trader := & config.TraderRecord {
443- ID : traderID ,
444- UserID : userID ,
445- Name : req .Name ,
446- AIModelID : req .AIModelID ,
447- ExchangeID : req .ExchangeID ,
448- InitialBalance : req .InitialBalance ,
449- BTCETHLeverage : btcEthLeverage ,
450- AltcoinLeverage : altcoinLeverage ,
451- TradingSymbols : req .TradingSymbols ,
452- CustomPrompt : req .CustomPrompt ,
453- OverrideBasePrompt : req .OverrideBasePrompt ,
454- IsCrossMargin : isCrossMargin ,
455- ScanIntervalMinutes : existingTrader .ScanIntervalMinutes , // 保持原值
456- IsRunning : existingTrader .IsRunning , // 保持原值
457+ ID : traderID ,
458+ UserID : userID ,
459+ Name : req .Name ,
460+ AIModelID : req .AIModelID ,
461+ ExchangeID : req .ExchangeID ,
462+ InitialBalance : req .InitialBalance ,
463+ BTCETHLeverage : btcEthLeverage ,
464+ AltcoinLeverage : altcoinLeverage ,
465+ TradingSymbols : req .TradingSymbols ,
466+ CustomPrompt : req .CustomPrompt ,
467+ OverrideBasePrompt : req .OverrideBasePrompt ,
468+ SystemPromptTemplate : existingTrader .SystemPromptTemplate , // 保持原值
469+ IsCrossMargin : isCrossMargin ,
470+ ScanIntervalMinutes : scanIntervalMinutes ,
471+ IsRunning : existingTrader .IsRunning , // 保持原值
457472 }
458473
459474 // 更新数据库
@@ -805,20 +820,21 @@ func (s *Server) handleGetTraderConfig(c *gin.Context) {
805820 aiModelID := traderConfig .AIModelID
806821
807822 result := map [string ]interface {}{
808- "trader_id" : traderConfig .ID ,
809- "trader_name" : traderConfig .Name ,
810- "ai_model" : aiModelID ,
811- "exchange_id" : traderConfig .ExchangeID ,
812- "initial_balance" : traderConfig .InitialBalance ,
813- "btc_eth_leverage" : traderConfig .BTCETHLeverage ,
814- "altcoin_leverage" : traderConfig .AltcoinLeverage ,
815- "trading_symbols" : traderConfig .TradingSymbols ,
816- "custom_prompt" : traderConfig .CustomPrompt ,
817- "override_base_prompt" : traderConfig .OverrideBasePrompt ,
818- "is_cross_margin" : traderConfig .IsCrossMargin ,
819- "use_coin_pool" : traderConfig .UseCoinPool ,
820- "use_oi_top" : traderConfig .UseOITop ,
821- "is_running" : isRunning ,
823+ "trader_id" : traderConfig .ID ,
824+ "trader_name" : traderConfig .Name ,
825+ "ai_model" : aiModelID ,
826+ "exchange_id" : traderConfig .ExchangeID ,
827+ "initial_balance" : traderConfig .InitialBalance ,
828+ "scan_interval_minutes" : traderConfig .ScanIntervalMinutes ,
829+ "btc_eth_leverage" : traderConfig .BTCETHLeverage ,
830+ "altcoin_leverage" : traderConfig .AltcoinLeverage ,
831+ "trading_symbols" : traderConfig .TradingSymbols ,
832+ "custom_prompt" : traderConfig .CustomPrompt ,
833+ "override_base_prompt" : traderConfig .OverrideBasePrompt ,
834+ "is_cross_margin" : traderConfig .IsCrossMargin ,
835+ "use_coin_pool" : traderConfig .UseCoinPool ,
836+ "use_oi_top" : traderConfig .UseOITop ,
837+ "is_running" : isRunning ,
822838 }
823839
824840 c .JSON (http .StatusOK , result )
0 commit comments