Versão: 0.0.2 Data: 05/11/2025 Autor: Lucas Galvão Status: 🔨 Em Desenvolvimento
- Visão Geral
- Objetivos do Projeto
- Especificações Técnicas
- Arquitetura do Sistema
- Estratégias de Trading
- Gestão de Risco
- Stack Tecnológica
- Roadmap de Desenvolvimento
- Glossário Técnico
O Jason Bot Trader é um bot de trading automatizado focado em day trading de tokens de alta volatilidade no SushiSwap V3, operando em redes com baixo custo de gas (Arbitrum, Base, Polygon).
- ✅ Multi-Estratégia Dinâmica: Grid Trading + Momentum Trading (bot escolhe automaticamente)
- ✅ Gestão de Risco Avançada: Stop-loss trailing, take-profit em níveis, circuit breaker 3 níveis
- ✅ Dashboard Web em Tempo Real: Interface moderna e intuitiva
- ✅ Backtesting Completo: Testa estratégias com dados históricos antes de operar
- ✅ Análise Semanal Automatizada: Script para gerar whitelist/blacklist de tokens
- ✅ Gas Otimizado: Cálculo dinâmico, cancela trades quando gas está alto
- ✅ Operação Segura: Testnet primeiro, depois mainnet com capital controlado
- Capital Inicial: Começar com $30-50 USD
- Crescimento Sustentável: Foco em ganhos consistentes, não em lucros rápidos
- Baixo Risco: Operar apenas em tokens com liquidez mínima comprovada
- Automação: Minimizar intervenção manual (apenas ligar/desligar bot)
- Simplicidade: Código modular, fácil de manter e expandir
- Performance: Polling eficiente (15 segundos), baixo uso de recursos
- Observabilidade: Logs estruturados, métricas claras, relatórios detalhados
- Segurança: Testes extensivos em testnet, validação de trades, proteção contra perdas
| Rede | Chain ID | Testnet | Mainnet | RPC Provider | Gas Médio |
|---|---|---|---|---|---|
| Arbitrum | 42161 | Sepolia | Arbitrum One | Infura / Alchemy | ~0.0001 ETH |
| Base | 8453 | Sepolia | Base | Infura / Alchemy | ~0.0001 ETH |
| Polygon | 137 | Mumbai | Polygon PoS | Infura / Alchemy | ~0.001 MATIC |
| Parâmetro | Valor | Justificativa |
|---|---|---|
| Capital Inicial | $30-50 USD | Baixo risco para testes iniciais |
| % Capital por Trade | Máx. 10% | Diversificação de risco |
| Stop-Loss Trailing | -3% a -5% | Protege capital, ajustável por volatilidade |
| Take-Profit Níveis | 25% @ +10%, 50% @ +20%, 25% @ +30% | Realiza lucro gradualmente |
| Drawdown Máximo | -15% | Circuit breaker em 3 níveis |
| Gas Máximo | 2% do valor do trade ou $0.001 ETH | Evita trades não lucrativos |
| Timeout de Ordem | 30 segundos | Cancela se demorar muito |
| Slippage Fixo | 0.5% | Controle de execução |
| Frequência Polling | 15 segundos | Balance entre performance e custo |
| Critério | Valor Mínimo | Objetivo |
|---|---|---|
| Liquidez (TVL) | $75,000 USD | Garantir execução de trades |
| Volume 24h | $25,000 USD | Garantir atividade de mercado |
| Volatilidade Diária | 5% | Oportunidades de day trading |
| Market Cap | Mín. $5,000,000 | Evitar tokens muito pequenos (rug pull) |
| Idade do Pool | Mín. 10 dias | Evitar pools recém-criados (scam) |
jasonbottrader3/
├── src/ # Código-fonte principal
│ ├── core/ # Núcleo do sistema
│ │ ├── bot.js # Orquestrador principal
│ │ ├── config.js # Gerenciador de configurações (.env)
│ │ └── events.js # Sistema de eventos (Event-Driven)
│ │
│ ├── blockchain/ # Interação com blockchain
│ │ ├── provider.js # Gestão de providers (multi-rede)
│ │ ├── wallet.js # Gestão de wallet/signer
│ │ ├── sushiswap.js # Interface SushiSwap (pools, quotes, swaps)
│ │ └── gas.js # Estimativa e otimização de gas
│ │
│ ├── strategies/ # Estratégias de trading
│ │ ├── base.js # Classe abstrata base
│ │ ├── grid-trading.js # Grid Trading (Estratégia A)
│ │ ├── momentum.js # Momentum Trading (Estratégia B)
│ │ └── manager.js # Gerenciador (escolhe estratégia dinamicamente)
│ │
│ ├── indicators/ # Indicadores técnicos
│ │ ├── rsi.js # Relative Strength Index
│ │ ├── macd.js # Moving Average Convergence Divergence
│ │ └── bollinger.js # Bollinger Bands
│ │
│ ├── risk/ # Gestão de risco
│ │ ├── position-manager.js # Controla tamanho de posição (10% max)
│ │ ├── stop-loss.js # Stop-loss trailing
│ │ ├── take-profit.js # Take-profit em níveis (25/50/25%)
│ │ └── drawdown.js # Circuit breaker (3 níveis: -5%, -10%, -15%)
│ │
│ ├── data/ # Coleta e persistência de dados
│ │ ├── collector.js # Coletor de dados de mercado (preços, volume, etc)
│ │ ├── storage.js # Persistência em JSON (ciclos)
│ │ └── historical.js # Dados históricos para backtesting
│ │
│ ├── analysis/ # Análise de mercado
│ │ ├── weekly-report.js # Gerador de relatório semanal
│ │ ├── token-scanner.js # Scanner de tokens (liquidez, volatilidade)
│ │ └── whitelist.js # Gestão de whitelist/blacklist
│ │
│ ├── execution/ # Execução de trades
│ │ ├── order.js # Lógica de ordens (buy/sell)
│ │ ├── executor.js # Executor de trades (timeout, retry, cancel)
│ │ └── slippage.js # Controle de slippage
│ │
│ ├── backtesting/ # Sistema de backtesting
│ │ ├── engine.js # Engine de backtesting
│ │ ├── metrics.js # Cálculo de métricas (Sharpe, Win Rate, etc)
│ │ └── simulator.js # Simulador de trades (sem blockchain)
│ │
│ └── reporting/ # Relatórios e logs
│ ├── logger.js # Logger estruturado (Winston)
│ ├── cycle-report.js # Relatório de ciclo (ligar → desligar)
│ └── metrics.js # Agregador de métricas
│
├── dashboard/ # Dashboard web (Next.js)
│ ├── src/
│ │ ├── app/
│ │ │ ├── page.tsx # Página principal
│ │ │ ├── layout.tsx # Layout global
│ │ │ ├── reports/ # Aba de relatórios
│ │ │ │ └── page.tsx # Lista de relatórios antigos
│ │ │ └── api/ # API Routes (comunicação com bot)
│ │ │ ├── status/ # GET - Status do bot
│ │ │ ├── start/ # POST - Iniciar bot
│ │ │ ├── stop/ # POST - Parar bot (gera relatório)
│ │ │ └── metrics/ # GET - Métricas em tempo real
│ │ │
│ │ ├── components/
│ │ │ ├── BotControl.tsx # Botão ligar/desligar
│ │ │ ├── PnLChart.tsx # Gráfico de P&L (Recharts)
│ │ │ ├── TradeHistory.tsx # Tabela de trades recentes
│ │ │ ├── Metrics.tsx # Cards de métricas (capital, drawdown, etc)
│ │ │ ├── RiskPanel.tsx # Painel de risco (drawdown, stop-loss ativo)
│ │ │ └── ReportsList.tsx # Lista de relatórios anteriores
│ │ │
│ │ └── lib/
│ │ └── api-client.ts # Cliente HTTP (axios + socket.io-client)
│ │
│ └── package.json
│
├── scripts/ # Scripts utilitários
│ ├── weekly-analysis.js # Análise semanal (rodar manualmente 1x/semana)
│ ├── deploy.js # Deploy do bot
│ ├── migrate-testnet.js # Helpers para migrar testnet → mainnet
│ └── setup-env.js # Setup inicial de .env
│
├── data/ # Dados persistidos (gitignored)
│ ├── cycles/ # Um JSON por ciclo
│ │ ├── cycle-2025-11-05-001.json
│ │ └── cycle-2025-11-05-002.json
│ ├── market/ # Dados de mercado coletados (histórico)
│ │ ├── arbitrum/
│ │ ├── base/
│ │ └── polygon/
│ └── reports/ # Relatórios semanais
│ ├── weekly-2025-W45.json
│ └── weekly-2025-W45.html
│
├── tests/ # Testes automatizados
│ ├── unit/ # Testes unitários (Jest)
│ ├── integration/ # Testes de integração (Supertest)
│ └── e2e/ # Testes E2E do dashboard (Playwright)
│
├── docs/ # Documentação
│ ├── 1. regras-de-desenvolvimento.md
│ ├── 2. projeto-arquitetura.md # (este arquivo)
│ ├── 3. estrategias.md # Detalhes das estratégias
│ ├── 4. api-dashboard.md # API do dashboard
│ └── 5. guia-deploy.md # Guia de deploy
│
├── .env.example # Template de .env
├── .env # Configurações locais (gitignored)
├── .gitignore
├── package.json # Dependências do bot
├── README.md
├── CHANGELOG.md
└── jest.config.js # Configuração de testes
┌─────────────────────────────────────────────────────────────┐
│ Dashboard Web │
│ (Next.js - http://localhost:3000) │
└───────────────────────┬─────────────────────────────────────┘
│
│ REST API + WebSocket (Socket.io)
│
┌───────────────────────▼─────────────────────────────────────┐
│ Bot Core (Node.js) │
│ (Express API: :4000) │
│ │
│ ┌──────────────────────────────────────────────────────┐ │
│ │ Event Bus (EventEmitter) │ │
│ └───┬──────────┬──────────┬──────────┬──────────┬──────┘ │
│ │ │ │ │ │ │
│ ┌───▼───┐ ┌──▼───┐ ┌───▼────┐ ┌──▼─────┐ ┌▼──────┐ │
│ │ Data │ │Strat.│ │ Risk │ │ Exec │ │Report │ │
│ │Collect│ │Mgr │ │Manager │ │Engine │ │ Gen │ │
│ └───┬───┘ └──┬───┘ └───┬────┘ └──┬─────┘ └┬──────┘ │
│ │ │ │ │ │ │
│ └─────────┴──────────┴───────────┴──────────┘ │
└───────────────────────────┬─────────────────────────────────┘
│
│ ethers.js + SushiSwap SDK
│
┌───────────────────────────▼─────────────────────────────────┐
│ SushiSwap V3 (Blockchain) │
│ Arbitrum | Base | Polygon (Testnet → Mainnet) │
└─────────────────────────────────────────────────────────────┘
// src/core/events.js
const EventEmitter = require('events');
const botEvents = new EventEmitter();
// Eventos emitidos:
// - bot.started
// - bot.stopped
// - bot.error
// - market.data.collected (dados novos de preço)
// - strategy.selected (estratégia escolhida para ciclo)
// - trade.signal (sinal de compra/venda)
// - trade.executed (trade executado com sucesso)
// - trade.failed (trade falhou)
// - risk.stop_loss_triggered
// - risk.take_profit_triggered
// - risk.drawdown.level1 (-5%)
// - risk.drawdown.level2 (-10%)
// - risk.drawdown.level3 (-15%)
// - report.generated (relatório de ciclo gerado)Descrição: Coloca ordens de compra/venda em níveis fixos (grid), aproveitando movimentos laterais do mercado.
Quando usar:
- Mercado em consolidação (sem tendência clara)
- Token com volatilidade moderada (5-15% ao dia)
- Alta liquidez (baixo slippage)
Parâmetros:
{
type: 'grid',
levels: 5, // 5 níveis de compra/venda
rangeMin: 0.95, // -5% do preço inicial
rangeMax: 1.10, // +10% do preço inicial
amountPerLevel: 0.02, // 2% do capital por nível
rebalanceInterval: 300 // Rebalancear a cada 5 minutos
}Exemplo Visual:
Preço Inicial: $100
Nível 5 (Venda): $110 ← Vende 2% do capital
Nível 4 (Venda): $107.5
Nível 3 (Neutro): $102.5
Nível 2 (Compra): $97.5
Nível 1 (Compra): $95 ← Compra 2% do capital
Vantagens:
- ✅ Funciona bem em mercados laterais
- ✅ Lucros consistentes com pequenas variações
- ✅ Fácil de entender e debugar
Desvantagens:
- ❌ Perde eficiência em tendências fortes
- ❌ Pode acumular posição perdedora se preço cai continuamente
Descrição: Identifica movimentos fortes de preço e volume, entrando na direção da tendência.
Quando usar:
- Mercado em tendência forte (alta ou baixa)
- Token com alta volatilidade (>15% ao dia)
- Volume acima da média
Parâmetros:
{
type: 'momentum',
entryThreshold: 0.05, // Entra quando preço sobe 5% em 5min
exitThreshold: 0.03, // Sai quando preço cai 3% do pico
volumeMultiplier: 2, // Volume deve ser 2x a média
lookbackPeriod: 20, // Analisa últimos 20 candles (5min cada)
rsiEntry: 30, // Só entra se RSI < 30 (sobrevendido)
rsiExit: 70 // Sai se RSI > 70 (sobrecomprado)
}Indicadores Utilizados:
- RSI (14): Identifica sobrecompra/sobrevenda
- Volume: Confirma força do movimento
- Taxa de variação: % de mudança de preço em X minutos
Exemplo de Trade:
T0: Preço $100, Volume 10k, RSI 28 → Sinal de compra!
T1: Preço $105 (+5%) → COMPRA executada
T2: Preço $110 (+10%) → RSI 72 → VENDA executada
Lucro: +10% (menos gas e slippage)
Vantagens:
- ✅ Captura grandes movimentos rapidamente
- ✅ Usa indicadores técnicos comprovados
- ✅ Proteção com RSI (evita entrar em topo)
Desvantagens:
- ❌ Pode gerar falsos sinais em mercado lateral
- ❌ Exige monitoramento mais frequente
O bot escolhe automaticamente entre Estratégia A e B baseado nas condições do mercado:
// src/strategies/manager.js
function selectStrategy(marketData) {
const volatility = calculateVolatility(marketData.prices, 20);
const volumeRatio = marketData.volume24h / marketData.avgVolume;
const trend = detectTrend(marketData.prices);
// Critérios de decisão:
if (volatility > 0.15 && volumeRatio > 1.5 && trend !== 'sideways') {
return 'momentum'; // Mercado volátil e com tendência
} else {
return 'grid'; // Mercado lateral ou baixa volatilidade
}
}// src/risk/position-manager.js
const MAX_POSITION_PERCENT = 0.10; // 10% do capital
function calculatePositionSize(capital, strategy) {
const baseAmount = capital * MAX_POSITION_PERCENT;
// Ajusta conforme volatilidade:
// - Alta volatilidade → reduz posição
// - Baixa volatilidade → mantém posição
const volatilityAdjustment = Math.max(0.5, 1 - (volatility / 0.5));
return baseAmount * volatilityAdjustment;
}Descrição: Stop-loss que se move junto com o preço, protegendo lucro.
// src/risk/stop-loss.js
class TrailingStopLoss {
constructor(entryPrice, trailingPercent = 0.03) {
this.entryPrice = entryPrice;
this.trailingPercent = trailingPercent; // 3%
this.highestPrice = entryPrice;
this.stopPrice = entryPrice * (1 - trailingPercent);
}
update(currentPrice) {
if (currentPrice > this.highestPrice) {
this.highestPrice = currentPrice;
this.stopPrice = currentPrice * (1 - this.trailingPercent);
}
return currentPrice <= this.stopPrice; // true = triggered
}
}Exemplo:
Compra: $100
Stop inicial: $97 (-3%)
Preço sobe pra $110
Stop sobe pra $106.70 (-3% de $110)
Preço cai pra $106.70
→ Stop-loss triggered! VENDE automaticamente
Lucro: +6.7% (protegeu parte do lucro)
Descrição: Realiza lucro gradualmente em 3 níveis, reduzindo arrependimento.
// src/risk/take-profit.js
const TAKE_PROFIT_LEVELS = [
{ percent: 0.10, amount: 0.25 }, // +10% → vende 25%
{ percent: 0.20, amount: 0.50 }, // +20% → vende 50%
{ percent: 0.30, amount: 0.25 } // +30% → vende 25% restante
];Exemplo:
Comprou 1000 tokens a $1.00 (investimento: $1000)
Nível 1: Preço $1.10 (+10%)
→ Vende 250 tokens (25%) por $275
→ Restam 750 tokens, realizou $25 de lucro
Nível 2: Preço $1.20 (+20%)
→ Vende 500 tokens (50% do restante) por $600
→ Restam 250 tokens, realizou $125 de lucro acumulado
Nível 3: Preço $1.30 (+30%)
→ Vende 250 tokens (100% restante) por $325
→ Zerou posição, lucro total: $200 (+20% efetivo)
Descrição: Para o bot automaticamente se perdas acumularem.
// src/risk/drawdown.js
const DRAWDOWN_LEVELS = [
{
percent: -0.05,
action: 'pause',
duration: 1800, // 30 min
message: 'Drawdown -5%: Pausando e trocando para estratégia conservadora'
},
{
percent: -0.10,
action: 'pause_and_reset',
duration: 7200, // 2h
message: 'Drawdown -10%: Pausando 2h e resetando parâmetros'
},
{
percent: -0.15,
action: 'stop',
duration: null, // Indefinido
message: 'Drawdown -15%: Bot parado! Intervenção manual necessária.'
}
];Comportamento:
- Nível 1 (-5%): Pausa 30 min, troca pra estratégia grid (mais conservadora)
- Nível 2 (-10%): Pausa 2h, reseta parâmetros (reduz % por trade, aumenta stop-loss)
- Nível 3 (-15%): Para completamente, envia alerta, espera intervenção manual
| Dependência | Versão | Motivo da Escolha |
|---|---|---|
| Node.js | 18.19.0 LTS | Versão LTS estável, suporte até 2025 |
| ethers | 6.7.1 | Mesma versão dos examples, estável |
| sushi | 3.0.5 | SDK oficial do SushiSwap, usado nos examples |
| graphql-request | 6.1.0 | Mesma versão dos examples |
| dotenv | 16.3.1 | Versão estável, compatível |
| express | 4.18.2 | LTS, amplamente testado |
| socket.io | 4.6.2 | Versão estável, compatível com client |
| winston | 3.11.0 | Logger maduro e estável |
| technicalindicators | 3.1.0 | Biblioteca estável de indicadores |
| axios | 1.5.0 | Mesma versão dos examples |
| cors | 2.8.5 | Estável, necessário para dashboard |
package.json do Bot:
{
"name": "jasonbottrader3",
"version": "0.1.0",
"description": "Bot de trading automatizado para SushiSwap V3",
"main": "src/core/bot.js",
"scripts": {
"start": "node src/core/bot.js",
"dev": "node --watch src/core/bot.js",
"test": "jest",
"weekly": "node scripts/weekly-analysis.js",
"lint": "eslint src/ --fix"
},
"dependencies": {
"ethers": "6.7.1",
"sushi": "3.0.5",
"graphql-request": "6.1.0",
"dotenv": "16.3.1",
"express": "4.18.2",
"socket.io": "4.6.2",
"winston": "3.11.0",
"technicalindicators": "3.1.0",
"axios": "1.5.0",
"cors": "2.8.5"
},
"devDependencies": {
"jest": "29.7.0",
"eslint": "8.56.0",
"prettier": "3.1.1",
"supertest": "6.3.3"
}
}| Dependência | Versão | Motivo da Escolha |
|---|---|---|
| next | 14.2.4 | Mesma versão dos examples |
| react | 18.2.0 | Mesma versão dos examples |
| react-dom | 18.2.0 | Compatível com React 18.2.0 |
| typescript | 5.2.2 | Mesma versão dos examples |
| @types/node | 20.5.9 | Mesma versão dos examples |
| @types/react | 18.2.21 | Mesma versão dos examples |
| @types/react-dom | 18.2.7 | Mesma versão dos examples |
| tailwindcss | 3.4.1 | Versão estável, bem documentada |
| postcss | 8.4.33 | Necessário para TailwindCSS |
| autoprefixer | 10.4.17 | Necessário para TailwindCSS |
| recharts | 2.10.3 | Gráficos, compatível com React 18 |
| socket.io-client | 4.6.2 | Mesma versão do backend |
| axios | 1.5.0 | Mesma versão dos examples |
| zustand | 4.4.7 | State manager leve e estável |
| date-fns | 3.0.6 | Manipulação de datas, estável |
package.json do Dashboard:
{
"name": "jasonbottrader-dashboard",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
"dependencies": {
"next": "14.2.4",
"react": "18.2.0",
"react-dom": "18.2.0",
"typescript": "5.2.2",
"@types/node": "20.5.9",
"@types/react": "18.2.21",
"@types/react-dom": "18.2.7",
"tailwindcss": "3.4.1",
"postcss": "8.4.33",
"autoprefixer": "10.4.17",
"recharts": "2.10.3",
"socket.io-client": "4.6.2",
"axios": "1.5.0",
"zustand": "4.4.7",
"date-fns": "3.0.6"
},
"devDependencies": {
"eslint": "8.56.0",
"eslint-config-next": "14.2.4",
"prettier": "3.1.1",
"playwright": "1.40.1"
}
}| Ferramenta | Versão | Uso |
|---|---|---|
| Jest | 29.7.0 | Testes unitários |
| Supertest | 6.3.3 | Testes de API REST |
| Playwright | 1.40.1 | Testes E2E do dashboard |
| ESLint | 8.56.0 | Linting JavaScript/TypeScript |
| Prettier | 3.1.1 | Formatação de código |
| PM2 | 5.3.0 | Process manager (produção) |
Versão: 0.1.0 Objetivo: Base sólida, testnet funcional, coleta de dados real
| # | Task | Horas | Descrição |
|---|---|---|---|
| 1.1 | Estrutura de diretórios | 2h | Criar estrutura completa conforme arquitetura |
| 1.2 | Sistema de configuração | 3h | src/core/config.js - Validação de .env |
| 1.3 | Logger estruturado | 2h | src/reporting/logger.js - Winston com níveis |
| 1.4 | Provider blockchain | 4h | src/blockchain/provider.js - Multi-rede |
| 1.5 | Interface SushiSwap | 6h | src/blockchain/sushiswap.js - getPools, getPrice, swap |
| 1.6 | Coletor de dados REAL | 8h | Substituir placeholders por dados reais (Graph + CoinGecko + Defillama) |
| 1.7 | Estimativa de gas | 4h | src/blockchain/gas.js - Cálculo dinâmico |
| 1.8 | Storage JSON | 3h | src/data/storage.js - Salvar ciclos |
| 1.9 | Testes em testnet | 4h | Arbitrum Sepolia, fazer swaps reais |
| 1.10 | CI/CD GitHub Actions | 3h | Lint + testes básicos |
Critérios de Aceitação:
- ✅ Bot conecta em 3 redes (testnet)
- ✅ Coleta dados reais de preço/liquidez/volume
- ✅ Salva dados em JSON por ciclo
- ✅ Executa swap simples em testnet
- ✅ CI/CD rodando no GitHub
Versão: 0.2.0 Objetivo: Estratégias funcionais, gestão de risco completa
| # | Task | Horas | Descrição |
|---|---|---|---|
| 2.1 | Classe base de estratégia | 3h | src/strategies/base.js - Interface comum |
| 2.2 | Grid Trading | 8h | Implementar com níveis configuráveis |
| 2.3 | Momentum Trading | 8h | Implementar com RSI + volume |
| 2.4 | Indicadores técnicos | 6h | RSI, MACD, Bollinger Bands |
| 2.5 | Position Manager | 4h | Gestão de tamanho (10% max) |
| 2.6 | Stop-loss trailing | 6h | Trailing com % configurável |
| 2.7 | Take-profit níveis | 5h | Sistema 25/50/25% |
| 2.8 | Drawdown circuit breaker | 6h | 3 níveis com pausas |
| 2.9 | Executor de trades | 6h | Timeout 30s, cancel se gas alto |
| 2.10 | Integração estratégia + risco | 6h | Orquestração no bot.js |
| 2.11 | Testes unitários | 8h | Cobertura > 70% |
Critérios de Aceitação:
- ✅ Grid Trading funcional
- ✅ Momentum Trading funcional
- ✅ Bot escolhe estratégia dinamicamente
- ✅ Stop-loss trailing ativo
- ✅ Take-profit em níveis
- ✅ Circuit breaker testado (3 níveis)
- ✅ Testes unitários passando
Versão: 0.3.0 Objetivo: Sistema de backtesting, análise semanal funcional
| # | Task | Horas | Descrição |
|---|---|---|---|
| 3.1 | Engine de backtesting | 10h | Replay de dados históricos |
| 3.2 | Simulador de trades | 6h | Simular swaps sem blockchain |
| 3.3 | Métricas de performance | 6h | Win rate, Profit factor, Sharpe, Drawdown |
| 3.4 | Coleta dados históricos | 5h | 10 dias de dados (Graph + CoinGecko + Defillama) |
| 3.5 | Script análise semanal | 8h | scripts/weekly-analysis.js - Scanner |
| 3.6 | Sistema de scoring | 6h | Score 0-100 (liquidez, volume, volatilidade) |
| 3.7 | Whitelist/Blacklist | 4h | Gestão de listas |
| 3.8 | Relatório JSON + HTML | 5h | Gerar relatório visual |
| 3.9 | Backtesting de estratégias | 6h | Rodar 10 dias, validar |
| 3.10 | Documentação estratégias | 4h | docs/3. estrategias.md |
Critérios de Aceitação:
- ✅ Backtesting funcional com 10 dias de dados
- ✅ Script semanal gerando whitelist/blacklist
- ✅ Relatório com top 10 tokens + score
- ✅ Métricas de performance calculadas
- ✅ Documentação completa
Versão: 0.4.0 Objetivo: Dashboard bonito, funcional, tempo real
| # | Task | Horas | Descrição |
|---|---|---|---|
| 4.1 | Setup Next.js | 2h | Criar projeto dashboard/ |
| 4.2 | API interna do bot | 5h | Express API (porta 4000) |
| 4.3 | WebSocket tempo real | 6h | Socket.io (bot → dashboard) |
| 4.4 | Componente BotControl | 3h | Botão ligar/desligar + status |
| 4.5 | Gráfico P&L | 6h | Recharts - P&L ao longo do tempo |
| 4.6 | Trade History | 4h | Tabela últimos 20 trades |
| 4.7 | Cards de métricas | 4h | Capital, Drawdown, Win Rate, etc |
| 4.8 | Painel de risco | 4h | Indicador visual de drawdown |
| 4.9 | Tema futurista/moderno | 5h | TailwindCSS custom theme |
| 4.10 | Aba de relatórios | 4h | Lista relatórios antigos + download |
| 4.11 | Relatório de ciclo | 4h | Botão "Desligar e Gerar Relatório" |
| 4.12 | Responsivo | 5h | Adaptar para tablet/mobile |
| 4.13 | Testes E2E | 6h | Playwright - fluxo completo |
Critérios de Aceitação:
- ✅ Dashboard acessível em http://localhost:3000
- ✅ Ligar/desligar bot via interface
- ✅ Gráficos atualizando em tempo real
- ✅ Aba de relatórios funcionando
- ✅ Tema futurista aplicado
- ✅ Responsivo e intuitivo
Versão: 0.5.0 Objetivo: Bot pronto para mainnet, otimizações, segurança
| # | Task | Horas | Descrição |
|---|---|---|---|
| 5.1 | Otimização de gas | 5h | Calcular gas antes de cada trade |
| 5.2 | Cancelamento por gas alto | 6h | Cancela trade se gas > threshold |
| 5.3 | Dry-run mode | 4h | Modo simulação (não executa trades) |
| 5.4 | Logs estruturados | 4h | Winston com rotação de arquivos |
| 5.5 | Backup automático | 3h | Backup diário de data/ e reports/ |
| 5.6 | Migração testnet → mainnet | 4h | Script + checklist de segurança |
| 5.7 | Documentação completa | 6h | README, API docs, guia de deploy |
| 5.8 | Testes de carga | 4h | Simular 100 trades, estabilidade |
| 5.9 | Auditoria de segurança | 5h | Revisar código, .env, permissões |
| 5.10 | Setup PM2 (opcional) | 8h | Deploy em VPS, monitoramento |
Critérios de Aceitação:
- ✅ Bot pronto para mainnet
- ✅ Dry-run testado e documentado
- ✅ Documentação completa e clara
- ✅ Segurança auditada
- ✅ (Opcional) Rodando em VPS com PM2
| Sprint | Versão | Semanas | Horas | Entregável Principal |
|---|---|---|---|---|
| 0.1 | 0.1.0 | 1-2 | 39h | Fundação + Testnet |
| 0.2 | 0.2.0 | 3-5 | 66h | Estratégias + Risco |
| 0.3 | 0.3.0 | 6-7 | 60h | Backtesting + Análise |
| 0.4 | 0.4.0 | 8-10 | 54h | Dashboard Web |
| 0.5 | 0.5.0 | 11-12 | 49h | Otimização + Mainnet |
| Total | 12 semanas | 268h | Bot completo |
Estimativa: ~3 meses trabalhando part-time (20h/semana)
| Termo | Definição | Exemplo |
|---|---|---|
| Arbitragem | Lucrar com diferença de preço entre DEXs | Token $100 na DEX A, $105 na DEX B → lucro $5 |
| Backtesting | Testar estratégia com dados históricos | Rodar bot com dados de 30 dias atrás |
| Bollinger Bands | Indicador de volatilidade | Preço toca banda inferior → possível reversão |
| Circuit Breaker | Mecanismo que para operações ao atingir perda máxima | Perda -15% → para bot automaticamente |
| Drawdown | Queda percentual do capital desde pico | Capital era $100, agora $85 → drawdown -15% |
| Grid Trading | Ordens em níveis fixos (grade) | Compra $95, $90, $85 / Vende $105, $110, $115 |
| Liquidez (TVL) | Total Value Locked no pool | Pool WETH/USDC tem $500k de liquidez |
| MACD | Indicador de momentum | Linha MACD cruza Signal → sinal de compra |
| Momentum | Força de movimento de preço | Preço subiu 10% em 5min → momentum forte |
| P&L (Profit & Loss) | Lucro e prejuízo acumulado | Entrou com $100, agora $115 → P&L +$15 |
| Position Sizing | Tamanho da posição por trade | Capital $1000, max 10% → $100 por trade |
| Profit Factor | Lucro total / perda total | Ganhou $300, perdeu $100 → PF = 3.0 |
| RSI | Relative Strength Index (sobrecompra/venda) | RSI > 70 → sobrecomprado, RSI < 30 → sobrevendido |
| Scalping | Trades rápidos com lucros pequenos | Compra $100, vende $100.50 em 30 segundos |
| Sharpe Ratio | Retorno ajustado ao risco | Sharpe > 1.0 = bom, > 2.0 = excelente |
| Slippage | Diferença entre preço esperado e real | Esperava $100, executou $101 → 1% slippage |
| Stop-Loss | Ordem que vende quando preço cai X% | Comprou $100, stop $95 → vende se cair pra $95 |
| Stop-Loss Trailing | Stop que se move com o preço | Preço $100→$110, stop $97→$107 |
| Swing Trading | Trades de médio prazo (horas a dias) | Compra de manhã, vende à noite |
| Take-Profit | Ordem que vende quando atinge lucro | Comprou $100, take-profit $110 → vende ao atingir |
| Volatilidade | Variação de preço em período | Token varia 20% ao dia → alta volatilidade |
| Volume | Quantidade negociada em 24h | Volume $50k/dia → liquidez razoável |
| Win Rate | % de trades lucrativos | 10 trades, 7 lucrativos → win rate 70% |
| Termo | Definição |
|---|---|
| Chain ID | Identificador único da rede (42161 = Arbitrum) |
| DEX | Decentralized Exchange (troca descentralizada) |
| Gas | Taxa paga para executar transações |
| Gwei | Unidade de medida de gas (1 ETH = 1 bilhão Gwei) |
| Mainnet | Rede principal com dinheiro real |
| Pool | Contrato que contém pares de tokens para swap |
| RPC | Remote Procedure Call (endpoint para acessar blockchain) |
| Signer | Wallet que assina transações |
| Testnet | Rede de testes com dinheiro fake |
| TVL | Total Value Locked (liquidez do pool) |
| Wallet | Endereço Ethereum (ex: 0x123...) |
- Capital Inicial: $30-50 USD (testnet → mainnet)
- Risco Aceitável: Até -15% de drawdown
- Tempo de Desenvolvimento: 3 meses part-time
- Operação: Manual (ligar/desligar), bot decide estratégias
- Foco: Day trading, tokens voláteis, SushiSwap apenas
- 🔮 v1.1: WebSocket ao invés de polling (performance)
- 🔮 v1.2: Múltiplas wallets (sistema de barragem de risco)
- 🔮 v1.3: Suporte a outras DEXs (Uniswap, Curve)
- 🔮 v1.4: MEV protection (Flashbots)
- 🔮 v1.5: Machine Learning para prever movimentos
- Repositório: https://github.com/lglucas/jasonbottrader3
- Issues: Reportar bugs e sugestões via GitHub Issues
- Documentação: Pasta
docs/no repositório
Última Atualização: 05/11/2025 Autor: Lucas Galvão Licença: MIT