Merge pull request #1656 from c9s/narumi/autobuy-min-base-balance

REFACTOR: [autobuy] replace threshold with minBaseBalance
This commit is contained in:
なるみ 2024-06-21 18:18:37 +01:00 committed by GitHub
commit ad5674d9cb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 17 additions and 11 deletions

View File

@ -5,7 +5,7 @@ exchangeStrategies:
autobuy:
symbol: MAXTWD
schedule: "@every 1s"
threshold: 200
minBaseBalance: 200
# price type: LAST, BUY, SELL, MID, TAKER, MAKER
priceType: BUY

View File

@ -30,11 +30,14 @@ type Strategy struct {
Symbol string `json:"symbol"`
Schedule string `json:"schedule"`
Threshold fixedpoint.Value `json:"threshold"`
MinBaseBalance fixedpoint.Value `json:"minBaseBalance"`
PriceType types.PriceType `json:"priceType"`
Bollinger *types.BollingerSetting `json:"bollinger"`
DryRun bool `json:"dryRun"`
// Deprecated, to be replaced by MinBaseBalance
Threshold fixedpoint.Value `json:"threshold"`
bbgo.QuantityOrAmount
boll *indicatorv2.BOLLStream
@ -45,6 +48,10 @@ func (s *Strategy) Initialize() error {
if s.Strategy == nil {
s.Strategy = &common.Strategy{}
}
if s.Threshold.Sign() > 0 && s.MinBaseBalance.IsZero() {
s.MinBaseBalance = s.Threshold
}
return nil
}
@ -87,7 +94,6 @@ func (s *Strategy) Run(ctx context.Context, _ bbgo.OrderExecutor, session *bbgo.
bbgo.OnShutdown(ctx, func(ctx context.Context, wg *sync.WaitGroup) {
defer wg.Done()
s.cancelOrders(ctx)
bbgo.Sync(ctx, s)
})
s.cron = cron.New()
@ -129,11 +135,11 @@ func (s *Strategy) autobuy(ctx context.Context) {
return
}
if balance.Available.Compare(s.Threshold) > 0 {
log.Infof("balance %s is higher than threshold %s", balance.Available.String(), s.Threshold.String())
if balance.Available.Compare(s.MinBaseBalance) > 0 {
log.Infof("balance %s is higher than minBaseBalance %s", balance.Available.String(), s.MinBaseBalance.String())
return
}
log.Infof("balance %s is lower than threshold %s", balance.Available.String(), s.Threshold.String())
log.Infof("balance %s is lower than minBaseBalance %s", balance.Available.String(), s.MinBaseBalance.String())
quantity := s.CalculateQuantity(price)
submitOrder := types.SubmitOrder{