Files
gostock/internal/models/strat_model.go
yanweidong 32cbe88964 deving
2026-01-31 18:22:58 +08:00

69 lines
1.4 KiB
Go

package models
import (
"time"
"git.apinb.com/bsm-sdk/core/database"
"git.apinb.com/bsm-sdk/core/utils"
"git.apinb.com/quant/gostock/internal/impl"
"gorm.io/gorm"
)
// StartModel 策略模型
type StratModel struct {
gorm.Model
StratKey string
Ymd int
Code string
UpDateDay int //上市时间,天数
IndustryScore int // 行业分组
StScore int
GtAmount int // 每日交易额大于设定值
GtPrice int // 最近20日交易日价格大于设定值
GtRoe int // ROE 是否大于设定值
Desc string
}
func init() {
database.AppendMigrate(&StratModel{})
}
// TableName 设置表名
func (StratModel) TableName() string {
return "strat_model"
}
func NewStratModel(key, code string) *StratModel {
obj := StratModel{
StratKey: key,
Ymd: GetYmd(),
Code: code,
}
return &obj
}
func (s *StratModel) AddDesc(d string) {
s.Desc = s.Desc + "||" + d
}
func (s *StratModel) Save() error {
var cnt int64
impl.DBService.Model(&StratModel{}).Where("strat_key=? and ymd=? and code=?", s.StratKey, s.Ymd, s.Code).Count(&cnt)
if cnt == 0 {
// create record.
return impl.DBService.Create(s).Error
} else {
// update record.
return impl.DBService.Model(&StratModel{}).Where("strat_key=? and ymd=? and code=?", s.StratKey, s.Ymd, s.Code).Updates(s).Error
}
return nil
}
func GetYmd() int {
ymd := time.Now().Format("20060102")
return utils.String2Int(ymd)
}