@@ -153,6 +153,7 @@ func (d *Database) createTables() error {
153153 `ALTER TABLE exchanges ADD COLUMN aster_private_key TEXT DEFAULT ''` ,
154154 `ALTER TABLE traders ADD COLUMN custom_prompt TEXT DEFAULT ''` ,
155155 `ALTER TABLE traders ADD COLUMN override_base_prompt BOOLEAN DEFAULT 0` ,
156+ `ALTER TABLE traders ADD COLUMN is_cross_margin BOOLEAN DEFAULT 1` , // 默认为全仓模式
156157 }
157158
158159 for _ , query := range alterQueries {
@@ -369,6 +370,7 @@ type TraderRecord struct {
369370 IsRunning bool `json:"is_running"`
370371 CustomPrompt string `json:"custom_prompt"` // 自定义交易策略prompt
371372 OverrideBasePrompt bool `json:"override_base_prompt"` // 是否覆盖基础prompt
373+ IsCrossMargin bool `json:"is_cross_margin"` // 是否为全仓模式(true=全仓,false=逐仓)
372374 CreatedAt time.Time `json:"created_at"`
373375 UpdatedAt time.Time `json:"updated_at"`
374376}
@@ -656,17 +658,18 @@ func (d *Database) CreateExchange(userID, id, name, typ string, enabled bool, ap
656658// CreateTrader 创建交易员
657659func (d * Database ) CreateTrader (trader * TraderRecord ) error {
658660 _ , err := d .db .Exec (`
659- INSERT INTO traders (id, user_id, name, ai_model_id, exchange_id, initial_balance, scan_interval_minutes, is_running, custom_prompt, override_base_prompt)
660- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
661- ` , trader .ID , trader .UserID , trader .Name , trader .AIModelID , trader .ExchangeID , trader .InitialBalance , trader .ScanIntervalMinutes , trader .IsRunning , trader .CustomPrompt , trader .OverrideBasePrompt )
661+ INSERT INTO traders (id, user_id, name, ai_model_id, exchange_id, initial_balance, scan_interval_minutes, is_running, custom_prompt, override_base_prompt, is_cross_margin )
662+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ? )
663+ ` , trader .ID , trader .UserID , trader .Name , trader .AIModelID , trader .ExchangeID , trader .InitialBalance , trader .ScanIntervalMinutes , trader .IsRunning , trader .CustomPrompt , trader .OverrideBasePrompt , trader . IsCrossMargin )
662664 return err
663665}
664666
665667// GetTraders 获取用户的交易员
666668func (d * Database ) GetTraders (userID string ) ([]* TraderRecord , error ) {
667669 rows , err := d .db .Query (`
668670 SELECT id, user_id, name, ai_model_id, exchange_id, initial_balance, scan_interval_minutes, is_running,
669- COALESCE(custom_prompt, '') as custom_prompt, COALESCE(override_base_prompt, 0) as override_base_prompt, created_at, updated_at
671+ COALESCE(custom_prompt, '') as custom_prompt, COALESCE(override_base_prompt, 0) as override_base_prompt,
672+ COALESCE(is_cross_margin, 1) as is_cross_margin, created_at, updated_at
670673 FROM traders WHERE user_id = ? ORDER BY created_at DESC
671674 ` , userID )
672675 if err != nil {
@@ -680,7 +683,8 @@ func (d *Database) GetTraders(userID string) ([]*TraderRecord, error) {
680683 err := rows .Scan (
681684 & trader .ID , & trader .UserID , & trader .Name , & trader .AIModelID , & trader .ExchangeID ,
682685 & trader .InitialBalance , & trader .ScanIntervalMinutes , & trader .IsRunning ,
683- & trader .CustomPrompt , & trader .OverrideBasePrompt , & trader .CreatedAt , & trader .UpdatedAt ,
686+ & trader .CustomPrompt , & trader .OverrideBasePrompt , & trader .IsCrossMargin ,
687+ & trader .CreatedAt , & trader .UpdatedAt ,
684688 )
685689 if err != nil {
686690 return nil , err
0 commit comments