Files
banstagy/demo/hft.go
2026-08-24 20:53:21 +08:00

44 lines
1.3 KiB
Go

package demo
import (
"fmt"
"github.com/banbox/banbot/biz"
"github.com/banbox/banbot/config"
"github.com/banbox/banbot/core"
"github.com/banbox/banbot/strat"
"github.com/banbox/banexg"
"github.com/banbox/banexg/log"
"go.uber.org/zap"
)
func hft(p *config.RunPolicyConfig) *strat.TradeStrat {
return &strat.TradeStrat{
WsSubs: map[string]string{
core.WsSubDepth: "",
core.WsSubTrade: "",
core.WsSubKLine: "",
},
OnBar: func(s *strat.StratJob) {
e := s.Env
log.Info(fmt.Sprintf("OnBar %v: %v", e.TimeStop, e.Close.Get(0)))
},
OnWsKline: func(s *strat.StratJob, pair string, k *banexg.Kline) {
log.Info(fmt.Sprintf("OnWsKline %v: %v", k.Time, k.Close))
s.OpenOrder(&strat.EnterReq{Tag: "long"})
_, _, err := biz.GetOdMgr(s.Account).ProcessOrders(s)
if err != nil {
log.Error("process order fail", zap.Error(err))
}
},
OnWsTrades: func(s *strat.StratJob, pair string, trades []*banexg.Trade) {
last := trades[len(trades)-1]
log.Info(fmt.Sprintf("OnWsTrades %v %v, %v", last.Timestamp, last.Price, last.Amount))
},
OnWsDepth: func(s *strat.StratJob, dep *banexg.OrderBook) {
bp1, bm1 := dep.Bids.Price[0], dep.Bids.Size[0]
ap1, am1 := dep.Asks.Price[0], dep.Asks.Size[0]
log.Info(fmt.Sprintf("OnWsDepth %v %v, %v,, %v, %v", dep.TimeStamp, bp1, bm1, ap1, am1))
},
}
}