Spaces:
Sleeping
Sleeping
A newer version of the Gradio SDK is available:
6.2.0
⚙️ 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
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"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
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}")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}")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
- Leia o Guia do Desenvolvedor
- Consulte a Referência da API
- Veja exemplos em Troubleshooting