53 lines
1.2 KiB
Go
53 lines
1.2 KiB
Go
package controllers
|
|
|
|
import (
|
|
"me.thuanle/bbot/internal/configs/strategy"
|
|
"me.thuanle/bbot/internal/data"
|
|
"sort"
|
|
)
|
|
|
|
// GetTopPrices returns the top symbol, price and rate
|
|
func GetTopPrices() ([]string, []float64, []float64) {
|
|
n := len(strategy.TopPriceSymbols)
|
|
topSym := make([]string, n)
|
|
topPrice := make([]float64, n)
|
|
topRate := make([]float64, n)
|
|
|
|
for i, sym := range strategy.TopPriceSymbols {
|
|
price, rate, _, ok := data.Market.GetFuturePrice(sym)
|
|
if !ok {
|
|
continue
|
|
}
|
|
topSym[i] = sym
|
|
topPrice[i] = price
|
|
topRate[i] = rate
|
|
|
|
}
|
|
return topSym, topPrice, topRate
|
|
}
|
|
|
|
// GetTopFundingFee returns the top funding fee: symbol, rate and cd time
|
|
func GetTopFundingFee() ([]string, []float64, []int64) {
|
|
allRates, allCd := data.Market.GetAllFundRate()
|
|
var resSym []string
|
|
for sym, rate := range allRates {
|
|
if strategy.FundRateBuyThreshold < rate && rate < strategy.FundRateSellThreshold {
|
|
continue
|
|
}
|
|
|
|
resSym = append(resSym, sym)
|
|
}
|
|
|
|
sort.Slice(resSym, func(i, j int) bool {
|
|
return allRates[resSym[i]] < allRates[resSym[j]]
|
|
})
|
|
|
|
resRate := make([]float64, len(resSym))
|
|
resCd := make([]int64, len(resSym))
|
|
for i, sym := range resSym {
|
|
resRate[i] = allRates[sym]
|
|
resCd[i] = allCd[sym]
|
|
}
|
|
return resSym, resRate, resCd
|
|
}
|