You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

62 lines
1.5 KiB

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)
}