96 lines
1.8 KiB
Go
96 lines
1.8 KiB
Go
package binancex
|
|
|
|
import (
|
|
"me.thuanle/bbot/internal/configs/binance"
|
|
"me.thuanle/bbot/internal/data"
|
|
"me.thuanle/bbot/internal/utils/stringx"
|
|
"strings"
|
|
)
|
|
|
|
func Symbol2Token(sym string) string {
|
|
token := strings.ToUpper(sym)
|
|
|
|
for _, prefix := range binance.SymbolPrefixList {
|
|
token, _ = strings.CutPrefix(token, prefix)
|
|
}
|
|
for suffix, abbr := range binance.SymbolSuffixMap {
|
|
var f bool
|
|
token, f = stringx.ReplaceSuffix(token, suffix, abbr)
|
|
if f {
|
|
break
|
|
}
|
|
}
|
|
return token
|
|
}
|
|
|
|
var (
|
|
checkingPrefixList = append(binance.SymbolPrefixList, "")
|
|
)
|
|
|
|
func testSym(sym string) bool {
|
|
_, _, _, test := data.Market.GetFuturePrice(sym)
|
|
return test
|
|
}
|
|
|
|
func Token2Symbols(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
|
|
|
|
//no suffix
|
|
if testSym(s) {
|
|
syms = append(syms, s)
|
|
continue
|
|
}
|
|
|
|
for suffix, abbr := range binance.SymbolSuffixMap {
|
|
suffix = strings.ToUpper(suffix)
|
|
abbr = strings.ToUpper(abbr)
|
|
|
|
//suffix
|
|
sym := s + suffix
|
|
if testSym(sym) {
|
|
syms = append(syms, sym)
|
|
continue
|
|
}
|
|
|
|
//suffix abbr
|
|
symAbr, found := stringx.ReplaceSuffix(s, abbr, suffix)
|
|
if found && testSym(symAbr) {
|
|
syms = append(syms, symAbr)
|
|
continue
|
|
}
|
|
}
|
|
}
|
|
return syms
|
|
}
|
|
|
|
func IsToken(s string) bool {
|
|
return len(Token2Symbols(s)) > 0
|
|
}
|
|
|
|
// Future2SpotSymbol convert future symbol to spot symbol
|
|
func Future2SpotSymbol(sym string) string {
|
|
for _, prefix := range binance.SymbolPrefixList {
|
|
var f bool
|
|
sym, f = strings.CutPrefix(sym, prefix)
|
|
if f {
|
|
break
|
|
}
|
|
}
|
|
|
|
spotSym, ok := binance.Future2SpotSymbolMap[sym]
|
|
if !ok {
|
|
return sym
|
|
}
|
|
return spotSym
|
|
}
|