This commit is contained in:
2026-02-27 13:26:22 +08:00
parent 4dde784047
commit fc5a1be7e1
8 changed files with 47 additions and 40 deletions

View File

@@ -1,23 +1,25 @@
package restful
import (
"git.apinb.com/bsm-sdk/core/utils"
"git.apinb.com/quant/gostock/internal/impl"
"git.apinb.com/quant/gostock/internal/logic/strategy"
"git.apinb.com/quant/gostock/internal/models"
"github.com/gin-gonic/gin"
)
func Recommend(ctx *gin.Context) {
ymd := lastYmd()
strategy.TotalScore(ymd)
ymdQuery := ctx.DefaultQuery("ymd", "")
var ymd int
if ymdQuery != "" {
ymd = utils.String2Int(ymdQuery)
}
if ymd == 0 {
ymd = models.GetYmd()
}
var stocks []string
impl.DBService.Model(&models.StratModel{}).Where("total_score>?", 0).Pluck("code", &stocks)
impl.DBService.Model(&models.StratModel{}).Where("status=2 and ai_score>=5 and ymd=?", ymd).Pluck("code", &stocks)
ctx.JSON(200, stocks)
return
}
func lastYmd() int {
var ymd int
sql := "select ymd from strat_model sm group by ymd order by ymd desc limit 1"
impl.DBService.Raw(sql).Scan(&ymd)
return ymd
}

View File

@@ -67,19 +67,34 @@ func Starter(ctx *gin.Context) {
var allowStocks []*models.StratModel
impl.DBService.Model(&models.StratModel{}).Where("status=1 and ymd=?", ymd).Find(&allowStocks)
for _, m := range allowStocks {
upd := map[string]any{
"recommend_desc": "策略规则",
}
// CTARSI指标贴近下轨并成上涨趋势
rsiResult := indicator.RunRsi(m.Code)
impl.DBService.Model(m).Where("id=?", m.ID).Updates(map[string]any{"rsi_score": rsiResult.Score, "rsi_val_oversold": rsiResult.Oversold, "rsi_val_prve": rsiResult.Prve, "rsi_val_last": rsiResult.Last, "recommend_desc": m.RecommendDesc + "||Rsi:" + rsiResult.Desc})
upd["rsi_score"] = rsiResult.Score
upd["rsi_val_oversold"] = rsiResult.Oversold
upd["rsi_val_prve"] = rsiResult.Prve
upd["rsi_val_last"] = rsiResult.Last
upd["total_desc"] = m.TotalDesc + "||Rsi:" + rsiResult.Desc
// CTAMACD指标红绿柱及价量关系
macdResult := indicator.RunMacd(m.Code)
impl.DBService.Model(m).Where("id=?", m.ID).Updates(map[string]any{"macd_score": macdResult.Score, "macd_val": macdResult.Val, "recommend_desc": m.RecommendDesc + "||Macd:" + macdResult.Desc})
upd["macd_score"] = macdResult.Score
upd["macd_val"] = macdResult.Val
upd["total_desc"] = upd["total_desc"].(string) + "||Macd:" + macdResult.Desc
// 更新数据
impl.DBService.Model(&models.StratModel{}).Where("id=?", m.ID).Updates(upd)
}
// 将满足条件的状态标记为2,待AI分析
impl.DBService.Model(&models.StratModel{}).Where("ymd=? and rsi_score>0 and macd_score>0 and status=1", ymd).Updates(map[string]any{"status": 2})
// 加入资金流向特大的标的
var codes []string
impl.DBService.Model(&models.MoneyTotal{}).Where("is_greater_pervious = ? and last3_day_mf_amount>?", true, 100000).Pluck("code", &codes)
impl.DBService.Model(&models.StratModel{}).Where("ai_score=-2 and code in ?", codes).Updates(map[string]any{"ai_score": 0, "recommend_desc": "资金流向"})
impl.DBService.Model(&models.StratModel{}).Where("ymd=? and code in ?", ymd, codes).Updates(map[string]any{"status": 2, "recommend_desc": "资金流向"})
// Todo: 舆论分析得出的标的