teste / docs /configuration.md
torxyton's picture
Initial commit: Complete Fibonacci analysis application with Gradio interface
7f335a2
# ⚙️ 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)