Files
banstagy/surge/max_vol.go
2026-08-24 20:53:21 +08:00

44 lines
905 B
Go

package surge
import (
"fmt"
"github.com/banbox/banbot/config"
"github.com/banbox/banbot/strat"
ta "github.com/banbox/banta"
)
type volSta struct {
rate float64
}
func goMaxVol(pol *config.RunPolicyConfig) *strat.TradeStrat {
return &strat.TradeStrat{
WarmupNum: 100,
BatchInOut: true,
OnStartUp: func(s *strat.StratJob) {
s.More = &volSta{}
},
OnBar: func(s *strat.StratJob) {
e := s.Env
more, _ := s.More.(*volSta)
bigVolMa := ta.SMA(e.Volume, 100).Get(0)
more.rate = e.Volume.Get(0)/bigVolMa - 1
},
OnBatchJobs: func(jobs []*strat.StratJob) {
var maxIn, maxOut *strat.StratJob
var inVal, outVal float64
for _, j := range jobs {
sta, _ := j.More.(*volSta)
if sta.rate < outVal {
outVal = sta.rate
maxOut = j
} else if sta.rate > inVal {
inVal = sta.rate
maxIn = j
}
}
fmt.Printf("%v %v", maxIn, maxOut)
},
}
}