@@ -4,30 +4,38 @@ import (
4
4
"context"
5
5
"time"
6
6
7
+ "github.com/c9s/bbgo/pkg/bbgo"
7
8
"github.com/c9s/bbgo/pkg/exchange/retry"
8
9
"github.com/c9s/bbgo/pkg/strategy/common"
9
10
"github.com/c9s/bbgo/pkg/util"
10
11
)
11
12
12
- func (s * Strategy ) recoverPeriodically (ctx context.Context ) {
13
- s .logger .Info ("monitor and recover periodically" )
14
- interval := util .MillisecondsJitter (10 * time .Minute , 5 * 60 * 1000 )
15
- ticker := time .NewTicker (interval )
16
- defer ticker .Stop ()
13
+ func (s * Strategy ) syncPeriodically (ctx context.Context ) {
14
+ s .logger .Info ("sync periodically" )
15
+
16
+ // sync persistence
17
+ syncPersistenceTicker := time .NewTicker (1 * time .Hour )
18
+ defer syncPersistenceTicker .Stop ()
19
+
20
+ // sync active orders
21
+ syncActiveOrdersTicker := time .NewTicker (util .MillisecondsJitter (10 * time .Minute , 5 * 60 * 1000 ))
22
+ defer syncActiveOrdersTicker .Stop ()
17
23
18
24
for {
19
25
select {
20
26
case <- ctx .Done ():
21
27
return
22
- case <- ticker .C :
23
- if err := s .recoverActiveOrders (ctx ); err != nil {
24
- s .logger .WithError (err ).Warn (err , "failed to recover active orders" )
28
+ case <- syncPersistenceTicker .C :
29
+ bbgo .Sync (ctx , s )
30
+ case <- syncActiveOrdersTicker .C :
31
+ if err := s .syncActiveOrders (ctx ); err != nil {
32
+ s .logger .WithError (err ).Warn (err , "failed to sync active orders" )
25
33
}
26
34
}
27
35
}
28
36
}
29
37
30
- func (s * Strategy ) recoverActiveOrders (ctx context.Context ) error {
38
+ func (s * Strategy ) syncActiveOrders (ctx context.Context ) error {
31
39
s .logger .Info ("recover active orders..." )
32
40
openOrders , err := retry .QueryOpenOrdersUntilSuccessfulLite (ctx , s .ExchangeSession .Exchange , s .Symbol )
33
41
if err != nil {
0 commit comments