Files
gostock/cmd/cli/main.go

60 lines
1.3 KiB
Go
Raw Normal View History

2026-01-27 00:25:34 +08:00
package main
2026-01-27 02:09:44 +08:00
import (
"log"
"git.apinb.com/quant/gostock/internal/config"
"git.apinb.com/quant/gostock/internal/impl"
"git.apinb.com/quant/gostock/internal/logic/strategy"
"git.apinb.com/quant/gostock/internal/logic/strategy/rule"
2026-01-28 21:55:50 +08:00
"git.apinb.com/quant/gostock/internal/models"
2026-01-27 02:09:44 +08:00
)
2026-01-27 00:25:34 +08:00
var (
2026-01-27 02:09:44 +08:00
ServiceKey = "gostock"
2026-01-27 00:25:34 +08:00
)
func main() {
log.Println("Hello Cli!")
2026-01-27 02:09:44 +08:00
config.New(ServiceKey)
impl.NewImpl()
2026-01-27 02:34:26 +08:00
2026-01-28 02:18:48 +08:00
var okStocks []string
for _, code := range strategy.GetStocks() {
2026-01-28 21:55:50 +08:00
basic := strategy.GetBasic(code)
if ok, desc := RuleFilter(basic); ok {
2026-01-28 02:18:48 +08:00
okStocks = append(okStocks, code)
2026-01-28 21:55:50 +08:00
log.Println(code, basic.Name, "===>", "OK!")
2026-01-28 21:14:37 +08:00
} else {
2026-01-28 21:55:50 +08:00
log.Println(code, basic.Name, desc)
2026-01-28 02:18:48 +08:00
}
}
2026-01-28 21:14:37 +08:00
log.Println("共选出", len(okStocks), "支标的!")
2026-01-28 02:18:48 +08:00
log.Println("Done!")
}
2026-01-27 02:34:26 +08:00
2026-01-28 21:55:50 +08:00
func RuleFilter(basic *models.StockBasic) (bool, string) {
if re := rule.NewUpDate().Run(basic.ListDate); re.Score <= 0 {
return false, re.Desc
2026-01-27 02:34:26 +08:00
}
2026-01-28 21:14:37 +08:00
2026-01-28 21:55:50 +08:00
if re := rule.NewST().Run(basic.Name); re.Score <= 0 {
return false, re.Desc
}
if re := rule.NewIdustry().Run(basic.Industry); re.Score <= 0 {
return false, re.Desc
2026-01-28 21:14:37 +08:00
}
2026-01-28 21:55:50 +08:00
if re := rule.NewPrice().Run(basic.TsCode); re.Score <= 0 {
return false, re.Desc
}
if re := rule.NewAmount().Run(basic.TsCode); re.Score <= 0 {
return false, re.Desc
}
return true, ""
2026-01-27 00:25:34 +08:00
}