66 lines
1.7 KiB
Go
66 lines
1.7 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{}).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)
|
|
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
|
|
}
|