在marscode指导下修改insertIntoPlate

This commit is contained in:
zhangkun9038@dingtalk.com 2025-01-14 21:12:41 +08:00
parent 31101f8501
commit c7d5ad4d32
3 changed files with 47 additions and 20 deletions

@ -84,7 +84,9 @@ func main() {
go func() {
md.StockRsisProcess(&cr)
}()
go func() {
// md.StockRsisProcess(&cr)
}()
// 这些暂时不运行, 以后要不要运行再说
// go func() {
// core.CoasterProcess(&cr)

@ -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")

BIN
siaga

Binary file not shown.