55 lines
1.3 KiB
Python
55 lines
1.3 KiB
Python
"""Global application settings loaded from environment variables."""
|
|
|
|
from typing import List
|
|
|
|
from pydantic_settings import BaseSettings
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Application configuration powered by pydantic-settings.
|
|
|
|
Values are loaded from environment variables or a .env file.
|
|
"""
|
|
|
|
# -- Exchange --
|
|
EXCHANGE_ID: str = "binance"
|
|
API_KEY: str = ""
|
|
API_SECRET: str = ""
|
|
SANDBOX_MODE: bool = True
|
|
|
|
# -- Trading --
|
|
TRADING_PAIRS: List[str] = ["BTC/USDT", "ETH/USDT"]
|
|
DEFAULT_LEVERAGE: int = 1
|
|
MAX_LEVERAGE: int = 3
|
|
|
|
# -- ICT Parameters --
|
|
SWING_LENGTH: int = 50
|
|
FVG_JOIN_CONSECUTIVE: bool = False
|
|
OB_CLOSE_MITIGATION: bool = False
|
|
LIQUIDITY_RANGE_PERCENT: float = 0.01
|
|
MIN_CONFLUENCE_SCORE: int = 3
|
|
|
|
# -- Timeframes --
|
|
HTF_TIMEFRAME: str = "4h"
|
|
MTF_TIMEFRAME: str = "1h"
|
|
LTF_TIMEFRAME: str = "15m"
|
|
|
|
# -- Risk Management --
|
|
MAX_RISK_PER_TRADE: float = 0.02
|
|
MAX_DAILY_LOSS: float = 0.05
|
|
MAX_CONCURRENT_POSITIONS: int = 3
|
|
MAX_DRAWDOWN: float = 0.15
|
|
|
|
# -- Notification --
|
|
TELEGRAM_BOT_TOKEN: str = ""
|
|
TELEGRAM_CHAT_ID: str = ""
|
|
|
|
# -- Database --
|
|
DB_PATH: str = "data/trading.db"
|
|
|
|
# -- Logging --
|
|
LOG_LEVEL: str = "INFO"
|
|
LOG_FILE: str = "logs/bot.log"
|
|
|
|
model_config = {"env_file": ".env", "env_file_encoding": "utf-8"}
|