teste / docs /configuration.md
torxyton's picture
Initial commit: Complete Fibonacci analysis application with Gradio interface
7f335a2

A newer version of the Gradio SDK is available: 6.2.0

Upgrade

⚙️ Guia de Configuração

Visão Geral

Este documento descreve todas as opções de configuração disponíveis no Vampire Trading Bot, incluindo configurações de modelos de IA, análise técnica, interface do usuário e performance.

📁 Arquivo Principal de Configuração

Todas as configurações estão centralizadas no arquivo config.py. Este arquivo contém classes de configuração organizadas por funcionalidade.

Estrutura do Arquivo

# config.py
class FinancialModels:      # Modelos de IA
class TechnicalAnalysis:    # Análise técnica
class ScoringConfig:        # Pontuação e confiança
class TradingConfig:        # Configurações de trading
class UIConfig:             # Interface do usuário
class RegexPatterns:        # Padrões de extração
class AIConfig:             # Configurações de IA
class AppConfig:            # Configurações gerais

🤖 Configuração de Modelos de IA

FinancialModels

class FinancialModels:
    """Modelos de IA para análise financeira."""
    
    # Lista de modelos disponíveis (ordenados por performance/tamanho)
    FINANCIAL_MODELS = [
        "nlptown/bert-base-multilingual-uncased-sentiment",  # Leve, multilíngue
        "cardiffnlp/twitter-roberta-base-sentiment-latest",   # Médio, redes sociais
        "ProsusAI/finbert",                                   # Pesado, financeiro
        "mrm8488/distilroberta-finetuned-financial-news-sentiment-analysis"
    ]
    
    # Modelo padrão (usado se não especificado)
    DEFAULT_MODEL = FINANCIAL_MODELS[0]
    
    # Modelos alternativos para fallback
    FALLBACK_MODELS = [
        "cardiffnlp/twitter-roberta-base-sentiment-latest",
        "nlptown/bert-base-multilingual-uncased-sentiment"
    ]

Como Configurar

  1. Escolher Modelo por Performance:

    # Para melhor performance (mais leve)
    DEFAULT_MODEL = "nlptown/bert-base-multilingual-uncased-sentiment"
    
    # Para melhor precisão (mais pesado)
    DEFAULT_MODEL = "ProsusAI/finbert"
    
  2. Adicionar Novos Modelos:

    FINANCIAL_MODELS.append("seu-modelo/nome-do-modelo")
    

AIConfig

class AIConfig:
    """Configurações gerais de IA."""
    
    # Tamanho máximo de texto para análise
    MAX_TEXT_LENGTH = 512
    
    # Pipeline de análise de sentimento
    SENTIMENT_PIPELINE = "sentiment-analysis"
    
    # Configurações de cache
    ENABLE_MODEL_CACHE = True
    CACHE_SIZE = 100
    
    # Timeout para carregamento de modelos (segundos)
    MODEL_LOAD_TIMEOUT = 60
    
    # Usar GPU se disponível
    USE_GPU = True
    
    # Batch size para processamento
    BATCH_SIZE = 8

Configurações Avançadas de IA

# Configuração de memória
AIConfig.MAX_TEXT_LENGTH = 256  # Reduzir para economizar memória
AIConfig.BATCH_SIZE = 4         # Reduzir batch size

# Configuração de performance
AIConfig.USE_GPU = False        # Forçar uso de CPU
AIConfig.ENABLE_MODEL_CACHE = False  # Desabilitar cache

# Configuração de timeout
AIConfig.MODEL_LOAD_TIMEOUT = 120  # Aumentar timeout

📊 Configuração de Análise Técnica

TechnicalAnalysis

class TechnicalAnalysis:
    """Configurações para análise técnica."""
    
    # Configurações do RSI
    RSI_PERIOD = 14
    RSI_OVERSOLD = 30
    RSI_OVERBOUGHT = 70
    
    # Configurações das Bandas de Bollinger
    BOLLINGER_PERIOD = 20
    BOLLINGER_STD = 2
    
    # Configurações das EMAs
    EMA_FAST_PERIOD = 9
    EMA_SLOW_PERIOD = 21
    
    # Configurações de Volume
    VOLUME_MA_PERIOD = 20
    HIGH_VOLUME_MULTIPLIER = 1.5
    
    # Configurações de Momentum
    MOMENTUM_PERIOD = 10
    MOMENTUM_THRESHOLD = 0.02

Personalização de Indicadores

# RSI mais sensível
TechnicalAnalysis.RSI_PERIOD = 10
TechnicalAnalysis.RSI_OVERSOLD = 25
TechnicalAnalysis.RSI_OVERBOUGHT = 75

# Bandas de Bollinger mais apertadas
TechnicalAnalysis.BOLLINGER_STD = 1.5

# EMAs mais rápidas
TechnicalAnalysis.EMA_FAST_PERIOD = 5
TechnicalAnalysis.EMA_SLOW_PERIOD = 13

🎯 Configuração de Trading

TradingConfig

class TradingConfig:
    """Configurações de trading e gestão de risco."""
    
    # Stop Loss padrão (percentual)
    DEFAULT_STOP_LOSS = 0.5  # 0.5%
    
    # Take Profit padrão (percentual)
    DEFAULT_TAKE_PROFIT = 1.0  # 1.0%
    
    # Relação risco/recompensa mínima
    MIN_RISK_REWARD = 1.5
    
    # Tamanho de posição padrão
    DEFAULT_POSITION_SIZE = 1.0
    
    # Configurações de scalping
    SCALPING_TIMEFRAMES = ["1m", "5m", "15m"]
    SCALPING_MIN_VOLUME = 1000
    
    # Configurações de volatilidade
    LOW_VOLATILITY_THRESHOLD = 0.5
    HIGH_VOLATILITY_THRESHOLD = 2.0

Estratégias de Risco

# Estratégia conservadora
TradingConfig.DEFAULT_STOP_LOSS = 0.3
TradingConfig.DEFAULT_TAKE_PROFIT = 0.6
TradingConfig.MIN_RISK_REWARD = 2.0

# Estratégia agressiva
TradingConfig.DEFAULT_STOP_LOSS = 0.8
TradingConfig.DEFAULT_TAKE_PROFIT = 1.5
TradingConfig.MIN_RISK_REWARD = 1.2

🎨 Configuração da Interface

UIConfig

class UIConfig:
    """Configurações da interface do usuário."""
    
    # Informações do aplicativo
    TITLE = "📈 Vampire Trading Bot"
    SUBTITLE = "Análise Avançada de Mercado com IA"
    DESCRIPTION = "Sistema completo de análise técnica e sentimento"
    
    # Emojis para diferentes ações
    ACTION_EMOJIS = {
        "COMPRAR": "🟢",
        "VENDER": "🔴",
        "AGUARDAR": "🟡",
        "NEUTRO": "⚪"
    }
    
    # Cores para diferentes elementos
    COLORS = {
        "success": "#28a745",
        "danger": "#dc3545",
        "warning": "#ffc107",
        "info": "#17a2b8",
        "primary": "#007bff"
    }
    
    # Mensagens de status
    STATUS_MESSAGES = {
        "loading": "🔄 Processando análise...",
        "success": "✅ Análise concluída com sucesso!",
        "error": "❌ Erro durante a análise",
        "no_data": "⚠️ Nenhum dado fornecido"
    }

Personalização da Interface

# Tema escuro
UIConfig.COLORS = {
    "success": "#00ff88",
    "danger": "#ff4444",
    "warning": "#ffaa00",
    "info": "#00aaff",
    "primary": "#8800ff"
}

# Personalizar título
UIConfig.TITLE = "🧛 Meu Bot de Trading"
UIConfig.SUBTITLE = "Análise Personalizada"

🔍 Configuração de Padrões Regex

RegexPatterns

class RegexPatterns:
    """Padrões regex para extração de dados."""
    
    # Extração de preços
    PRICE_PATTERN = r"Preço.*?([\d,]+\.\d+)"
    
    # Extração de variação
    VARIATION_PATTERN = r"Variação.*?([+-]?[\d,]+\.\d+)"
    
    # Extração de porcentagem
    PERCENTAGE_PATTERN = r"\(([+-]?\d+\.\d+)%\)"
    
    # Extração de volume
    VOLUME_PATTERN = r"Volume.*?(\d+)"
    
    # Extração de RSI
    RSI_PATTERN = r"RSI.*?(\d+\.\d+)"
    
    # Extração de EMAs
    EMA_PATTERN = r"EMA.*?(\d+\.\d+)"

Personalização de Padrões

# Padrões para formato brasileiro
RegexPatterns.PRICE_PATTERN = r"R\$\s*([\d.]+,\d+)"
RegexPatterns.PERCENTAGE_PATTERN = r"\(([+-]?\d+,\d+)%\)"

