This commit is contained in:
yanweidong
2026-01-30 20:03:50 +08:00
parent efa83b0c96
commit 03bcce8007
3 changed files with 101 additions and 82 deletions

View File

@@ -0,0 +1,87 @@
package strategy
import (
"strings"
"git.apinb.com/quant/gostock/internal/logic/strategy/rule"
"git.apinb.com/quant/gostock/internal/logic/types"
"git.apinb.com/quant/gostock/internal/models"
)
func MustFilter(basic *models.StockBasic) (bool, *types.ResultData) {
var descripts []string
data := &types.ResultData{
Code: basic.TsCode,
Name: basic.Name,
ROE: 0,
RSI: 0,
Desc: "",
Pass: "NOT",
}
if re := rule.NewUpDate().Run(basic.ListDate); re.Score <= 0 {
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewST().Run(basic.Name); re.Score <= 0 {
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewIdustry().Run(basic.Industry); re.Score <= 0 {
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewPrice().Run(basic.TsCode); re.Score <= 0 {
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewAmount().Run(basic.TsCode); re.Score <= 0 {
data.Desc = re.Desc
return false, data
} else {
descripts = append(descripts, re.Desc)
}
if re := rule.NewRoe().Run(basic.TsCode); re.Score <= 0 {
data.Desc = re.Desc
return false, data
} else {
data.ROE = re.Roe
descripts = append(descripts, re.Desc)
}
if re := rule.NewRsi(GetArgs(basic.TsCode)).Run(basic.TsCode); re.Score <= 0 {
data.Desc = re.Desc
return false, data
} else {
data.RSI = re.Rsi
descripts = append(descripts, re.Desc)
}
data.Desc = strings.Join(descripts, "#")
data.Pass = "OK"
return true, data
}
func ClacFilter(basic *models.StockBasic) (bool, *types.ResultData) {
var descripts []string
data := &types.ResultData{
Code: basic.TsCode,
Name: basic.Name,
ROE: 0,
RSI: 0,
Desc: "",
Pass: "NOT",
}
}

View File

@@ -8,3 +8,12 @@ type RuleResult struct {
Rsi float64
Desc string
}
type ResultData struct { // Our example struct, you can use "-" to ignore a field
Code string `csv:"code"`
Name string `csv:"name"`
ROE float64 `csv:"roe"`
RSI float64 `csv:"rsi"`
Desc string `csv:"desc"`
Pass string `csv:"pass"`
}