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