This commit is contained in:
yanweidong
2026-01-30 21:02:02 +08:00
parent 03bcce8007
commit e38e584535
7 changed files with 5510 additions and 5513 deletions

View File

@@ -15,7 +15,7 @@ var (
ServiceKey = "gostock"
)
func main() {
func main2() {
log.Println("Hello Cli!")
config.New(ServiceKey)
impl.NewImpl()
@@ -23,7 +23,7 @@ func main() {
strategy.GenMarkData("601899.SH")
}
func main2() {
func main() {
log.Println("Hello Cli!")
config.New(ServiceKey)
impl.NewImpl()

View File

@@ -57,31 +57,28 @@ func MustFilter(basic *models.StockBasic) (bool, *types.ResultData) {
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)
}
// 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",
func ClacFilter(allow []*types.ResultData) []*types.ResultData {
for idx, item := range allow {
re := rule.NewRsi(GetArgs(item.Code)).Run(item.Code)
allow[idx].Score = re.Score
allow[idx].RSI = re.Result.(float64)
}
return allow
}

View File

@@ -39,5 +39,5 @@ func (r *Roe) Run(code string) *types.RuleResult {
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: -1, Desc: fmt.Sprintf("ROE=%.2f 低于%.2f", data.Roe, MinRoe)}
}
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: 1, Roe: data.Roe, Desc: fmt.Sprintf("ROE=%.2f 高于%.2f", data.Roe, MinRoe)}
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: 1, Desc: fmt.Sprintf("ROE=%.2f 高于%.2f", data.Roe, MinRoe)}
}

View File

@@ -76,10 +76,10 @@ func (r *Rsi) Run(code string) *types.RuleResult {
// 跌破RSI下轨
if lastRsiInt > r.Args.RsiOversold {
if CheckLowest(close, lastRsiInt, 14) {
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: 1, Rsi: lastRsi, Desc: fmt.Sprintf("RSI=%d 跌破下轨,14日最低", lastRsiInt)}
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: 1, Result: lastRsi, Desc: fmt.Sprintf("RSI=%d 跌破下轨,14日最低", lastRsiInt)}
}
if CheckLowest(close, lastRsiInt, 20) {
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: 1, Rsi: lastRsi, Desc: fmt.Sprintf("RSI=%d 跌破下轨,20日最低", lastRsiInt)}
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: 1, Result: lastRsi, Desc: fmt.Sprintf("RSI=%d 跌破下轨,20日最低", lastRsiInt)}
}
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: -1, Desc: fmt.Sprintf("RSI=%d 高于%d", lastRsiInt, r.Args.RsiOversold)}
}
@@ -88,5 +88,5 @@ func (r *Rsi) Run(code string) *types.RuleResult {
if lastRsiInt < prveRsiInt {
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: -1, Desc: fmt.Sprintf("Rsi=%d prveRsi=%d,跌破下轨,持续下跌", lastRsiInt, prveRsiInt)}
}
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: 1, Rsi: lastRsi, Desc: fmt.Sprintf("RSI=%d prveRsi=%d,跌破下轨后呈上涨趋势", lastRsiInt, prveRsiInt)}
return &types.RuleResult{Key: r.Key, Name: r.Name, Score: 1, Result: lastRsi, Desc: fmt.Sprintf("RSI=%d prveRsi=%d,跌破下轨后呈上涨趋势", lastRsiInt, prveRsiInt)}
}

View File

@@ -1,19 +1,19 @@
package types
type RuleResult struct {
Key string
Name string
Score int
Roe float64
Rsi float64
Desc string
Key string
Name string
Score int
Result any
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"`
Code string `csv:"code"`
Name string `csv:"name"`
ROE float64 `csv:"roe"`
RSI float64 `csv:"rsi"`
Desc string `csv:"desc"`
Score int
Pass string `csv:"pass"`
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff