← Todos os projetos

Estudo de caso · Produto próprio · 2017–atual

Cryptom

Um bot de trading automatizado que só opera dentro de zonas de suporte e resistência — e um dashboard ao vivo que mostra ao usuário exatamente o que o bot vê.

Papel
Fundador e engenheiro
Status
No ar · planos Free e Pro
Exchange
Binance
Hospedagem
Google Cloud · Fly.io · servidor em casa
Links
cryptom.darma.page ↗
Home do Cryptom: “Trades the zones. Not the noise.” ao lado de um gráfico de candles com zonas de suporte e resistência
O site público em cryptom.darma.page

12mercados USDT

6timeframes, de 1m a 1w

~78Mcandles (12 × ~6,5M)

150M+linhas com os moments calculados

A ideia

Operar a cada cruzamento de indicador é operar ruído. O Cryptom calcula os indicadores a cada candle fechado, mas só age quando o preço está dentro de uma zona de suporte ou resistência — uma posição por nível, fechada no alvo de lucro.

Os usuários acompanham num dashboard ao vivo os mesmos candles e indicadores que o bot lê. O plano gratuito é o dashboard; o Pro deixa o bot operar na própria conta Binance do usuário.

Como funciona

  1. 01 · Coleta

    Os candles chegam pelos WebSockets da Binance para 12 mercados USDT em 6 timeframes, de 1 minuto a semanal.

    Node.js · WebSockets
  2. 02 · Cálculo

    SMA, EMA, MACD, RSI e desvio padrão são recalculados a cada fechamento de candle, em todos os mercados e timeframes.

    Workers em TypeScript
  3. 03 · Repasse e armazenamento

    Um broker feito para o Cryptom repassa mensagens e resultados de cálculo entre os serviços via WebSocket. Workers de persistência guardam o histórico em PostgreSQL, MongoDB e SQLite, e o Redis guarda o estado de que alguns serviços precisam para se recuperar depois de um restart.

    Broker WebSocket · PostgreSQL · MongoDB · SQLite · Redis
  4. 04 · Operação

    Quando os indicadores se alinham dentro de uma zona, o serviço de trade abre uma posição por nível e a fecha no alvo de lucro.

    API da Binance
  5. 05 · Relatório

    Ordens, saldos e sinais chegam ao dashboard do usuário em tempo real. Contas, configurações e operações ficam no PocketBase.

    PocketBase · WebSockets

Problemas difíceis

Histórico rápido

Cada um dos 12 pares tem ~6,5M candles, e os moments calculados dobram esse volume — sem contar labels, trendlines e rules. Depois de várias rodadas de mudanças de índices, o particionamento de tabelas resolveu tanto a performance das queries quanto a retenção do histórico.

De stored procedures a serviços

A primeira versão, em 2017, rodava toda em MySQL, com a lógica em triggers e stored procedures. Hoje essa lógica vive em serviços Node.js e TypeScript, cada um no seu container Docker.

Um broker feito para o problema

Indicadores, moments, labels, trendlines e rules são calculados em paralelo em 72 combinações de mercado e timeframe. Os serviços trocam essas mensagens e resultados via WebSocket através de um broker escrito para o Cryptom, e o Redis guarda o estado que permite a um serviço continuar de onde parou depois de um restart.

Seguro por padrão

O bot pede chaves da Binance só com permissão de trade e saque desativado, começa em modo de teste, e o trading automático fica desligado até o usuário ligar.

Testar estratégias antes de operar

Um simulador reproduz todos os pares desde 2021, então as estratégias de compra e venda são comparadas no histórico antes de tocar uma conta real.

Três lugares para rodar

Os serviços são publicados como imagens Docker e rodam no Google Cloud, no Fly.io e num servidor em casa exposto via Cloudflare Tunnel, sem abrir portas na rede de casa.

Stack

Node.js, TypeScript, WebSockets da Binance, um broker WebSocket próprio, Redis, PostgreSQL, MongoDB, SQLite, PocketBase, Docker, Google Cloud, Fly.io, Cloudflare Tunnel

Construindo algo em tempo real? Vamos conversar.