From 86abc3a80fac5595fb06fdbb206846b23d873028 Mon Sep 17 00:00:00 2001 From: yanweidong Date: Tue, 27 Jan 2026 02:34:26 +0800 Subject: [PATCH] deving --- cmd/cli/main.go | 13 ++++++++-- internal/logic/strategy/data.go | 8 +++++- internal/logic/strategy/rule/price.go | 36 +++++++++++++++++++++++++++ 3 files changed, 54 insertions(+), 3 deletions(-) create mode 100644 internal/logic/strategy/rule/price.go diff --git a/cmd/cli/main.go b/cmd/cli/main.go index 91b8039..93019b5 100644 --- a/cmd/cli/main.go +++ b/cmd/cli/main.go @@ -8,6 +8,7 @@ import ( "git.apinb.com/quant/gostock/internal/impl" "git.apinb.com/quant/gostock/internal/logic/strategy" "git.apinb.com/quant/gostock/internal/logic/strategy/rule" + "git.apinb.com/quant/gostock/internal/logic/types" ) var ( @@ -18,8 +19,16 @@ func main() { log.Println("Hello Cli!") config.New(ServiceKey) impl.NewImpl() - data := strategy.GetData("000012.SZ") - result := rule.NewIdustry().Run(data.Basic.Industry) + + basic := strategy.GetBasic("000012.SZ") + + result := []*types.RuleResult{ + rule.NewUpDate().Run(basic.ListDate), + rule.NewST().Run(basic.Name), + rule.NewIdustry().Run(basic.Industry), + rule.NewPrice().Run(basic.TsCode), + } + printer.Json(result) log.Println("Done!") diff --git a/internal/logic/strategy/data.go b/internal/logic/strategy/data.go index 049b62d..3c41d4d 100644 --- a/internal/logic/strategy/data.go +++ b/internal/logic/strategy/data.go @@ -12,7 +12,7 @@ type StockData struct { FinaIndicator []models.StockFinaIndicator } -func GetData(code string) *StockData { +func GetFullData(code string) *StockData { var data StockData impl.DBService.Where("ts_code = ?", code).First(&data.Basic) impl.DBService.Where("ts_code = ?", code).Order("trade_date desc").Find(&data.Daily) @@ -25,3 +25,9 @@ func GetIndustry() (industry []string) { impl.DBService.Model(&models.StockBasic{}).Group("industry").Pluck("industry", &industry) return } + +func GetBasic(code string) *models.StockBasic { + var data StockData + impl.DBService.Where("ts_code = ?", code).First(&data.Basic) + return &data.Basic +} diff --git a/internal/logic/strategy/rule/price.go b/internal/logic/strategy/rule/price.go new file mode 100644 index 0000000..b27198e --- /dev/null +++ b/internal/logic/strategy/rule/price.go @@ -0,0 +1,36 @@ +package rule + +import ( + "git.apinb.com/bsm-sdk/core/printer" + "git.apinb.com/quant/gostock/internal/impl" + "git.apinb.com/quant/gostock/internal/logic/types" + "git.apinb.com/quant/gostock/internal/models" +) + +var ( + MinPrice = 5.0 +) + +type Price struct { + Key string + Name string +} + +func NewPrice() *Price { + return &Price{ + Key: "Price", + Name: "股价", + } +} + +func (r *Price) Run(code string) *types.RuleResult { + var daily models.StockDaily + impl.DBService.Where("ts_code = ?", code).Order("trade_date desc").Limit(1).First(&daily) + printer.Json(daily) + + if daily.Close < MinPrice { + return &types.RuleResult{Key: r.Key, Name: r.Name, Score: -1, Desc: "股价低于5元"} + } + + return &types.RuleResult{Key: r.Key, Name: r.Name, Score: 1, Desc: "股价高于5元"} +}