Skip to content

Commit

Permalink
one conversion path deeper
Browse files Browse the repository at this point in the history
  • Loading branch information
rbajollari committed Sep 5, 2024
1 parent cf9338a commit 43ee94e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
22 changes: 22 additions & 0 deletions oracle/convert.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,32 @@ func ConvertRatesToUSD(rates types.CurrencyPairDec) types.CurrencyPairDec {
continue
}

var converted bool
for cpConvert, rateConvert := range rates {
if cpConvert.Quote == config.DenomUSD && cpConvert.Base == cp.Quote {
convertedPair := types.CurrencyPair{Base: cp.Base, Quote: config.DenomUSD}
convertedRates[convertedPair] = rate.Mul(rateConvert)
converted = true
}
}

// If the rate is not converted, try one conversion path deeper.
if !converted {
for cpConvert, rateConvert := range rates {
if cpConvert.Base == cp.Quote {
var quoteRate math.LegacyDec
var foundQuoteRate bool
for cpConvert2, rateConvert2 := range rates {
if cpConvert2.Quote == config.DenomUSD && cpConvert2.Base == cpConvert.Quote {
quoteRate = rateConvert2
foundQuoteRate = true
}
}
if foundQuoteRate {
convertedPair := types.CurrencyPair{Base: cp.Base, Quote: config.DenomUSD}
convertedRates[convertedPair] = rate.Mul(rateConvert).Mul(quoteRate)
}
}
}
}
}
Expand Down
4 changes: 4 additions & 0 deletions oracle/util.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (

var (
minimumTimeWeight = math.LegacyMustNewDecFromStr("0.2000")
minimumTickerVolume = math.LegacyMustNewDecFromStr("0.000000000000001")

Check failure on line 17 in oracle/util.go

View workflow job for this annotation

GitHub Actions / Run golangci-lint

var `minimumTickerVolume` is unused (unused)
minimumCandleVolume = math.LegacyMustNewDecFromStr("0.0001")
)

Expand Down Expand Up @@ -58,6 +59,9 @@ func ComputeVWAP(prices types.AggregatedProviderPrices) types.CurrencyPairDec {
if _, ok := volumeSum[base]; !ok {
volumeSum[base] = math.LegacyZeroDec()
}
if tp.Volume.LT(minimumCandleVolume) {
tp.Volume = minimumCandleVolume
}

// weightedPrices[base] = Σ {P * V} for all TickerPrice
weightedPrices[base] = weightedPrices[base].Add(tp.Price.Mul(tp.Volume))
Expand Down

0 comments on commit 43ee94e

Please sign in to comment.