From 4c689e9adfaf1c402dcbbe30b5bd6a6b1c51e721 Mon Sep 17 00:00:00 2001 From: "zhangkun9038@dingtalk.com" Date: Mon, 13 Jan 2025 14:03:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96invokeCandle=E5=87=BD?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/extent.go | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/modules/extent.go b/modules/extent.go index 6dbe119..1018077 100644 --- a/modules/extent.go +++ b/modules/extent.go @@ -233,7 +233,7 @@ func InvokeCandle(cr *core.Core, candleName string, period string, from int64, t return fmt.Errorf("failed to push to redis: %v", err) } - return nil + return err } // setName := "candle" + period + "|" + instId + "|sortedSet" @@ -477,6 +477,25 @@ func MakeMaX(cr *core.Core, cl *core.Candle, count int) (error, int) { if len(cdl.List) < count { err := errors.New("由于sortedSet容量有限,没有足够的元素数量来计算 maX, setName: " + setName + " ct: " + ToString(ct) + "count: " + ToString(count)) return err, int(float64(count) - ct) + } + for _, v := range cdl.List { + curLast, err := strconv.ParseFloat(v.Data[4].(string), 64) + if err != nil { + logrus.Warn("strconv.ParseFloat err:", err) + continue + } + if curLast > 0 { + ct++ + } else { + logrus.Warn("strconv.ParseFloat curLast:", curLast) + } + amountLast += curLast + //---------------------------------------------- + } + avgLast := amountLast / ct + if float64(ct) < float64(count) { + err := errors.New("no enough source to calculate maX, setName: " + setName + " ct: " + ToString(ct) + "count: " + ToString(count)) + return err, int(float64(count) - ct) // fmt.Println("makeMax err: 没有足够的数据进行计算ma", "candle:", cl, "counts:", count, "ct:", ct, "avgLast: ") } else { // fmt.Println("makeMax keyName: ma", count, keyName, " avgLast: ", avgLast, "ts: ", tsi, "ct: ", ct, "ots: ", ots, "candle: ", string(cjs))