mirror of
https://github.com/d0zingcat/gocryptotrader.git
synced 2026-06-06 07:26:47 +00:00
exchanges: Add UpdateTickers method and reserve UpdateTicker for single ticker symbol update requests (if supported) (#764)
* exchanges: add an UpdateTickers method to the main exchange interface This method will fetch all currency pair tickers of a given asset type and update them internally, does nothing for now. * exchanges: refactor UpdateTicker on all exchanges Keep the exact previous behaviour but implement the UpdateTickers method and refactor UpdateTicker by using it where applicable. * sync_manager: update all tickers when batching is enabled * binance: UpdateTicker to fetch single ticker symbol * ftx: UpdateTicker to fetch single ticker symbol
This commit is contained in:
@@ -834,3 +834,22 @@ func TestGetHistoricTrades(t *testing.T) {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateTicker(t *testing.T) {
|
||||
t.Parallel()
|
||||
cp, err := currency.NewPairFromString("btc_usdt")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
_, err = g.UpdateTicker(cp, asset.Spot)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestUpdateTickers(t *testing.T) {
|
||||
err := g.UpdateTickers(asset.Spot)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -230,19 +230,19 @@ func (g *Gateio) UpdateTradablePairs(forceUpdate bool) error {
|
||||
return g.UpdatePairs(p, asset.Spot, false, forceUpdate)
|
||||
}
|
||||
|
||||
// UpdateTicker updates and returns the ticker for a currency pair
|
||||
func (g *Gateio) UpdateTicker(p currency.Pair, assetType asset.Item) (*ticker.Price, error) {
|
||||
// UpdateTickers updates the ticker for all currency pairs of a given asset type
|
||||
func (g *Gateio) UpdateTickers(a asset.Item) error {
|
||||
result, err := g.GetTickers()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
pairs, err := g.GetEnabledPairs(assetType)
|
||||
pairs, err := g.GetEnabledPairs(a)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
for i := range pairs {
|
||||
for p := range pairs {
|
||||
for k := range result {
|
||||
if !strings.EqualFold(k, pairs[i].String()) {
|
||||
if !strings.EqualFold(k, pairs[p].String()) {
|
||||
continue
|
||||
}
|
||||
|
||||
@@ -254,16 +254,25 @@ func (g *Gateio) UpdateTicker(p currency.Pair, assetType asset.Item) (*ticker.Pr
|
||||
QuoteVolume: result[k].QuoteVolume,
|
||||
Open: result[k].Open,
|
||||
Close: result[k].Close,
|
||||
Pair: pairs[i],
|
||||
Pair: pairs[p],
|
||||
ExchangeName: g.Name,
|
||||
AssetType: assetType})
|
||||
AssetType: a})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ticker.GetTicker(g.Name, p, assetType)
|
||||
return nil
|
||||
}
|
||||
|
||||
// UpdateTicker updates and returns the ticker for a currency pair
|
||||
func (g *Gateio) UpdateTicker(p currency.Pair, a asset.Item) (*ticker.Price, error) {
|
||||
err := g.UpdateTickers(a)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ticker.GetTicker(g.Name, p, a)
|
||||
}
|
||||
|
||||
// FetchTicker returns the ticker for a currency pair
|
||||
|
||||
Reference in New Issue
Block a user