Files
gostock/internal/logic/restful/starter.go

62 lines
2.1 KiB
Go
Raw Normal View History

2026-02-09 18:28:00 +08:00
package restful
import (
"log"
2026-02-12 20:29:02 +08:00
"git.apinb.com/quant/gostock/internal/impl"
2026-02-09 18:28:00 +08:00
"git.apinb.com/quant/gostock/internal/logic/mock"
"git.apinb.com/quant/gostock/internal/logic/strategy"
"git.apinb.com/quant/gostock/internal/logic/strategy/rule"
"git.apinb.com/quant/gostock/internal/models"
"github.com/gin-gonic/gin"
)
func Starter(ctx *gin.Context) {
log.Println("Strategy START.")
ymd := models.GetYmd()
for _, code := range strategy.GetStocks() {
strategy.InitCacheByCode(code)
model := models.NewStratModel("selector", code, ymd)
stratRule := rule.NewRule(model)
{
2026-02-13 01:23:27 +08:00
// 规则:上市时间
2026-02-09 18:28:00 +08:00
stratRule.RunUpDate(strategy.Cache[code].Basic.ListDate)
2026-02-13 01:23:27 +08:00
// 规则是否是ST
2026-02-09 18:28:00 +08:00
stratRule.RunST(strategy.Cache[code].Basic.Name)
2026-02-13 01:23:27 +08:00
// 规则:行业,剔除夕阳和中性行业
2026-02-09 18:28:00 +08:00
stratRule.RunIndustry(strategy.Cache[code].Basic.Industry)
2026-02-13 01:23:27 +08:00
// 规则最近20天每天最低价高于5元
2026-02-09 18:28:00 +08:00
stratRule.RunPrice(code)
2026-02-13 01:23:27 +08:00
// 规则每天交易额超过10亿
2026-02-09 18:28:00 +08:00
stratRule.RunAmount(code)
2026-02-13 01:23:27 +08:00
// 规则ROE 市盈率必须为正
2026-02-09 18:28:00 +08:00
stratRule.RunRoe(code)
2026-02-13 01:23:27 +08:00
// 规则RSI指标贴近下轨并成上涨趋势
2026-02-09 18:28:00 +08:00
stratRule.RunRsi(code)
2026-02-13 01:23:27 +08:00
// 满足以上规则在让Deepseek分析
if model.UpDateDay > 180 && model.StScore > 0 && model.IndustryScore > 1 && model.GtPrice > 0 && model.GtAmount > 0 && model.GtRoe > 0 && model.ScoreRsi > 0 {
2026-02-09 18:28:00 +08:00
model.AiScore = 0 // 待分析
2026-02-12 22:21:03 +08:00
model.RecommendDesc = "Rule规则"
2026-02-09 18:28:00 +08:00
} else {
model.AiScore = -2
model.AddDesc("无需AI分析")
}
2026-02-12 20:29:02 +08:00
2026-02-09 18:28:00 +08:00
}
model.Save()
}
2026-02-13 01:23:27 +08:00
// 加入资金流向特大的标的
2026-02-12 20:29:02 +08:00
var codes []string
2026-02-12 21:52:32 +08:00
impl.DBService.Model(&models.MoneyTotal{}).Where("is_greater_pervious = ? and last3_day_mf_amount>?", true, 100000).Pluck("code", &codes)
2026-02-12 22:21:03 +08:00
impl.DBService.Model(&models.StratModel{}).Where("ai_score=-2 and code in ?", codes).Updates(map[string]any{"ai_score": 0, "recommend_desc": "资金流向"})
2026-02-12 20:29:02 +08:00
2026-02-13 01:23:27 +08:00
// Todo: 舆论分析得出的标的
2026-02-13 01:24:51 +08:00
// AI分析根据基本资料过去200交易日的数据200日的财务指标3年财报给出得分
2026-02-09 18:28:00 +08:00
strategy.BootAiStart("selector", ymd)
log.Println("Strategy END.")
mock.Run("selector", ymd)
}