46 lines
1.1 KiB
Go
46 lines
1.1 KiB
Go
package demo
|
|
|
|
import (
|
|
"github.com/banbox/banbot/btime"
|
|
"github.com/banbox/banbot/config"
|
|
"github.com/banbox/banbot/core"
|
|
"github.com/banbox/banbot/strat"
|
|
"github.com/banbox/banexg/log"
|
|
"go.uber.org/zap"
|
|
"strings"
|
|
"sync"
|
|
)
|
|
|
|
func Show(pol *config.RunPolicyConfig) *strat.TradeStrat {
|
|
pairMap := make(map[string]int)
|
|
var copied []string
|
|
var lastMS int64
|
|
var lockPair sync.Mutex
|
|
return &strat.TradeStrat{
|
|
EachMaxLong: 1,
|
|
OnStartUp: func(s *strat.StratJob) {
|
|
lockPair.Lock()
|
|
base, _, _, _ := core.SplitSymbol(s.Symbol.Symbol)
|
|
pairMap[base] = 0
|
|
lockPair.Unlock()
|
|
},
|
|
OnBar: func(s *strat.StratJob) {
|
|
curMS := s.Env.TimeStop
|
|
if curMS > lastMS {
|
|
if len(copied) > 0 {
|
|
date := btime.ToDateStr(lastMS, core.DefaultDateFmt)
|
|
lockPair.Lock()
|
|
totalNum := len(pairMap)
|
|
lockPair.Unlock()
|
|
log.Info("OnBar", zap.String("date", date), zap.Int("got", len(copied)),
|
|
zap.Int("total", totalNum), zap.String("copied", strings.Join(copied, ",")))
|
|
}
|
|
lastMS = curMS
|
|
copied = nil
|
|
}
|
|
base, _, _, _ := core.SplitSymbol(s.Symbol.Symbol)
|
|
copied = append(copied, base)
|
|
},
|
|
}
|
|
}
|