Spaces:
Sleeping
Sleeping
| # ⚙️ 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 | |
| ```python | |
| # 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 | |
| ```python | |
| 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**: | |
| ```python | |
| # 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**: | |
| ```python | |
| FINANCIAL_MODELS.append("seu-modelo/nome-do-modelo") | |
| ``` | |
| ### AIConfig | |
| ```python | |
| 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 | |
| ```python | |
| # 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 | |
| ```python | |
| 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 | |
| ```python | |
| # 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 | |
| ```python | |
| 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 | |
| ```python | |
| # 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 | |
| ```python | |
| 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 | |
| ```python | |
| # 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 | |
| ```python | |
| 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 | |
| ```python | |
| # 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 | |
| ```python | |
| 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 | |
| ```python | |
| # 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 | |
| ```python | |
| # 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 | |
| ```python | |
| # 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 | |
| ```bash | |
| # 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 | |
| ```python | |
| 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 | |
| ```python | |
| # 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 | |
| ```python | |
| # 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 | |
| ```python | |
| 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 | |
| ```python | |
| # 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 | |
| ```python | |
| # 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 | |
| ```python | |
| # 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**: | |
| ```python | |
| # 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**: | |
| ```python | |
| # Verificar se configuração foi carregada | |
| print(f"Modelo atual: {FinancialModels.DEFAULT_MODEL}") | |
| print(f"RSI período: {TechnicalAnalysis.RSI_PERIOD}") | |
| ``` | |
| 3. **Performance baixa**: | |
| ```python | |
| # Configurações para melhor performance | |
| AIConfig.MAX_TEXT_LENGTH = 256 | |
| AIConfig.BATCH_SIZE = 4 | |
| AIConfig.USE_GPU = False | |
| ``` | |
| ### Validação de Configuração | |
| ```python | |
| 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 | |
| - Leia o [Guia do Desenvolvedor](developer-guide.md) | |
| - Consulte a [Referência da API](api-reference.md) | |
| - Veja exemplos em [Troubleshooting](troubleshooting.md) |