This commit is contained in:
yanweidong
2026-01-29 00:35:41 +08:00
parent 8679ff706f
commit d178a1b353
6 changed files with 5601 additions and 5496 deletions

View File

@@ -18,10 +18,12 @@ var (
)
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"`
Code string `csv:"code"`
Name string `csv:"name"`
ROE float64 `csv:"roe"`
RSI float64 `csv:"rsi"`
Desc string `csv:"desc"`
Pass string `csv:"pass"`
}
func main() {
@@ -33,10 +35,10 @@ func main() {
data_not := []*ResultData{}
for _, code := range strategy.GetStocks() {
basic := strategy.GetBasic(code)
if ok, desc := RuleFilter(basic); ok {
data_ok = append(data_ok, &ResultData{Code: code, Name: basic.Name, Desc: desc, Pass: "OK"})
if ok, data := RuleFilter(basic); ok {
data_ok = append(data_ok, data)
} else {
data_not = append(data_not, &ResultData{Code: code, Name: basic.Name, Desc: desc, Pass: "NOT"})
data_not = append(data_not, data)
}
}
@@ -60,48 +62,68 @@ func WriteResults(data []*ResultData, tag string) {
}
func RuleFilter(basic *models.StockBasic) (bool, string) {
func RuleFilter(basic *models.StockBasic) (bool, *ResultData) {
var descripts []string
data := &ResultData{
Code: basic.TsCode,
Name: basic.Name,
ROE: 0,
RSI: 0,
Desc: "",
Pass: "NOT",
}
if re := rule.NewUpDate().Run(basic.ListDate); re.Score <= 0 {
return false, re.Desc
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewST().Run(basic.Name); re.Score <= 0 {
return false, re.Desc
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewIdustry().Run(basic.Industry); re.Score <= 0 {
return false, re.Desc
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewPrice().Run(basic.TsCode); re.Score <= 0 {
return false, re.Desc
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewAmount().Run(basic.TsCode); re.Score <= 0 {
return false, re.Desc
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewRoe().Run(basic.TsCode); re.Score <= 0 {
return false, re.Desc
data.Desc = re.Desc
return false, data
} else {
data.ROE = re.Roe
descripts = append(descripts, re.Desc)
}
if re := rule.NewRsi(strategy.GetArgs(basic.TsCode)).Run(basic.TsCode); re.Score <= 0 {
return false, re.Desc
data.Desc = re.Desc
return false, data
} else {
data.RSI = re.Rsi
descripts = append(descripts, re.Desc)
}
return true, strings.Join(descripts, "#")
data.Desc = strings.Join(descripts, "#")
data.Pass = "OK"
return true, data
}