Skip to content

Commit 0e9d695

Browse files
authored
feat(quotes): switch Binance driver from streaming raw trades to aggregated trades (#477)
1 parent 4182a11 commit 0e9d695

File tree

2 files changed

+9
-6
lines changed

2 files changed

+9
-6
lines changed

pkg/quotes/binance.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ func (b *binance) Subscribe(market Market) error {
129129
}
130130

131131
idle := time.NewTimer(b.idlePeriod)
132-
doneCh, stopCh, err := gobinance.WsTradeServe(symbol, b.handleTrade(market, idle), b.handleErr(market))
132+
doneCh, stopCh, err := gobinance.WsAggTradeServe(symbol, b.handleTrade(market, idle), b.handleErr(market))
133133
if err != nil {
134134
return fmt.Errorf("%s: %w: %w", market, ErrFailedSub, err)
135135
}
@@ -216,8 +216,8 @@ func (b *binance) updateAssets() {
216216
func (b *binance) handleTrade(
217217
market Market,
218218
idle *time.Timer,
219-
) func(*gobinance.WsTradeEvent) {
220-
return func(event *gobinance.WsTradeEvent) {
219+
) func(*gobinance.WsAggTradeEvent) {
220+
return func(event *gobinance.WsAggTradeEvent) {
221221
idle.Reset(b.idlePeriod)
222222

223223
tradeEvent, err := b.buildEvent(event, market)
@@ -256,7 +256,7 @@ func (b *binance) handleErr(market Market) func(error) {
256256
}
257257
}
258258

259-
func (b *binance) buildEvent(tr *gobinance.WsTradeEvent, market Market) (TradeEvent, error) {
259+
func (b *binance) buildEvent(tr *gobinance.WsAggTradeEvent, market Market) (TradeEvent, error) {
260260
price, err := decimal.NewFromString(tr.Price)
261261
if err != nil {
262262
return TradeEvent{}, fmt.Errorf("failed to parse price: %+v", tr.Price)
@@ -328,7 +328,7 @@ func (b *binance) HistoricalData(ctx context.Context, market Market, window time
328328
// Convert aggregated trades to a trade events
329329
trades = make([]TradeEvent, 0, limit)
330330
for _, aggTrade := range aggTrades {
331-
trade, err := b.buildEvent(&gobinance.WsTradeEvent{
331+
trade, err := b.buildEvent(&gobinance.WsAggTradeEvent{
332332
Price: aggTrade.Price,
333333
Quantity: aggTrade.Quantity,
334334
TradeTime: aggTrade.Timestamp,

pkg/quotes/testing/app.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"net/http"
99
_ "net/http/pprof"
1010
"os"
11+
"time"
1112

1213
"github.com/ipfs/go-log/v2"
1314

@@ -62,7 +63,9 @@ func main() {
6263
"market", e.Market,
6364
"side", e.TakerType.String(),
6465
"price", e.Price.String(),
65-
"amount", e.Amount.String())
66+
"amount", e.Amount.String(),
67+
"created_received_diff", time.Now().Sub(e.CreatedAt).String(),
68+
)
6669
}
6770
outboxStop <- struct{}{}
6871
}()

0 commit comments

Comments
 (0)