72 lines
1.5 KiB
Go
72 lines
1.5 KiB
Go
package binancex
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"me.thuanle/bbot/internal/configs/binance"
|
|
"me.thuanle/bbot/internal/data"
|
|
"me.thuanle/bbot/internal/utils/stringx"
|
|
)
|
|
|
|
func Token2FutureSymbols(token string) []string {
|
|
var syms []string
|
|
if !stringx.IsAlphaNumeric(token) {
|
|
return syms
|
|
}
|
|
|
|
token = strings.ToUpper(token)
|
|
|
|
for _, prefix := range checkingPrefixList {
|
|
prefix = strings.ToUpper(prefix)
|
|
|
|
s := prefix + token
|
|
|
|
if data.Market.IsFuturesPair(s) {
|
|
syms = append(syms, s)
|
|
continue
|
|
}
|
|
|
|
for _, suffix := range binance.SymbolSuffixList {
|
|
suffix = strings.ToUpper(suffix)
|
|
abbr := strings.ToUpper(binance.SymbolSuffixMap[suffix])
|
|
|
|
sym := s + suffix
|
|
if data.Market.IsFuturesPair(sym) {
|
|
syms = append(syms, sym)
|
|
continue
|
|
}
|
|
|
|
symAbr, found := stringx.ReplaceSuffix(s, abbr, suffix)
|
|
if found && data.Market.IsFuturesPair(symAbr) {
|
|
syms = append(syms, symAbr)
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
return syms
|
|
}
|
|
|
|
func Token2SpotSymbols(token string) []string {
|
|
futureSymbols := Token2FutureSymbols(token)
|
|
spots := make([]string, 0, len(futureSymbols)+1)
|
|
seen := make(map[string]struct{}, len(futureSymbols)+1)
|
|
|
|
for _, futureSymbol := range futureSymbols {
|
|
spotSymbol := Future2SpotSymbol(futureSymbol)
|
|
if _, ok := seen[spotSymbol]; ok {
|
|
continue
|
|
}
|
|
seen[spotSymbol] = struct{}{}
|
|
spots = append(spots, spotSymbol)
|
|
}
|
|
|
|
spotOnly := strings.ToUpper(token) + "USDT"
|
|
if data.Market.IsSpotPair(spotOnly) {
|
|
if _, ok := seen[spotOnly]; !ok {
|
|
spots = append(spots, spotOnly)
|
|
}
|
|
}
|
|
|
|
return spots
|
|
}
|