# Padrões para outros idiomas
RegexPatterns.PRICE_PATTERN = r"Price.*?([\d,]+\.\d+)"

📈 Configuração de Pontuação

ScoringConfig

class ScoringConfig:
    """Configurações de pontuação e confiança."""
    
    # Pesos para diferentes análises
    TECHNICAL_WEIGHT = 0.4
    SENTIMENT_WEIGHT = 0.3
    FIBONACCI_WEIGHT = 0.3
    
    # Thresholds de confiança
    HIGH_CONFIDENCE_THRESHOLD = 80
    MEDIUM_CONFIDENCE_THRESHOLD = 60
    LOW_CONFIDENCE_THRESHOLD = 40
    
    # Multiplicadores de pontuação
    STRONG_SIGNAL_MULTIPLIER = 1.5
    WEAK_SIGNAL_MULTIPLIER = 0.7
    
    # Penalizações
    CONFLICTING_SIGNALS_PENALTY = 0.2
    LOW_VOLUME_PENALTY = 0.1

Ajuste de Pesos

# Priorizar análise técnica
ScoringConfig.TECHNICAL_WEIGHT = 0.6
ScoringConfig.SENTIMENT_WEIGHT = 0.2
ScoringConfig.FIBONACCI_WEIGHT = 0.2

# Priorizar sentimento
ScoringConfig.TECHNICAL_WEIGHT = 0.2
ScoringConfig.SENTIMENT_WEIGHT = 0.6
ScoringConfig.FIBONACCI_WEIGHT = 0.2

🚀 Configuração de Performance

Configurações de Sistema

# Em performance_monitor.py
class PerformanceConfig:
    # Intervalo de coleta de métricas (segundos)
    METRICS_INTERVAL = 5.0
    
    # Histórico máximo de métricas
    MAX_METRICS_HISTORY = 1000
    
    # Thresholds de alerta
    CPU_ALERT_THRESHOLD = 80.0
    MEMORY_ALERT_THRESHOLD = 85.0
    
    # Configurações de otimização
    ENABLE_AUTO_OPTIMIZATION = True
    OPTIMIZATION_INTERVAL = 300  # 5 minutos

Configurações de Cache

# Cache de modelos
MODEL_CACHE_SIZE = 3
MODEL_CACHE_TTL = 3600  # 1 hora

# Cache de análises
ANALYSIS_CACHE_SIZE = 100
ANALYSIS_CACHE_TTL = 300  # 5 minutos

🔧 Configuração via Variáveis de Ambiente

Variáveis Suportadas

# Modelo de IA
export FINBERT_MODEL="ProsusAI/finbert"
export MAX_TEXT_LENGTH="512"

# Performance
export MAX_WORKERS="4"
export ENABLE_GPU="true"
export CACHE_SIZE="1000"

# Logging
export LOG_LEVEL="INFO"
export LOG_FILE="vampire_bot.log"

# Interface
export GRADIO_SERVER_NAME="0.0.0.0"
export GRADIO_SERVER_PORT="7860"
export GRADIO_SHARE="false"

# Real-time
export LOG_FILE_PATH="/path/to/trading.log"
export CHECK_INTERVAL="1.0"

Carregamento de Variáveis

import os
from config import AIConfig, UIConfig

# Carregar configurações do ambiente
AIConfig.MAX_TEXT_LENGTH = int(os.getenv('MAX_TEXT_LENGTH', '512'))
AIConfig.USE_GPU = os.getenv('ENABLE_GPU', 'true').lower() == 'true'

UIConfig.TITLE = os.getenv('APP_TITLE', UIConfig.TITLE)

📋 Configuração por Perfil

Perfis Pré-definidos

# profiles.py
class DevelopmentProfile:
    """Perfil para desenvolvimento."""
    DEBUG = True
    LOG_LEVEL = "DEBUG"
    ENABLE_MODEL_CACHE = False
    USE_LIGHTWEIGHT_MODELS = True

class ProductionProfile:
    """Perfil para produção."""
    DEBUG = False
    LOG_LEVEL = "INFO"
    ENABLE_MODEL_CACHE = True
    USE_LIGHTWEIGHT_MODELS = False
    ENABLE_MONITORING = True

class TestingProfile:
    """Perfil para testes."""
    DEBUG = True
    LOG_LEVEL = "WARNING"
    USE_MOCK_MODELS = True
    DISABLE_REAL_TIME = True

