"""
Fossati AI Trading Bot - Configuração Central
Método Inteligente Fossati · SMC PRO Elite
"""

import os
from dataclasses import dataclass, field
from typing import List
from dotenv import load_dotenv

load_dotenv()

# ─────────────────────────────────────────────
# CREDENCIAIS (use variáveis de ambiente)
# ─────────────────────────────────────────────
BINANCE_API_KEY    = os.getenv("BINANCE_API_KEY", "SUA_API_KEY_AQUI")
BINANCE_API_SECRET = os.getenv("BINANCE_API_SECRET", "SUA_SECRET_KEY_AQUI")
ANTHROPIC_API_KEY  = os.getenv("ANTHROPIC_API_KEY", "SUA_ANTHROPIC_KEY_AQUI")
TELEGRAM_BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN", "SEU_BOT_TOKEN_AQUI")
TELEGRAM_CHAT_ID   = os.getenv("TELEGRAM_CHAT_ID", "SEU_CHAT_ID_AQUI")

# ─────────────────────────────────────────────
# TOKENS MONITORADOS (Futuros Perpétuos USDT)
# ─────────────────────────────────────────────
SYMBOLS: List[str] = [
    "BTCUSDT",
    "ETHUSDT",
    "SOLUSDT",
    "BNBUSDT",
    "AVAXUSDT",
    "DOGEUSDT",
    "DOTUSDT",
    "ETCUSDT",
    "BCHUSDT",
    "TRXUSDT",
    "RENDERUSDT",
    "1000SHIBUSDT",   # SHIB usa contrato 1000x na Binance
    "XMRUSDT",        # Verificar disponibilidade na sua região
    "HYPERUSDT",      # Verificar disponibilidade
]

# ─────────────────────────────────────────────
# GESTÃO DE CAPITAL
# ─────────────────────────────────────────────
INITIAL_BALANCE       = 0.34      # Saldo inicial em USDT
DAILY_PROFIT_TARGET   = 0.50      # Meta diária: 50% do saldo atual
MAX_RISK_PER_TRADE    = 0.10      # Risco máximo por operação: 10%
MAX_DAILY_DRAWDOWN    = 0.20      # Drawdown máximo diário: 20%
MAX_OPEN_POSITIONS    = 3         # Máximo de posições simultâneas
COMPOUNDING           = True      # Reinvestir ganhos diários

# Modo conservador (recomendado para início)
CONSERVATIVE_MODE     = False     # Se True, usa 2% risco e 5% meta/dia
CONSERVATIVE_RISK     = 0.02
CONSERVATIVE_TARGET   = 0.05

# ─────────────────────────────────────────────
# PARÂMETROS SMC / FOSSATI
# ─────────────────────────────────────────────
MIN_CONFLUENCE_SCORE  = 9         # Mínimo de confluências (de 12)
TIMEFRAMES            = ["15m", "1h", "4h"]  # HTF para confluência
PRIMARY_TIMEFRAME     = "15m"     # Timeframe de entrada

# Order Block
OB_LOOKBACK           = 50        # Candles para buscar OBs
OB_MIN_BODY_RATIO     = 0.6       # Corpo mínimo do OB (60% do range)
OB_MITIGATION_LEVEL   = 0.5       # Nível de mitigação do OB (50%)

# Estrutura de mercado
SWING_LOOKBACK        = 20        # Candles para detectar swing H/L
BOS_MIN_BREAK         = 0.001     # Break mínimo de 0.1% para BOS válido

# Liquidez
EQUAL_LEVEL_TOLERANCE = 0.002     # Tolerância de 0.2% para EQH/EQL

# Risco/Retorno
MIN_RR_RATIO          = 2.0       # R:R mínimo para entrada
TRAILING_STOP         = True      # Usar trailing stop
TRAILING_CALLBACK     = 1.5       # Callback do trailing stop em %

# ─────────────────────────────────────────────
# ALAVANCAGEM
# ─────────────────────────────────────────────
DEFAULT_LEVERAGE      = 10        # Alavancagem padrão
MAX_LEVERAGE          = 20        # Alavancagem máxima permitida
LEVERAGE_BY_RISK      = True      # Calcular alavancagem pelo risco

# Mapa de alavancagem por score de confluência
LEVERAGE_MAP = {
    9:  8,    # 9/12 confluências → 8x
    10: 10,   # 10/12 → 10x
    11: 15,   # 11/12 → 15x
    12: 20,   # 12/12 → 20x (máximo)
}

# ─────────────────────────────────────────────
# HORÁRIOS DE OPERAÇÃO
# ─────────────────────────────────────────────
TRADING_HOURS_ENABLED = True
TRADING_START_HOUR    = 9         # 09:00 BRT
TRADING_END_HOUR      = 22        # 22:00 BRT
TIMEZONE              = "America/Sao_Paulo"

# ─────────────────────────────────────────────
# IA (Claude API)
# ─────────────────────────────────────────────
AI_MODEL              = "claude-sonnet-4-20250514"
AI_MAX_TOKENS         = 1500
AI_TEMPERATURE        = 0         # Determinístico para trading

# ─────────────────────────────────────────────
# INTERVALO DE VARREDURA
# ─────────────────────────────────────────────
SCAN_INTERVAL_SECONDS = 60        # Varredura a cada 60 segundos
CANDLE_LIMIT          = 200       # Candles históricos por símbolo

# ─────────────────────────────────────────────
# LOGS
# ─────────────────────────────────────────────
LOG_FILE              = "fossati_bot.log"
LOG_LEVEL             = "INFO"
TRADE_LOG_FILE        = "trades.json"
