diff --git a/main.go b/main.go index 0e2bb8e..d7f5fbf 100644 --- a/main.go +++ b/main.go @@ -84,7 +84,9 @@ func main() { go func() { md.StockRsisProcess(&cr) }() - + go func() { + // md.StockRsisProcess(&cr) + }() // 这些暂时不运行, 以后要不要运行再说 // go func() { // core.CoasterProcess(&cr) diff --git a/modules/candle.go b/modules/candle.go index 111bafb..7d45375 100644 --- a/modules/candle.go +++ b/modules/candle.go @@ -4,10 +4,12 @@ import ( "encoding/json" "errors" "fmt" - "github.com/phyer/core" "os" "strconv" "strings" + + "github.com/phyer/core" + // "sync" "time" // @@ -86,29 +88,52 @@ func (cd *MyCandle) Process(cr *core.Core) { } func (cd *MyCandle) InsertIntoPlate(cr *core.Core) (*core.Sample, error) { - cr.Mu.Lock() - defer cr.Mu.Unlock() - // pl, plateFounded := cr.PlateMap[cd.InstID] - // if !plateFounded || pl == nil { - pl, _ := LoadPlate(cr, cd.InstID) - cr.PlateMap[cd.InstID] = pl - // } - po, coasterFounded := pl.CoasterMap["period"+cd.Period] - err := errors.New("") - if !coasterFounded { - pl.MakeCoaster(cr, cd.Period) + if cr == nil { + return nil, errors.New("core is nil") } - if len(po.InstID) == 0 { - // logrus.Debug("candle coaster: ", cd.Period, pl.CoasterMap["period"+cd.Period], pl.CoasterMap) - //创建失败的原因是原始数据不够,一般发生在服务中断了,缺少部分数据的情况下, 后续需要数据补全措施 - erstr := fmt.Sprintln("coaster创建失败 candle instID: "+cd.InstID+"; period: "+cd.Period, "coasterFounded: ", coasterFounded, " ", err) - err := errors.New(erstr) - return nil, err + if cr.Mu == nil { + return nil, errors.New("core mutex is nil") } + + cr.Mu.Lock() + defer cr.Mu.Unlock() + + if cr.PlateMap == nil { + return nil, errors.New("PlateMap is nil") + } + + pl, err := LoadPlate(cr, cd.InstID) + if err != nil { + return nil, fmt.Errorf("failed to load plate: %w", err) + } + cr.PlateMap[cd.InstID] = pl + + if pl == nil { + return nil, errors.New("loaded plate is nil") + } + + po, coasterFounded := pl.CoasterMap["period"+cd.Period] + if !coasterFounded { + err := pl.MakeCoaster(cr, cd.Period) + if err != nil { + return nil, fmt.Errorf("failed to make coaster: %w", err) + } + po, coasterFounded = pl.CoasterMap["period"+cd.Period] + } + + if !coasterFounded || len(po.InstID) == 0 { + return nil, fmt.Errorf("coaster creation failed for instID: %s, period: %s", cd.InstID, cd.Period) + } + sm, err := po.RPushSample(cr, &cd.Candle, "candle") - return sm, err + if err != nil { + return nil, fmt.Errorf("failed to push sample: %w", err) + } + + return sm, nil } + func (cad *MyCandle) AddToGeneralCandleChnl(cr *core.Core) { suffix := "" env := os.Getenv("GO_ENV") diff --git a/siaga b/siaga deleted file mode 100755 index 06698e2..0000000 Binary files a/siaga and /dev/null differ