deving
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user