Files
gostock/internal/logic/strategy/data.go
yanweidong 827ec7bf5a fix bug
2026-02-02 19:04:32 +08:00

61 lines
1.5 KiB
Go

package strategy
import (
"git.apinb.com/quant/gostock/internal/impl"
"git.apinb.com/quant/gostock/internal/models"
)
var Cache = make(map[string]*StockData)
type StockData struct {
Basic models.StockBasic
Daily []models.StockDaily
Indicator []models.StockIndicator
FinaIndicator []models.StockFinaIndicator
}
func InitCacheByAll() {
for _, code := range GetStocks() {
Cache[code] = GetFullData(code)
}
}
func InitCacheByCode(code string) {
Cache[code] = GetFullData(code)
}
func GetFullData(code string) *StockData {
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
}
func GetStocks() (stocks []string) {
impl.DBService.Model(&models.StockBasic{}).Group("ts_code").Pluck("ts_code", &stocks)
return
}
func GetIndustry() (industry []string) {
impl.DBService.Model(&models.StockBasic{}).Group("industry").Pluck("industry", &industry)
return
}
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
}
func GetBasic(code string) *models.StockBasic {
var data StockData
impl.DBService.Where("ts_code = ?", code).First(&data.Basic)
return &data.Basic
}