This commit is contained in:
2026-02-19 11:37:46 +08:00
parent 0100d09be5
commit 7cf1a3de97
5 changed files with 110 additions and 12 deletions

View File

@@ -57,5 +57,6 @@ func Starter(ctx *gin.Context) {
// AI分析根据基本资料过去200交易日的数据200日的财务指标3年财报给出得分
strategy.BootAiStart("selector", ymd)
log.Println("Strategy END.")
strategy.TotalScore(ymd)
mock.Run("selector", ymd)
}

View File

@@ -46,6 +46,12 @@ func (r *RuleFactory) RunRsi(code string) {
return
}
if args.RsiOversold == 0 {
r.Model.ScoreRsi = -1
r.Model.AddDesc("RSI RsiOversold=0,参数错误!")
return
}
if conf.BestByProfit != "rsi" {
r.Model.ScoreRsi = -1
r.Model.AddDesc("BestByProfit不是RSI")
@@ -72,6 +78,12 @@ func (r *RuleFactory) RunRsi(code string) {
prveRsiInt := int(prveRsi)
lastRsiInt := int(lastRsi)
if lastRsiInt == 0 {
r.Model.ScoreRsi = -1
r.Model.AddDesc("RSI lastRsiInt=0,计算错误!")
return
}
// 跌破RSI下轨
if lastRsiInt > args.RsiOversold {
if CheckLowest(close, lastRsiInt, 14) {

View File

@@ -0,0 +1,23 @@
package strategy
import (
"log"
"git.apinb.com/bsm-sdk/core/utils"
"git.apinb.com/quant/gostock/internal/impl"
"git.apinb.com/quant/gostock/internal/models"
)
func TotalScore(ymd int) {
log.Println("Total Score", ymd)
impl.DBService.Model(&models.StratModel{}).Where("ymd=?", ymd).Update("total_score", 0)
where := "where up_date_day>180 and st_score>0 and gt_amount>0 and gt_price>0 and gt_roe>0 and score_rsi>0 and ai_score>=5 and ymd=" + utils.Int2String(ymd)
sql := "update strat_model set total_score=industry_score+val_roe+ai_score " + where
log.Println("SQL:", sql)
err := impl.DBService.Exec(sql).Error
if err != nil {
log.Println("Failed to update total score:", err)
return
}
}

View File

@@ -1,7 +1,7 @@
package models
import (
"fmt"
"strings"
"time"
"git.apinb.com/bsm-sdk/core/database"
@@ -42,6 +42,9 @@ type StratModel struct {
AiResisLevel float64
AiAction string
AiRisk string
TotalDesc string
TotalScore float64
}
func init() {
@@ -53,7 +56,12 @@ 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,
@@ -63,22 +71,13 @@ func NewStratModel(key, code string, ymd int) *StratModel {
}
func (s *StratModel) AddDesc(d string) {
hash := utils.Md5(fmt.Sprintf("%s-%d-%s:%s", s.StratKey, s.Ymd, s.Code, d))
var cnt int64
impl.DBService.Model(&StratDesc{}).Where("hash=?", hash).Count(&cnt)
if cnt > 0 {
return
}
s.Desc = append(s.Desc, StratDesc{
Hash: hash,
Desc: d,
})
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.