Files
gostock/internal/logic/strategy/data.go

66 lines
1.7 KiB
Go
Raw Normal View History

2026-01-27 02:09:44 +08:00
package strategy
import (
"git.apinb.com/quant/gostock/internal/impl"
"git.apinb.com/quant/gostock/internal/models"
)
2026-01-31 18:22:58 +08:00
var Cache = make(map[string]*StockData)
2026-01-27 02:09:44 +08:00
type StockData struct {
Basic models.StockBasic
Daily []models.StockDaily
Indicator []models.StockIndicator
FinaIndicator []models.StockFinaIndicator
}
2026-01-31 18:22:58 +08:00
func InitCacheByAll() {
for _, code := range GetStocks() {
Cache[code] = GetFullData(code)
}
}
func InitCacheByCode(code string) {
Cache[code] = GetFullData(code)
}
2026-01-27 02:34:26 +08:00
func GetFullData(code string) *StockData {
2026-01-27 02:09:44 +08:00
var data StockData
impl.DBService.Where("ts_code = ?", code).First(&data.Basic)
impl.DBService.Where("ts_code = ?", code).Order("trade_date desc").Find(&data.Daily)
impl.DBService.Where("ts_code = ?", code).Order("trade_date desc").Find(&data.Indicator)
impl.DBService.Where("ts_code = ?", code).Order("period desc").Find(&data.FinaIndicator)
return &data
}
2026-01-28 02:18:48 +08:00
func GetStocks() (stocks []string) {
2026-02-03 22:38:24 +08:00
impl.DBService.Model(&models.StockBasic{}).Pluck("ts_code", &stocks)
return
}
func GetStocksByCond(key string, val int) (stocks []string) {
impl.DBService.Model(&models.StockBasic{}).Where(key+"=?", val).Pluck("ts_code", &stocks)
2026-01-28 02:18:48 +08:00
return
}
2026-01-27 02:09:44 +08:00
func GetIndustry() (industry []string) {
impl.DBService.Model(&models.StockBasic{}).Group("industry").Pluck("industry", &industry)
return
}
2026-01-27 02:34:26 +08:00
2026-01-28 23:09:16 +08:00
func GetArgs(code string) *models.StockArgs {
var args models.StockArgs
err := impl.DBService.Where("ts_code = ?", code).First(&args).Error
if err != nil {
return nil
}
return &args
}
2026-01-27 02:34:26 +08:00
func GetBasic(code string) *models.StockBasic {
var data StockData
impl.DBService.Where("ts_code = ?", code).First(&data.Basic)
return &data.Basic
}