diff --git a/cointop/portfolio.go b/cointop/portfolio.go index 58ab85c..93a89dc 100644 --- a/cointop/portfolio.go +++ b/cointop/portfolio.go @@ -529,12 +529,25 @@ func (ct *Cointop) GetPortfolioSlice() []*Coin { return sliced } +OUTER: for i := range ct.State.allCoins { coin := ct.State.allCoins[i] p, isNew := ct.PortfolioEntry(coin) if isNew { continue } + // check not already found + updateSlice := -1 + for j := range sliced { + if coin.Symbol == sliced[j].Symbol { + if coin.Rank >= sliced[j].Rank { + continue OUTER // skip updates from lower-ranked coins + } + updateSlice = j // update this later + break + } + } + coin.Holdings = p.Holdings balance := coin.Price * p.Holdings balancestr := fmt.Sprintf("%.2f", balance) @@ -543,7 +556,12 @@ func (ct *Cointop) GetPortfolioSlice() []*Coin { } balance, _ = strconv.ParseFloat(balancestr, 64) coin.Balance = balance - sliced = append(sliced, coin) + if updateSlice == -1 { + sliced = append(sliced, coin) + } else { + sliced[updateSlice] = coin + } + } sort.Slice(sliced, func(i, j int) bool {