mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-06-09 15:11:10 +00:00
currency: Adds matching lookup table built from available pairs (#1312)
* currency: Add pair matching update (cherry-pick) * exchange/currency: Add tests and update func * linter fix, also if using json unmarshal functionality stop usage of string conversion without delimiter * gemini: fix test * currency/manager: potential optimisation * exchanges: purge derive from wrapper cases and add warning comment * glorious: nits * glorious: nits * linter: fix * glorious: nits * whoops * whoops * glorious: nits continued * glorious: diff THANKS! * hitbtc: fix update tradable pairs strings splitting. continue if not enabled tickers update pair. * glorious: nits * linter: fix * Update exchanges/exmo/exmo_wrapper.go Co-authored-by: Scott <gloriousCode@users.noreply.github.com> * bitstamp: fix test when 32 biterinos architecturinos * capture more strings for speed * swapsies because whos running 32bit \0/? --------- Co-authored-by: Ryan O'Hara-Reid <ryan.oharareid@thrasher.io> Co-authored-by: Scott <gloriousCode@users.noreply.github.com>
This commit is contained in:
@@ -215,6 +215,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
if wsType, ok := multiStreamData["type"].(string); ok {
|
||||
switch topics[0] {
|
||||
case wsOrder25, wsOrder200:
|
||||
var enabled bool
|
||||
switch wsType {
|
||||
case wsOperationSnapshot:
|
||||
var response WsFuturesOrderbook
|
||||
@@ -224,11 +225,15 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
}
|
||||
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.OBData[0].Symbol, asset.CoinMarginedFutures)
|
||||
p, enabled, err = by.MatchSymbolCheckEnabled(response.OBData[0].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !enabled {
|
||||
return nil
|
||||
}
|
||||
|
||||
err = by.processOrderbook(response.OBData,
|
||||
response.Type,
|
||||
p,
|
||||
@@ -236,7 +241,6 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
case wsOperationDelta:
|
||||
var response WsCoinDeltaOrderbook
|
||||
err = json.Unmarshal(respRaw, &response)
|
||||
@@ -246,11 +250,15 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
|
||||
if len(response.OBData.Delete) > 0 {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.OBData.Delete[0].Symbol, asset.CoinMarginedFutures)
|
||||
p, enabled, err = by.MatchSymbolCheckEnabled(response.OBData.Delete[0].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !enabled {
|
||||
return nil
|
||||
}
|
||||
|
||||
err = by.processOrderbook(response.OBData.Delete,
|
||||
wsOrderbookActionDelete,
|
||||
p,
|
||||
@@ -262,11 +270,15 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
|
||||
if len(response.OBData.Update) > 0 {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.OBData.Update[0].Symbol, asset.CoinMarginedFutures)
|
||||
p, enabled, err = by.MatchSymbolCheckEnabled(response.OBData.Update[0].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !enabled {
|
||||
return nil
|
||||
}
|
||||
|
||||
err = by.processOrderbook(response.OBData.Update,
|
||||
wsOrderbookActionUpdate,
|
||||
p,
|
||||
@@ -278,11 +290,15 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
|
||||
if len(response.OBData.Insert) > 0 {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.OBData.Insert[0].Symbol, asset.CoinMarginedFutures)
|
||||
p, enabled, err = by.MatchSymbolCheckEnabled(response.OBData.Insert[0].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if !enabled {
|
||||
return nil
|
||||
}
|
||||
|
||||
err = by.processOrderbook(response.OBData.Insert,
|
||||
wsOrderbookActionInsert,
|
||||
p,
|
||||
@@ -308,7 +324,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
trades := make([]trade.Data, len(response.TradeData))
|
||||
for i := range response.TradeData {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.TradeData[0].Symbol, asset.CoinMarginedFutures)
|
||||
p, err = by.MatchSymbolWithAvailablePairs(response.TradeData[0].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -344,7 +360,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
}
|
||||
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(topics[len(topics)-1], asset.CoinMarginedFutures)
|
||||
p, err = by.MatchSymbolWithAvailablePairs(topics[len(topics)-1], asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -382,7 +398,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
}
|
||||
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.Ticker.Symbol, asset.CoinMarginedFutures)
|
||||
p, err = by.MatchSymbolWithAvailablePairs(response.Ticker.Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -411,7 +427,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
if len(response.Data.Delete) > 0 {
|
||||
for x := range response.Data.Delete {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.Data.Delete[x].Symbol, asset.CoinMarginedFutures)
|
||||
p, err = by.MatchSymbolWithAvailablePairs(response.Data.Delete[x].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -435,7 +451,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
if len(response.Data.Update) > 0 {
|
||||
for x := range response.Data.Update {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.Data.Update[x].Symbol, asset.CoinMarginedFutures)
|
||||
p, err = by.MatchSymbolWithAvailablePairs(response.Data.Update[x].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -459,7 +475,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
if len(response.Data.Insert) > 0 {
|
||||
for x := range response.Data.Insert {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.Data.Insert[x].Symbol, asset.CoinMarginedFutures)
|
||||
p, err = by.MatchSymbolWithAvailablePairs(response.Data.Insert[x].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -510,7 +526,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
|
||||
for i := range response.Data {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.Data[i].Symbol, asset.CoinMarginedFutures)
|
||||
p, err = by.MatchSymbolWithAvailablePairs(response.Data[i].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -566,7 +582,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
}
|
||||
for x := range response.Data {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.Data[x].Symbol, asset.CoinMarginedFutures)
|
||||
p, err = by.MatchSymbolWithAvailablePairs(response.Data[x].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -628,7 +644,7 @@ func (by *Bybit) wsCoinHandleData(respRaw []byte) error {
|
||||
}
|
||||
for x := range response.Data {
|
||||
var p currency.Pair
|
||||
p, err = by.extractCurrencyPair(response.Data[x].Symbol, asset.CoinMarginedFutures)
|
||||
p, err = by.MatchSymbolWithAvailablePairs(response.Data[x].Symbol, asset.CoinMarginedFutures, false)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user