2026-01-27 20:35:05 +08:00
|
|
|
|
package rule
|
|
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
|
"fmt"
|
2026-01-31 18:22:58 +08:00
|
|
|
|
"log"
|
2026-01-27 20:35:05 +08:00
|
|
|
|
|
2026-01-29 00:35:41 +08:00
|
|
|
|
"git.apinb.com/bsm-sdk/core/utils"
|
2026-01-27 20:35:05 +08:00
|
|
|
|
"git.apinb.com/quant/gostock/internal/impl"
|
|
|
|
|
|
"git.apinb.com/quant/gostock/internal/models"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
var (
|
2026-01-28 23:09:16 +08:00
|
|
|
|
MinRoe float64 = 0
|
2026-01-27 20:35:05 +08:00
|
|
|
|
)
|
|
|
|
|
|
|
2026-01-31 18:22:58 +08:00
|
|
|
|
func (r *RuleFactory) RunRoe(code string) {
|
|
|
|
|
|
log.Println("RunRoe:", r.Model.Code)
|
2026-01-27 20:35:05 +08:00
|
|
|
|
|
2026-01-28 23:09:16 +08:00
|
|
|
|
var data models.StockFinaIndicator
|
|
|
|
|
|
err := impl.DBService.Where("ts_code = ?", code).Order("period desc").Limit(1).First(&data).Error
|
|
|
|
|
|
if err != nil {
|
2026-01-31 18:22:58 +08:00
|
|
|
|
r.Model.GtAmount = -1
|
|
|
|
|
|
r.Model.AddDesc("最近无财报,无ROE值!")
|
|
|
|
|
|
return
|
2026-01-27 20:35:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-29 00:35:41 +08:00
|
|
|
|
data.Roe = utils.FloatRound(data.Roe, 2)
|
|
|
|
|
|
|
2026-01-28 23:09:16 +08:00
|
|
|
|
if data.Roe < MinRoe {
|
2026-01-31 18:22:58 +08:00
|
|
|
|
r.Model.GtAmount = -1
|
|
|
|
|
|
r.Model.AddDesc(fmt.Sprintf("ROE=%.2f 低于%.2f", data.Roe, MinRoe))
|
|
|
|
|
|
return
|
2026-01-27 20:35:05 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-31 18:22:58 +08:00
|
|
|
|
r.Model.GtAmount = 1
|
|
|
|
|
|
r.Model.AddDesc(fmt.Sprintf("ROE=%.2f 高于%.2f", data.Roe, MinRoe))
|
|
|
|
|
|
return
|
2026-01-27 20:35:05 +08:00
|
|
|
|
}
|