xmaker: add profit changed flag for notification

This commit is contained in:
c9s 2024-08-27 15:53:48 +08:00
parent 3819feacf3
commit 4ae8ad77b3
No known key found for this signature in database
GPG Key ID: 7385E7E464CB0A54

View File

@ -750,7 +750,7 @@ func (s *Strategy) Defaults() error {
// circuitBreakerAlertLimiter is for CircuitBreaker alerts // circuitBreakerAlertLimiter is for CircuitBreaker alerts
s.circuitBreakerAlertLimiter = rate.NewLimiter(rate.Every(3*time.Minute), 2) s.circuitBreakerAlertLimiter = rate.NewLimiter(rate.Every(3*time.Minute), 2)
s.reportProfitStatsRateLimiter = rate.NewLimiter(rate.Every(5*time.Minute), 1) s.reportProfitStatsRateLimiter = rate.NewLimiter(rate.Every(3*time.Minute), 1)
s.hedgeErrorLimiter = rate.NewLimiter(rate.Every(1*time.Minute), 1) s.hedgeErrorLimiter = rate.NewLimiter(rate.Every(1*time.Minute), 1)
return nil return nil
} }
@ -803,6 +803,9 @@ func (s *Strategy) hedgeWorker(ctx context.Context) {
ticker := time.NewTicker(util.MillisecondsJitter(s.HedgeInterval.Duration(), 200)) ticker := time.NewTicker(util.MillisecondsJitter(s.HedgeInterval.Duration(), 200))
defer ticker.Stop() defer ticker.Stop()
profitChanged := false
reportTicker := time.NewTicker(5 * time.Minute)
for { for {
select { select {
case <-ctx.Done(): case <-ctx.Done():
@ -836,8 +839,15 @@ func (s *Strategy) hedgeWorker(ctx context.Context) {
s.Hedge(ctx, uncoverPosition.Neg()) s.Hedge(ctx, uncoverPosition.Neg())
} }
if s.reportProfitStatsRateLimiter.Allow() { profitChanged = true
bbgo.Notify(s.ProfitStats)
case <-reportTicker.C:
if profitChanged {
if s.reportProfitStatsRateLimiter.Allow() {
bbgo.Notify(s.ProfitStats)
}
profitChanged = false
} }
} }
} }