102 lines
2.1 KiB
Go
102 lines
2.1 KiB
Go
package models
|
||
|
||
import (
|
||
"strings"
|
||
"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 // 是否是ST
|
||
GtAmount int // 每日交易额大于设定值
|
||
GtPrice int // 最近20日交易日价格大于设定值
|
||
RoeScore int // ROE 是否大于设定值
|
||
ValRoe float64 // ROE 值
|
||
RecommendDesc string // 推荐描述
|
||
Status int // 状态 -1:不推荐,0:正常 1:推荐
|
||
|
||
// macd
|
||
MacdScore int `gorm:"default:0"`
|
||
MacdVal float64
|
||
|
||
// Rsi值
|
||
RsiScore int `gorm:"default:0"`
|
||
RsiValOversold int
|
||
RsiValPrve float64
|
||
RsiValLast float64
|
||
|
||
//AI
|
||
AiSummary string
|
||
AiSummary2025 string
|
||
AiSummaryBase string
|
||
AiSummaryTech string
|
||
AiScore int
|
||
AiSupportLevel float64
|
||
AiResisLevel float64
|
||
AiAction string
|
||
AiRisk string
|
||
|
||
TotalDesc string
|
||
TotalScore float64 `gorm:"default:0"`
|
||
}
|
||
|
||
func init() {
|
||
database.AppendMigrate(&StratModel{})
|
||
}
|
||
|
||
// TableName 设置表名
|
||
func (StratModel) TableName() string {
|
||
return "strat_model"
|
||
}
|
||
|
||
var (
|
||
desc []string
|
||
)
|
||
|
||
func NewStratModel(key, code string, ymd int) *StratModel {
|
||
desc = []string{}
|
||
obj := StratModel{
|
||
StratKey: key,
|
||
Ymd: ymd,
|
||
Code: code,
|
||
}
|
||
return &obj
|
||
}
|
||
|
||
func (s *StratModel) AddDesc(d string) {
|
||
desc = append(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)
|
||
s.TotalDesc = strings.Join(desc, "||")
|
||
|
||
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)
|
||
}
|