This commit is contained in:
yanweidong
2026-01-28 23:27:21 +08:00
parent 303acaccb2
commit b4a2962db2
6 changed files with 49 additions and 19 deletions

View File

@@ -2,39 +2,63 @@ package main
import (
"log"
"os"
"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"
"git.apinb.com/quant/gostock/internal/models"
"github.com/gocarina/gocsv"
)
var (
ServiceKey = "gostock"
)
type ResultData struct { // Our example struct, you can use "-" to ignore a field
Code string `csv:"code"`
Name string `csv:"name"`
Desc string `csv:"desc"`
Pass string `csv:"pass"`
}
func main() {
log.Println("Hello Cli!")
config.New(ServiceKey)
impl.NewImpl()
var okStocks []string
data_ok := []*ResultData{}
data_not := []*ResultData{}
for _, code := range strategy.GetStocks() {
basic := strategy.GetBasic(code)
if ok, desc := RuleFilter(basic); ok {
okStocks = append(okStocks, code)
log.Println(code, basic.Name, "===>", "OK!")
data_ok = append(data_ok, &ResultData{Code: code, Name: basic.Name, Desc: desc, Pass: "OK"})
} else {
log.Println(code, basic.Name, desc)
data_not = append(data_not, &ResultData{Code: code, Name: basic.Name, Desc: desc, Pass: "NOT"})
}
}
log.Println("共选出", len(okStocks), "支标的!")
WriteResults(data_ok, "ok")
WriteResults(data_ok, "not")
log.Println("Done!")
}
func WriteResults(data []*ResultData, tag string) {
rf, err := os.OpenFile("./result/stocks_"+tag+".csv", os.O_RDWR|os.O_CREATE, os.ModePerm)
if err != nil {
panic(err)
}
defer rf.Close()
err = gocsv.MarshalFile(&data, rf) // Use this to save the CSV back to the file
if err != nil {
panic(err)
}
}
func RuleFilter(basic *models.StockBasic) (bool, string) {
if re := rule.NewUpDate().Run(basic.ListDate); re.Score <= 0 {
return false, re.Desc