From 30cedbcadb8697d213feaa2af933add42d5107b0 Mon Sep 17 00:00:00 2001 From: yanweidong Date: Tue, 27 Jan 2026 19:06:01 +0800 Subject: [PATCH] deving --- cmd/args/main.go | 77 +++++++++++++++++++++++++++++++++++ internal/models/stock_args.go | 24 +++++++++++ 2 files changed, 101 insertions(+) create mode 100644 cmd/args/main.go create mode 100644 internal/models/stock_args.go diff --git a/cmd/args/main.go b/cmd/args/main.go new file mode 100644 index 0000000..9b6f244 --- /dev/null +++ b/cmd/args/main.go @@ -0,0 +1,77 @@ +package main + +import ( + "io/ioutil" + "log" + + "git.apinb.com/quant/gostock/internal/config" + "git.apinb.com/quant/gostock/internal/impl" + "git.apinb.com/quant/gostock/internal/models" + "github.com/bitly/go-simplejson" +) + +var ( + ServiceKey = "gostock" +) + +func main() { + log.Println("Hello Cli!") + config.New(ServiceKey) + impl.NewImpl() + + var stocks []models.StockBasic + impl.DBService.Find(&stocks) + + for _, stock := range stocks { + var args models.StockArgs + // 读取JSON:C:\Users\Administrator\Documents\stock-main\stock\reports\r_000001.SZ.json + jsonBytes, err := ioutil.ReadFile("C:\\Users\\Administrator\\Documents\\stock-main\\stock\\reports\\r_" + stock.TsCode + ".json") + if err != nil { + log.Println(err) + continue + } + js, err := simplejson.NewJson(jsonBytes) + if err != nil { + log.Println(err) + continue + } + args.TsCode = stock.TsCode + c, err := js.Get("comparison").Encode() + if err == nil { + args.Config = string(c) + } + + rsi_period, err := js.Get("strategies").Get("rsi").Get("best_params").Get("rsi_period").Int() + if err == nil { + args.RsiPeriod = rsi_period + } + + rsi_oversold, err := js.Get("strategies").Get("rsi").Get("best_params").Get("rsi_oversold").Int() + if err == nil { + args.RsiOversold = rsi_oversold + } + + rsi_overbought, err := js.Get("strategies").Get("rsi").Get("best_params").Get("rsi_overbought").Int() + if err == nil { + args.RsiOverbought = rsi_overbought + } + + ema_fast, err := js.Get("strategies").Get("ema").Get("best_params").Get("ema_fast").Int() + if err == nil { + args.EmaFast = ema_fast + } + + ema_slow, err := js.Get("strategies").Get("ema").Get("best_params").Get("ema_slow").Int() + if err == nil { + args.EmaSlow = ema_slow + } + + var cnt int64 + impl.DBService.Model(&models.StockArgs{}).Where("ts_code = ?", stock.TsCode).Count(&cnt) + if cnt > 0 { + impl.DBService.Model(&models.StockArgs{}).Where("ts_code = ?", stock.TsCode).Updates(args) + } else { + impl.DBService.Create(&args) + } + } +} diff --git a/internal/models/stock_args.go b/internal/models/stock_args.go new file mode 100644 index 0000000..28b979a --- /dev/null +++ b/internal/models/stock_args.go @@ -0,0 +1,24 @@ +package models + +import "git.apinb.com/bsm-sdk/core/database" + +// StockBasic 股票参数配置表 +type StockArgs struct { + ID uint `gorm:"primarykey"` + TsCode string `gorm:"type:varchar(50);not null;index;comment:TS代码"` + Config string `gorm:"type:varchar(1000);not null;index;comment:配置项"` + RsiPeriod int + RsiOversold int + RsiOverbought int + EmaFast int + EmaSlow int +} + +func init() { + database.AppendMigrate(&StockArgs{}) +} + +// TableName 设置表名 +func (StockArgs) TableName() string { + return "stock_args" +}