init
This commit is contained in:
52
arb/stat_group.go
Normal file
52
arb/stat_group.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package arb
|
||||
|
||||
import (
|
||||
"github.com/banbox/banbot/config"
|
||||
"github.com/banbox/banbot/core"
|
||||
"github.com/banbox/banbot/exg"
|
||||
"github.com/banbox/banbot/orm"
|
||||
"github.com/banbox/banexg"
|
||||
"github.com/banbox/banexg/errs"
|
||||
"github.com/banbox/banexg/log"
|
||||
"go.uber.org/zap"
|
||||
"sort"
|
||||
)
|
||||
|
||||
func StatGroupPairs() *errs.Error {
|
||||
exgId := "binance"
|
||||
endMS := config.TimeRange.EndMS
|
||||
// 生成待订阅标的列表
|
||||
exsMap := orm.GetExSymbols(exgId, banexg.MarketLinear)
|
||||
limit := 720
|
||||
exsList, barList, _, err := getExsBars(exg.Default, exsMap, "1h", 0, endMS, limit)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
arr := make([]*core.StrFloat, 0, len(exsList))
|
||||
for i, exs := range exsList {
|
||||
var sumVal float64
|
||||
bars := barList[i]
|
||||
if float64(len(bars)) < float64(limit)*0.9 {
|
||||
continue
|
||||
}
|
||||
for _, b := range bars {
|
||||
sumVal += b.Volume * b.Close
|
||||
}
|
||||
arr = append(arr, &core.StrFloat{
|
||||
Str: exs.Symbol,
|
||||
Val: sumVal,
|
||||
})
|
||||
}
|
||||
// 按成交量降序,取前30%
|
||||
sort.Slice(arr, func(i, j int) bool {
|
||||
return arr[i].Val > arr[j].Val
|
||||
})
|
||||
cutNum := int(float64(len(arr)) * 0.2)
|
||||
cutPairs := make([]string, 0, cutNum)
|
||||
for i := 0; i < cutNum; i++ {
|
||||
base, _, _, _ := core.SplitSymbol(arr[i].Str)
|
||||
cutPairs = append(cutPairs, base)
|
||||
}
|
||||
log.Info("cut 20% of pairs", zap.Int("num", cutNum), zap.Int("total", len(arr)), zap.Strings("items", cutPairs))
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user