98 lines
5.9 KiB
Go
98 lines
5.9 KiB
Go
package demo
|
|
|
|
import (
|
|
"github.com/banbox/banbot/biz"
|
|
"github.com/banbox/banbot/btime"
|
|
"github.com/banbox/banbot/config"
|
|
"github.com/banbox/banbot/core"
|
|
"github.com/banbox/banbot/exg"
|
|
"github.com/banbox/banbot/goods"
|
|
"github.com/banbox/banbot/orm"
|
|
"github.com/banbox/banexg/log"
|
|
"go.uber.org/zap"
|
|
"math/rand"
|
|
"slices"
|
|
"sort"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func genVolPairs(timeMS int64) []string {
|
|
err := biz.SetupComs(&config.CmdArgs{})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
_, err = orm.LoadMarkets(exg.Default, false)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
ft := goods.VolumePairFilter{
|
|
BaseFilter: goods.BaseFilter{Name: "VolumePairFilter"},
|
|
BackPeriod: "3d",
|
|
}
|
|
core.SetRunMode(core.RunModeBackTest)
|
|
core.SetRunEnv(core.RunEnvProd)
|
|
btime.CurTimeMS = timeMS
|
|
config.PairMgr.Cron = ""
|
|
pairs, err := ft.GenSymbols(btime.UTCStamp())
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
res := make([]string, 0, len(pairs))
|
|
for _, pair := range pairs {
|
|
_, quote, _, _ := core.SplitSymbol(pair)
|
|
if _, ok := config.StakeCurrencyMap[quote]; ok {
|
|
res = append(res, pair)
|
|
}
|
|
}
|
|
return res
|
|
}
|
|
|
|
func TestRandPairs(t *testing.T) {
|
|
timeMS, _ := btime.ParseTimeMS("2021-11-01 00:00")
|
|
pairs := genVolPairs(timeMS)
|
|
total := len(pairs)
|
|
half := pairs[:total/3]
|
|
for i := range half {
|
|
j := rand.Intn(i + 1)
|
|
if i != j {
|
|
half[i], half[j] = half[j], half[i]
|
|
}
|
|
}
|
|
cutNum := 50
|
|
if len(half) > cutNum {
|
|
half = half[:cutNum]
|
|
}
|
|
log.Info("pairs", zap.Int("total", total), zap.Strings("arr", half))
|
|
}
|
|
|
|
func TestPairsLocs(t *testing.T) {
|
|
pairs := genVolPairs(time.Now().UnixMilli())
|
|
//pairs48 := []string{"1000FLOKI/USDT:USDT", "1000LUNC/USDT:USDT", "1000PEPE/USDT:USDT", "1000SHIB/USDT:USDT", "1000XEC/USDT:USDT", "ADA/USDT:USDT", "APT/USDT:USDT", "ARB/USDT:USDT", "AVAX/USDT:USDT", "BADGER/USDT:USDT", "BCH/USDT:USDT", "BNB/USDT:USDT", "BOME/USDT:USDT", "BTC/USDT:USDT", "CFX/USDT:USDT", "DOGE/USDT:USDT", "DOT/USDT:USDT", "ETC/USDT:USDT", "ETH/USDT:USDT", "ETHFI/USDT:USDT", "FET/USDT:USDT", "FIL/USDT:USDT", "FTM/USDT:USDT", "GALA/USDT:USDT", "HIFI/USDT:USDT", "ICP/USDT:USDT", "ID/USDT:USDT", "JUP/USDT:USDT", "LINK/USDT:USDT", "LTC/USDT:USDT", "LUNA2/USDT:USDT", "MATIC/USDT:USDT", "NEAR/USDT:USDT", "ONDO/USDT:USDT", "OP/USDT:USDT", "ORDI/USDT:USDT", "PENDLE/USDT:USDT", "PIXEL/USDT:USDT", "POLYX/USDT:USDT", "RSR/USDT:USDT", "SAND/USDT:USDT", "SOL/USDT:USDT", "STX/USDT:USDT", "SUI/USDT:USDT", "TOKEN/USDT:USDT", "TON/USDT:USDT", "WIF/USDT:USDT", "WLD/USDT:USDT", "XRP/USDT:USDT", "YGG/USDT:USDT"}
|
|
pairs170 := []string{"1000BONK/USDT:USDT", "1000FLOKI/USDT:USDT", "1000LUNC/USDT:USDT", "1000PEPE/USDT:USDT", "1000RATS/USDT:USDT", "1000XEC/USDT:USDT", "1INCH/USDT:USDT", "AAVE/USDT:USDT", "ACH/USDT:USDT", "ADA/USDT:USDT", "AGIX/USDT:USDT", "ALGO/USDT:USDT", "ANKR/USDT:USDT", "APE/USDT:USDT", "API3/USDT:USDT", "APT/USDT:USDT", "AR/USDT:USDT", "ARB/USDT:USDT", "ARPA/USDT:USDT", "ASTR/USDT:USDT", "ATOM/USDT:USDT", "AUCTION/USDT:USDT", "AVAX/USDT:USDT", "AXL/USDT:USDT", "AXS/USDT:USDT", "BADGER/USDT:USDT", "BAKE/USDT:USDT", "BCH/USDT:USDT", "BEAMX/USDT:USDT", "BEL/USDT:USDT", "BICO/USDT:USDT", "BLUR/USDT:USDT", "BNB/USDT:USDT", "BNX/USDT:USDT", "BOND/USDT:USDT", "BSV/USDT:USDT", "BTC/USDT:USDT", "CAKE/USDT:USDT", "CELO/USDT:USDT", "CFX/USDT:USDT", "CHR/USDT:USDT", "CHZ/USDT:USDT", "COMP/USDT:USDT", "CYBER/USDT:USDT", "DOGE/USDT:USDT", "DOT/USDT:USDT", "DUSK/USDT:USDT", "DYM/USDT:USDT", "EGLD/USDT:USDT", "ENA/USDT:USDT", "ENJ/USDT:USDT", "EOS/USDT:USDT", "ETC/USDT:USDT", "ETH/USDT:USDT", "ETHW/USDT:USDT", "FET/USDT:USDT", "FIL/USDT:USDT", "FLM/USDT:USDT", "FLOW/USDT:USDT", "FRONT/USDT:USDT", "FTM/USDT:USDT", "GAL/USDT:USDT", "GALA/USDT:USDT", "GAS/USDT:USDT", "GLM/USDT:USDT", "GMT/USDT:USDT", "GMX/USDT:USDT", "GRT/USDT:USDT", "HBAR/USDT:USDT", "HIFI/USDT:USDT", "HOOK/USDT:USDT", "HOT/USDT:USDT", "ICP/USDT:USDT", "ID/USDT:USDT", "ILV/USDT:USDT", "IMX/USDT:USDT", "INJ/USDT:USDT", "IOTA/USDT:USDT", "IOTX/USDT:USDT", "JASMY/USDT:USDT", "JOE/USDT:USDT", "JTO/USDT:USDT", "JUP/USDT:USDT", "KAS/USDT:USDT", "KAVA/USDT:USDT", "KEY/USDT:USDT", "KNC/USDT:USDT", "KSM/USDT:USDT", "LDO/USDT:USDT", "LEVER/USDT:USDT", "LINA/USDT:USDT", "LINK/USDT:USDT", "LPT/USDT:USDT", "LQTY/USDT:USDT", "LRC/USDT:USDT", "LTC/USDT:USDT", "LUNA2/USDT:USDT", "MAGIC/USDT:USDT", "MANA/USDT:USDT", "MANTA/USDT:USDT", "MASK/USDT:USDT", "MATIC/USDT:USDT", "MAV/USDT:USDT", "MEME/USDT:USDT", "METIS/USDT:USDT", "MINA/USDT:USDT", "MKR/USDT:USDT", "MTL/USDT:USDT", "MYRO/USDT:USDT", "NEO/USDT:USDT", "NKN/USDT:USDT", "OCEAN/USDT:USDT", "OM/USDT:USDT", "ONDO/USDT:USDT", "ONE/USDT:USDT", "OP/USDT:USDT", "ORDI/USDT:USDT", "PENDLE/USDT:USDT", "PEOPLE/USDT:USDT", "POLYX/USDT:USDT", "PYTH/USDT:USDT", "QNT/USDT:USDT", "QTUM/USDT:USDT", "RDNT/USDT:USDT", "REN/USDT:USDT", "RIF/USDT:USDT", "RLC/USDT:USDT", "RSR/USDT:USDT", "RUNE/USDT:USDT", "RVN/USDT:USDT", "SEI/USDT:USDT", "SKL/USDT:USDT", "SNX/USDT:USDT", "SPELL/USDT:USDT", "SSV/USDT:USDT", "STG/USDT:USDT", "STMX/USDT:USDT", "STORJ/USDT:USDT", "STX/USDT:USDT", "SUI/USDT:USDT", "SXP/USDT:USDT", "T/USDT:USDT", "THETA/USDT:USDT", "TIA/USDT:USDT", "TOKEN/USDT:USDT", "TON/USDT:USDT", "TRU/USDT:USDT", "TRX/USDT:USDT", "UMA/USDT:USDT", "VET/USDT:USDT", "WAVES/USDT:USDT", "WAXP/USDT:USDT", "WIF/USDT:USDT", "WOO/USDT:USDT", "XAI/USDT:USDT", "XLM/USDT:USDT", "XRP/USDT:USDT", "XTZ/USDT:USDT", "XVG/USDT:USDT", "YFI/USDT:USDT", "YGG/USDT:USDT", "ZEC/USDT:USDT", "ZEN/USDT:USDT", "ZETA/USDT:USDT", "ZIL/USDT:USDT", "ZRX/USDT:USDT"}
|
|
fails := make([]string, 0, 10)
|
|
idArr := make([]int, 0, 100)
|
|
for _, p := range pairs170 {
|
|
idx := slices.Index(pairs, p)
|
|
if idx < 0 {
|
|
fails = append(fails, p)
|
|
} else {
|
|
idArr = append(idArr, idx)
|
|
}
|
|
}
|
|
log.Warn("pairs", zap.Int("total", len(pairs)), zap.Strings("unknown", fails))
|
|
sort.Slice(idArr, func(i, j int) bool {
|
|
return idArr[i] < idArr[j]
|
|
})
|
|
step := 10
|
|
end, num := step, 0
|
|
for _, v := range idArr {
|
|
if v >= end {
|
|
log.Info("range", zap.Int("to", end), zap.Int("num", num))
|
|
num = 0
|
|
end += step
|
|
}
|
|
num += 1
|
|
}
|
|
}
|