Sumário > Projeto de Gestão de Criptomoedas
🪙 Criptoren - Sistema Automatizado de Operações com Criptomoedas
📌 Visão Geral
Este projeto é o MVP de um sistema de negociação automatizada baseado na estratégia Canal de Preço com Controle de Capital e Venda Programada com Lucro. O sistema monitora os preços de criptomoedas em tempo real via WebSocket da Binance, identifica oportunidades de compra conforme valorização sobre o fundo do canal e agenda vendas com lucro após desvalorização controlada.
🧱 Arquitetura
frontend/ → Interface Web simples (HTML, JS, CSS)
main.py → Inicialização da aplicação FastAPI
config.py → Configurações gerais
db_config.py → Parâmetros de conexão com banco
app/
├── api/ → Rotas da API REST
├── services/ → Serviços de execução da estratégia e WebSocket
├── models.py → Definição das tabelas SQLAlchemy
├── database.py → Conexão e sessão com banco PostgreSQL
├── schemas.py → Schemas de entrada/saída (Pydantic)
├── utils.py → Funções auxiliares
├── create_tables.py → Script de criação das tabelas
⚙️ Configurações
config.py
Contém variáveis globais e parâmetros usados ao longo da aplicação, como chave da Binance, porcentagens de operação, limites do canal e lucros mínimos.
db_config.py
Define as credenciais de conexão com banco PostgreSQL. A conexão é ajustada dinamicamente com base nas variáveis de ambiente (armazenadas no arquivo .env, ainda em construção).
🚀 Inicialização da API
main.py
- Instancia a FastAPI
- Conecta o roteador da API (
routes.py) - Executa servidor ASGI
🔄 Rotas da API
routes.py
Rotas disponíveis:
/start→ inicia o monitoramento/stop→ encerra o monitoramento/status→ verifica status da conexão
🗃️ Banco de Dados
models.py
Define as tabelas principais:
Operacao: operação realizada (compra ou venda)Estrategia: configurações da estratégia utilizadaLog: eventos e status registrados
database.py
- Cria engine SQLAlchemy para PostgreSQL
- Gera sessão de banco
schemas.py
Este módulo define os schemas utilizados pela API para validação e serialização de dados com Pydantic. Ele garante que as estruturas recebidas e retornadas pelas rotas sigam um formato padronizado e validado.
Principais schemas definidos:
OperacaoSchema:- Representa uma operação de compra ou venda.
- Campos:
id,preco_compra,preco_venda,quantidade,data_compra,data_venda,status,estrategia_id
EstrategiaSchema:- Utilizado para criação e leitura de estratégias de operação.
- Campos:
id,nome,par,capital_alocado,considera_lucro,limite_inferior,limite_superior,pct_valorizacao_compra,pct_desvalorizacao_venda,lucro_minimo
LogSchema:- Representa uma entrada de log do sistema.
- Campos:
id,mensagem,tipo,data
Utilização:
Esses schemas são usados como modelos de entrada e saída nas rotas FastAPI (routes.py), garantindo validação de dados automática e documentação automática com OpenAPI/Swagger.
create_tables.py
- Script usado para gerar todas as tabelas definidas em
models.pyno banco PostgreSQL local
📈 Execução da Estratégia
trade_service.py
Este módulo é responsável pela lógica de negócios relacionada à execução das estratégias de compra e venda.
Principais responsabilidades:
- Verificar se o preço atual permite uma compra conforme critérios de valorização.
- Verificar se o preço atual permite uma venda com lucro conforme critérios definidos.
- Registrar operações no banco de dados.
Funções principais:
check_buy_opportunity(current_price: float)- Verifica se há uma oportunidade de compra com base na valorização do fundo do canal.
- Calcula o percentual de valorização desde o fundo e compara com o limite configurado.
- Em caso positivo, executa a compra e registra no banco.
check_sell_opportunity(current_price: float)- Verifica se há uma posição aberta e se o preço atual permite uma venda com lucro.
- Considera o preço de compra, taxas, lucro mínimo e desvalorização relativa ao topo.
- Em caso positivo, executa a venda e atualiza o status no banco.
register_buy(price: float, quantidade: float)- Insere uma nova entrada de operação com status 'Aberta'.
register_sell(price: float)- Atualiza a operação atual com status 'Encerrada' e registra os detalhes da venda.
Dependências:
databasepara persistênciaconfigpara parâmetros da estratégiamodelspara manipulação dos dados
Observação:
Este serviço é chamado continuamente com base nas atualizações do WebSocket e atua como executor das decisões operacionais do sistema. após valorização de X% do fundo
- Programa venda com lucro mínimo após desvalorização Y% do topo
- Nunca vende com prejuízo (regra essencial)
binance_ws_client.py
- Conecta ao WebSocket da Binance
- Recebe dados em tempo real para o par configurado (ex: BTC/USDT)
- Atualiza o preço atual para a estratégia
websocket_manager.py
- Controla o estado de execução do WebSocket
- Evita múltiplas conexões simultâneas
🔁 Fluxo de Execução
- Operador inicia o sistema via
/start - WebSocket é conectado
- Sistema monitora o preço atual e identifica valorização X% sobre fundo
- Realiza compra e registra no banco
- Monitora se ocorre queda Y% a partir do topo com lucro
- Realiza venda programada com lucro
🧠 Integração com Estratégia
- Canal de preço: limite inferior e superior são respeitados
- Compra após valorização: evita lateralizações e quedas contínuas
- Venda após desvalorização: só com lucro (nunca vende com prejuízo)
- Capital alocado: 20% da banca
- Lucros não reinvestidos automaticamente
🔍 Avaliação da Implementação da Estratégia
Com base na lógica documentada e na análise do código atual no arquivo trade_service.py, identificamos os seguintes pontos em relação à estratégia definida:
🎯 Estratégia Definida
- Monitorar cotações em tempo real
- Comprar quando houver valorização de 2% a partir do fundo do canal
- Vender com lucro quando houver desvalorização de 2% a partir do teto do canal, desde que haja lucro mínimo de 0,5%
- Rompimento para baixo: programar venda com 0,5% de lucro sobre o preço de compra
- Nunca realizar venda com prejuízo
- Toda compra deve resultar em uma venda programada, mesmo em rompimento
✍️ Recomendação
Esses pontos devem ser descritos como tarefas de backlog no desenvolvimento e incluídos na documentação da estratégia, garantindo que o comportamento automatizado esteja alinhado com a lógica de controle de risco e capital planejada.
📌 Próximos Passos
- Implementar controle visual de posições abertas/vendidas
- Adicionar testes automatizados
- Documentar melhor os logs e falhas de operação
- Possibilitar uso com múltiplos pares e múltiplas estratégias