mirror of
https://github.com/laoxong/nofx.git
synced 2026-06-04 09:58:22 +08:00
062184054d
* feat: remove admin mode * feat: bugfix --------- Co-authored-by: icy <icyoung520@gmail.com>
69 lines
2.4 KiB
Go
69 lines
2.4 KiB
Go
package config
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
"log"
|
||
"os"
|
||
)
|
||
|
||
// LeverageConfig 杠杆配置
|
||
type LeverageConfig struct {
|
||
BTCETHLeverage int `json:"btc_eth_leverage"` // BTC和ETH的杠杆倍数(主账户建议5-50,子账户≤5)
|
||
AltcoinLeverage int `json:"altcoin_leverage"` // 山寨币的杠杆倍数(主账户建议5-20,子账户≤5)
|
||
}
|
||
|
||
// LogConfig 日志配置
|
||
type LogConfig struct {
|
||
Level string `json:"level"` // 日志级别: debug, info, warn, error (默认: info)
|
||
Telegram *TelegramConfig `json:"telegram"` // Telegram推送配置(可选)
|
||
}
|
||
|
||
// TelegramConfig Telegram推送配置(简化版,只保留必需字段)
|
||
type TelegramConfig struct {
|
||
Enabled bool `json:"enabled"` // 是否启用(默认: false)
|
||
BotToken string `json:"bot_token"` // Bot Token
|
||
ChatID int64 `json:"chat_id"` // Chat ID
|
||
MinLevel string `json:"min_level"` // 最低日志级别,该级别及以上的日志会推送到Telegram(可选,默认: error)
|
||
}
|
||
|
||
// Config 总配置
|
||
type Config struct {
|
||
BetaMode bool `json:"beta_mode"`
|
||
APIServerPort int `json:"api_server_port"`
|
||
UseDefaultCoins bool `json:"use_default_coins"`
|
||
DefaultCoins []string `json:"default_coins"`
|
||
CoinPoolAPIURL string `json:"coin_pool_api_url"`
|
||
OITopAPIURL string `json:"oi_top_api_url"`
|
||
MaxDailyLoss float64 `json:"max_daily_loss"`
|
||
MaxDrawdown float64 `json:"max_drawdown"`
|
||
StopTradingMinutes int `json:"stop_trading_minutes"`
|
||
Leverage LeverageConfig `json:"leverage"`
|
||
JWTSecret string `json:"jwt_secret"`
|
||
DataKLineTime string `json:"data_k_line_time"`
|
||
Log *LogConfig `json:"log"` // 日志配置
|
||
}
|
||
|
||
// LoadConfig 从文件加载配置
|
||
func LoadConfig(filename string) (*Config, error) {
|
||
// 检查filename是否存在
|
||
if _, err := os.Stat(filename); os.IsNotExist(err) {
|
||
log.Printf("📄 %s不存在,使用默认配置", filename)
|
||
return &Config{}, nil
|
||
}
|
||
|
||
// 读取 filename
|
||
data, err := os.ReadFile(filename)
|
||
if err != nil {
|
||
return nil, fmt.Errorf("读取%s失败: %w", filename, err)
|
||
}
|
||
|
||
// 解析JSON
|
||
var configFile Config
|
||
if err := json.Unmarshal(data, &configFile); err != nil {
|
||
return nil, fmt.Errorf("解析%s失败: %w", filename, err)
|
||
}
|
||
|
||
return &configFile, nil
|
||
}
|