From ca428f52033adfacd3ba4f99ae4f799dfd3a493e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20Rasc=C3=A3o?= Date: Mon, 8 Nov 2021 01:17:01 +0000 Subject: [PATCH] binance: allow exposure of trade feed through data channel (#823) --- exchanges/binance/binance_websocket.go | 25 +++++++++++++++---------- exchanges/binance/binance_wrapper.go | 1 + 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/exchanges/binance/binance_websocket.go b/exchanges/binance/binance_websocket.go index bc313188..a2212aef 100644 --- a/exchanges/binance/binance_websocket.go +++ b/exchanges/binance/binance_websocket.go @@ -318,9 +318,13 @@ func (b *Binance) wsHandleData(respRaw []byte) error { switch streamType[1] { case "trade": - if !b.IsSaveTradeDataEnabled() { + saveTradeData := b.IsSaveTradeDataEnabled() + + if !saveTradeData && + !b.IsTradeFeedEnabled() { return nil } + var t TradeStream err := json.Unmarshal(rawData, &t) if err != nil { @@ -348,15 +352,16 @@ func (b *Binance) wsHandleData(respRaw []byte) error { return err } - return b.AddTradesToBuffer(trade.Data{ - CurrencyPair: pair, - Timestamp: t.TimeStamp, - Price: price, - Amount: amount, - Exchange: b.Name, - AssetType: asset.Spot, - TID: strconv.FormatInt(t.TradeID, 10), - }) + return b.Websocket.Trade.Update(saveTradeData, + trade.Data{ + CurrencyPair: pair, + Timestamp: t.TimeStamp, + Price: price, + Amount: amount, + Exchange: b.Name, + AssetType: asset.Spot, + TID: strconv.FormatInt(t.TradeID, 10), + }) case "ticker": var t TickerStream err := json.Unmarshal(rawData, &t) diff --git a/exchanges/binance/binance_wrapper.go b/exchanges/binance/binance_wrapper.go index b8dc00c7..1089dc9d 100644 --- a/exchanges/binance/binance_wrapper.go +++ b/exchanges/binance/binance_wrapper.go @@ -231,6 +231,7 @@ func (b *Binance) Setup(exch *config.Exchange) error { Features: &b.Features.Supports.WebsocketCapabilities, SortBuffer: true, SortBufferByUpdateIDs: true, + TradeFeed: b.Features.Enabled.TradeFeed, }) if err != nil { return err