package vmts import ( "sig-pub/api/pb" "sig-pub/pkg/config" "sig-pub/pkg/types" "sig-pub/pkg/utils/collect" "sig-pub/pkg/zlog" "testing" "time" ) func getTestVMDB() *VictoriaMetricsTSDB { return NewVictoriaMetricsTSDB(config.VictoriaMetricsConfig{Addr: "http://127.0.0.1:8428"}) } func TestGetRangeKline(t *testing.T) { vmdb := getTestVMDB() inst := types.TradeInstance{ InstId: "BTC_USDT", Exchange: pb.ExchangeType_OKX, } klines, err := vmdb.ListRangeKline(inst, types.Interval1m, 1758968460000, 1758968700000) if err != nil { t.Error(err) return } collect.Reverse(klines) for _, k := range klines { zlog.Infof("%#v", k) } } func TestQueryRange(t *testing.T) { vmdb := getTestVMDB() ts1 := time.Now().UnixMilli() // 计算MA5 ma5, err := vmdb.QueryRange(1759975200000, 1760061600000, types.Interval5m, ` avg_over_time(BTC_USDT{kind="close", interval="5m", exchange="OKX"}[25m]) `) if err != nil { t.Error(err) return } ts2 := time.Now().UnixMilli() t.Logf("MA5 use %dms: %#v\n", ts2-ts1, ma5) // 计算RSI6 rsi6, err := vmdb.QueryRange(1759975200000, 1760061600000, types.Interval5m, ` 100 - 100 / (1 + ( avg_over_time(clamp_min(delta(BTC_USDT{kind="close", interval="5m", exchange="OKX"}), 0)[30m]) / avg_over_time(abs(clamp_max(delta(BTC_USDT{kind="close", interval="5m", exchange="OKX"}), 0))[30m]) )) `) if err != nil { t.Error(err) return } ts3 := time.Now().UnixMilli() t.Logf("RSI6 use %dms: %#v\n", ts3-ts2, rsi6) }