mirror of
https://github.com/NoFxAiOS/nofx.git
synced 2026-06-06 05:51:19 +08:00
97 lines
2.8 KiB
Go
97 lines
2.8 KiB
Go
package store
|
|
|
|
import "strings"
|
|
|
|
func MissingRequiredExchangeCredentialFields(exchangeType, apiKey, secretKey, passphrase, hyperliquidWalletAddr, asterUser, asterSigner, asterPrivateKey, lighterWalletAddr, lighterAPIKeyPrivateKey string) []string {
|
|
switch strings.ToLower(strings.TrimSpace(exchangeType)) {
|
|
case "binance", "bybit", "gate", "indodax":
|
|
return missingNamedFields(
|
|
namedField{"api_key", apiKey},
|
|
namedField{"secret_key", secretKey},
|
|
)
|
|
case "okx", "bitget", "kucoin":
|
|
return missingNamedFields(
|
|
namedField{"api_key", apiKey},
|
|
namedField{"secret_key", secretKey},
|
|
namedField{"passphrase", passphrase},
|
|
)
|
|
case "hyperliquid":
|
|
return missingNamedFields(
|
|
namedField{"api_key", apiKey},
|
|
namedField{"hyperliquid_wallet_addr", hyperliquidWalletAddr},
|
|
)
|
|
case "aster":
|
|
return missingNamedFields(
|
|
namedField{"aster_user", asterUser},
|
|
namedField{"aster_signer", asterSigner},
|
|
namedField{"aster_private_key", asterPrivateKey},
|
|
)
|
|
case "lighter":
|
|
return missingNamedFields(
|
|
namedField{"lighter_wallet_addr", lighterWalletAddr},
|
|
namedField{"lighter_api_key_private_key", lighterAPIKeyPrivateKey},
|
|
)
|
|
default:
|
|
return []string{"exchange_type"}
|
|
}
|
|
}
|
|
|
|
type namedField struct {
|
|
name string
|
|
value string
|
|
}
|
|
|
|
func missingNamedFields(fields ...namedField) []string {
|
|
missing := make([]string, 0, len(fields))
|
|
for _, field := range fields {
|
|
if strings.TrimSpace(field.value) == "" {
|
|
missing = append(missing, field.name)
|
|
}
|
|
}
|
|
return missing
|
|
}
|
|
|
|
func IsVisibleAIModel(model *AIModel) bool {
|
|
if model == nil {
|
|
return false
|
|
}
|
|
return model.Enabled ||
|
|
strings.TrimSpace(string(model.APIKey)) != "" ||
|
|
strings.TrimSpace(model.CustomAPIURL) != "" ||
|
|
strings.TrimSpace(model.CustomModelName) != ""
|
|
}
|
|
|
|
func IsVisibleExchange(exchange *Exchange) bool {
|
|
if exchange == nil {
|
|
return false
|
|
}
|
|
return exchange.Enabled ||
|
|
strings.TrimSpace(string(exchange.APIKey)) != "" ||
|
|
strings.TrimSpace(string(exchange.SecretKey)) != "" ||
|
|
strings.TrimSpace(string(exchange.Passphrase)) != "" ||
|
|
strings.TrimSpace(exchange.HyperliquidWalletAddr) != "" ||
|
|
strings.TrimSpace(exchange.AsterUser) != "" ||
|
|
strings.TrimSpace(exchange.AsterSigner) != "" ||
|
|
strings.TrimSpace(string(exchange.AsterPrivateKey)) != "" ||
|
|
strings.TrimSpace(exchange.LighterWalletAddr) != "" ||
|
|
strings.TrimSpace(string(exchange.LighterPrivateKey)) != "" ||
|
|
strings.TrimSpace(string(exchange.LighterAPIKeyPrivateKey)) != "" ||
|
|
exchange.LighterAPIKeyIndex != 0
|
|
}
|
|
|
|
func IsVisibleTrader(trader *Trader) bool {
|
|
if trader == nil {
|
|
return false
|
|
}
|
|
return strings.TrimSpace(trader.Name) != "" &&
|
|
strings.TrimSpace(trader.AIModelID) != "" &&
|
|
strings.TrimSpace(trader.ExchangeID) != ""
|
|
}
|
|
|
|
func IsVisibleStrategy(strategy *Strategy) bool {
|
|
if strategy == nil {
|
|
return false
|
|
}
|
|
return strings.TrimSpace(strategy.Name) != ""
|
|
}
|