Aplicação de Perfis

# app.py
import os
from profiles import DevelopmentProfile, ProductionProfile

profile = os.getenv('APP_PROFILE', 'development')

if profile == 'production':
    config = ProductionProfile()
else:
    config = DevelopmentProfile()

# Aplicar configurações
for attr in dir(config):
    if not attr.startswith('_'):
        setattr(globals()[attr.split('_')[0] + 'Config'], attr, getattr(config, attr))

🔄 Configuração Dinâmica

Recarregamento de Configuração

class ConfigManager:
    """Gerenciador de configuração dinâmica."""
    
    @staticmethod
    def reload_config():
        """Recarrega configurações do arquivo."""
        importlib.reload(config)
    
    @staticmethod
    def update_config(section: str, key: str, value: Any):
        """Atualiza configuração específica."""
        config_class = getattr(config, section)
        setattr(config_class, key, value)
    
    @staticmethod
    def get_config(section: str, key: str) -> Any:
        """Obtém valor de configuração."""
        config_class = getattr(config, section)
        return getattr(config_class, key)

Interface de Configuração

# Adicionar à interface Gradio
def create_config_interface():
    with gr.Tab("⚙️ Configurações"):
        with gr.Row():
            model_dropdown = gr.Dropdown(
                choices=FinancialModels.FINANCIAL_MODELS,
                value=FinancialModels.DEFAULT_MODEL,
                label="Modelo de IA"
            )
            
        with gr.Row():
            rsi_period = gr.Number(
                value=TechnicalAnalysis.RSI_PERIOD,
                label="Período RSI"
            )
            
        update_btn = gr.Button("Atualizar Configurações")
        
        update_btn.click(
            fn=update_configurations,
            inputs=[model_dropdown, rsi_period],
            outputs=[]
        )

📝 Exemplos de Configuração

Configuração Básica

# config_basic.py
from config import *

# Usar modelo leve
FinancialModels.DEFAULT_MODEL = "nlptown/bert-base-multilingual-uncased-sentiment"

# Configurações conservadoras
TradingConfig.DEFAULT_STOP_LOSS = 0.3
TradingConfig.MIN_RISK_REWARD = 2.0

# Interface simples
UIConfig.TITLE = "Bot de Trading Simples"

Configuração Avançada

# config_advanced.py
from config import *

# Usar modelo mais preciso
FinancialModels.DEFAULT_MODEL = "ProsusAI/finbert"

# Análise técnica mais sensível
TechnicalAnalysis.RSI_PERIOD = 10
TechnicalAnalysis.EMA_FAST_PERIOD = 5

# Trading mais agressivo
TradingConfig.DEFAULT_STOP_LOSS = 0.8
TradingConfig.MIN_RISK_REWARD = 1.2

# Performance otimizada
AIConfig.BATCH_SIZE = 16
AIConfig.ENABLE_MODEL_CACHE = True

🔍 Troubleshooting de Configuração

Problemas Comuns

  1. Modelo não carrega:

    # Verificar se modelo existe
    try:
        from transformers import pipeline
        pipeline("sentiment-analysis", model=FinancialModels.DEFAULT_MODEL)
    except Exception as e:
        print(f"Erro ao carregar modelo: {e}")
    
  2. Configuração não aplicada:

    # Verificar se configuração foi carregada
    print(f"Modelo atual: {FinancialModels.DEFAULT_MODEL}")
    print(f"RSI período: {TechnicalAnalysis.RSI_PERIOD}")
    
  3. Performance baixa:

    # Configurações para melhor performance
    AIConfig.MAX_TEXT_LENGTH = 256
    AIConfig.BATCH_SIZE = 4
    AIConfig.USE_GPU = False
    

Validação de Configuração

def validate_config():
    """Valida configurações atuais."""
    errors = []
    
    # Validar modelo
    if FinancialModels.DEFAULT_MODEL not in FinancialModels.FINANCIAL_MODELS:
        errors.append("Modelo padrão não está na lista de modelos")
    
    # Validar períodos
    if TechnicalAnalysis.RSI_PERIOD < 2:
        errors.append("Período RSI muito baixo")
    
    # Validar trading
    if TradingConfig.DEFAULT_STOP_LOSS <= 0:
        errors.append("Stop loss deve ser positivo")
    
    return errors

📚 Próximos Passos